trail

The flight recorder for agent runs.

A durable, multi-writer, append-only run log that is just a URL. Write with curl, read from anywhere, still there tomorrow.

$ curl -d "migration started" https://trail.legible.sh/swift-otter-9921
{"seq":1}
# that URL is now a live journal page, a text log, and a permalink
trail.legible.sh/swift-otter-9921live

NOT A TERMINAL MIRROR

Screen mirrors show you one terminal, while it lasts, if you dare share it. trail is the other thing — the paper trail. It records what happened, from any number of writers, at a URL you can hand to anyone.

Multi-writerFive workers on three machines, one topic, one interleaved story. Actor labels keep the plot straight.
DurableThe journal outlives the run. Paste the URL in the PR; it still means something in next week's postmortem.
Zero ceremonyNo account, no SDK, no dashboard. The first write creates the topic. An agent can mint a new journal by imagining a name.
Phone-readableThe same URL is a dark, monospace, auto-following live page. Watch your Claude Code session from the couch.

THE WHOLE API

requestwhat it does
POST /{topic}append log line(s) — one entry per line; headers X-Level: info|warn|error|done, X-Actor: worker-3
GET /{topic}the journal: live HTML page in a browser, plain text from curl, JSON via Accept?n=100 ?since=SEQ ?wait=30
GET /{topic}.txtalways plain text, for piping
GET /{topic}.jsonalways JSON: {entries: [{seq, at, actor, level, text}]}
GET /{topic}/sselive SSE stream; ?since=0 replays the backlog first
DELETE /{topic}delete the journal

RUN IT YOURSELF

# the same API on localhost, zero dependencies
npx trail-sh serve --data-dir ./trail-data

# the CLI is sugar over the same HTTP
trail pipe deploy-7 -- npm test     # tee a command's output into the journal
trail tail deploy-7                 # follow it live from another machine

TEACH YOUR AGENT

The full API fits in a dozen lines of a system prompt. Your agent gets it right on the first try — that is the entire design discipline.

curl -d "build started" https://trail.legible.sh/TOPIC
curl -d "tests red" -H "X-Level: error" -H "X-Actor: ci" https://trail.legible.sh/TOPIC
curl https://trail.legible.sh/TOPIC.txt?n=100
curl -N https://trail.legible.sh/TOPIC/sse?since=0