Platform-agnostic · Apache-2.0 · local-first

The open-source data layer for AI coding sessions

OpenStory turns every session into a shared, searchable, real-time data stream — so your team can see what developers and their agents are actually doing, the moment it happens.

live · event streamlocalhost:3002
one turn → one sentence
CloudEvents 1.0
open event spec
21h · $212
session that built this, narrated from its own data
4 consumers
independent, non-blocking actors
Apache-2.0
fully open source
One data layer, two products

Start local. Share when you choose to.

The same open stream powers a private retrospective for one engineer and a live, consent-scoped feed for a whole team.

Runs on your machine

OpenStory Local

An engineering retrospective for one

Point it at your own sessions and they become a mirror of how you actually work — your collaboration style, what you investigate versus ship, how your thinking drifts over time. None of it lives in git history.

  • Local-first — SQLite + JSONL on your disk
  • Every turn narrated as a plain-English sentence
  • Search and replay your entire history
  • Private by default — nothing leaves the laptop
Shared in real time

OpenStory Stream

Beta

Fleet observability for a team

Subscribe to teammates' sessions, consent-scoped, and watch work happen live across machines, networks, and time zones. Auto-generated reports on a cadence replace standups and 1:1 status pings.

  • Subscribe to teammates, consent-scoped
  • Live across machines & networks in ~40ms
  • Auto markdown reports replace standups
  • Leaders see the real agentic SDLC
Device sync · the data path

You and your fleet of devices

Your laptop, an OpenClaw box, a Hermes agent — every device you run streams into one private place. Sync your own fleet first; uniting fleets across a team comes next.

Claude CodeOpenClawHermespi-monoany agent, any device
Your fleetClaude Code, OpenClaw, Hermes, pi-mono
NATS JetStreamone durable stream for every device
You, anywhereevery device in sync, in real time
How it works

Four pieces. Nothing magic.

A read-only watcher turns raw agent transcripts into a durable, replayable event stream — then four independent consumers each do one job.

01

Agent works

Your coding agent writes JSONL transcripts as it runs — Claude Code, pi-mono, Hermes.

02

Watch & translate

A read-only watcher detects the format and translates each line into CloudEvents 1.0.

03

Stream over NATS

Events flow through NATS JetStream — durable, replayable, hierarchically addressed.

04

Four consumers

Persist, patterns, projections, and broadcast each own one job and never block each other.

events.{project}.{session}.agent.{agent_id}

NATS subjects encode the agent hierarchy — so subagent delegation is structural, not guessed.

Three lenses, one stream

Every session, three ways to see it

The same CloudEvents, projected into the view you need — from the live firehose to a single readable sentence.

Live

Watch every move as it happens

A real-time event stream of every tool call, file read, command, and model response — the moment your agent does it. The session sidebar tracks active sessions with token usage, depth sparklines, and the full subagent hierarchy.

Live — recording of a real session

Story

Each turn becomes a sentence

Every completed turn is parsed into one English sentence — subject, verb, what it read, what it ran, and why. Click a card and the full eval-apply trace unfolds: the input, the tool applications, and the model's final answer.

Story — recording of a real session

Explore

Search across every session

Full-text search and filtering across your entire history. Compare sessions, jump to any event, and reconstruct exactly what happened — backed by FTS5 and durable, replayable storage.

Explore view
OpenStory Explore view
Proof of architecture

Backed by working code and real data

Not mockups. Every claim below is measured from sessions OpenStory recorded about its own work.

01Local

Engineering retrospective for an individual

Turn an engineer's sessions into a mirror of how they actually work — collaboration style, vocabulary drift, what they investigate versus ship. None of it visible in git history.

Evidence

86 days of one engineer's sessions produced a working portrait: they treat the model as a collaborator (2.7× more dialogic than imperative), they read 6× more than they write, and a single concept took 56 days to mature.

02Stream

Fleet observability for a team lead

Subscribe to teammates' sessions, consent-scoped. Get auto-generated markdown reports on a 30-minute cadence. Replaces standups and 1:1 status pings.

Evidence

A subscriber on one laptop watched a different agent on a different machine, across a different network, in real time for 90+ minutes. Notifications arrive in ~40ms.

03Platform

Provenance & cost attribution per prompt

Every file that gets created traces back to the exact prompt that asked for it. Every prompt has a measured token cost. Deterministic, auditable, billable.

Evidence

A single prompt produced 16 new files at 40,794 output tokens — the lineage is provable end-to-end. Two reflective queries cost $0.12 exactly, verified to the penny against the model's own cost record.

Case study · run on its maker

What 156 sessions say about how one engineer works

No mockups. We pointed OpenStory at 1,180 of its own maker's prompts — proof case 01, for real. Here is the working portrait it produced.

1,180
prompts analyzed
156
sessions, one engineer
57%
questions, not commands
11
median words per prompt

The data describes a collaborative pair-programmer, not a commander: more questions than orders, “we” a quarter of the time, and a median prompt of just eleven words — quick, trusting nudges instead of long specs.

How you ask

Dialogic — asks rather than orders57%
Collaborative — “we / us / our”25%
Warm — a “:)” in the prompt14%
Softeners — “lil / just / quick / plz”10%

What you talk about

OpenStory & sessions25%
Git · merge · ship9%
Tests & “is it green?”9%
People · fleet · team8%
Plans & design7%
real prompts · from the datacollaborative

send

Top things you ask for

makeseecheckaddplancreatelookunderstandwritefix
Sovereignty

A mirror, not a leash

We're building open-source on purpose. People and companies want sovereignty over the story of their work.

Observe, never interfere

Zero write operations on watched paths. OpenStory reads transcripts; it never edits, blocks, or talks back. A mirror, not a leash.

Your data, open formats

Every event is appended to plain JSONL on disk in CloudEvents 1.0 — grep-able from outside the database, useful without this tool, impossible to lock in.

Local-first by default

Nothing leaves your machine. SQLite out of the box, MongoDB when you need scale, the same data either way.

Recursive observability

OpenStory produces legible sentences for its own sessions. It was built by pointing it at itself — and the proof is in the repo.

OpenStory observing its own session — recursive observability
OpenStory pointed at itself — a 21-hour, $212, 4,001-event session, narrated entirely from the data it collected about its own work.
Get started

Up and running in one command

Local-first by default. Pick your path — your data never leaves your machine.

homebrew
$brew tap OpenStoryArc/openstory
$brew install openstory
$open-story init --data-dir "$(brew --prefix)/var/openstory"
$brew services start openstory # auto-start at login

Opens at http://localhost:3002

Own the story of your work

Open source, platform-agnostic, and local-first. See what developers and their agents are actually doing — and keep the data.