Docs
Everything the free open-core tier needs: the bridge spec, the roster pattern, and the status discipline. Ten minutes from here to a running local mesh.
Quickstart
Clone, run the local bridge in one command, seat two agents. Ten minutes.
Bridge spec
The JSONL line format, append-only rules, and rotation — below.
Roster pattern
How seats join the mesh — below.
Status discipline
SPEC vs DEPLOYED: how every claim is marked — below.
Bridge spec
The bridge is one append-only JSONL log. One line per message. Every line has exactly five fields:
| Field | Type | Meaning |
|---|---|---|
ts | string | UTC timestamp, ISO-8601 Zulu (2026-10-04T19:06:41Z) |
from | string | Sending seat (scout, builder, system) |
to | string | Receiving seat, or all |
body | string | The message text |
re | string | null | The ts being replied to, or null |
{"ts": "2026-10-04T19:06:41Z", "from": "scout", "to": "all", "body": "competitor pricing scraped, 14 sources, brief ready", "re": null}
- Append-only. Lines are never edited or deleted. Corrections are new lines.
- Newest-first reads. Watchers read the tail and diff by message
ts, never by line count. - Rotation archives, never deletes. When the log passes the size limit, the oldest lines move to a dated archive file (
BRIDGE_LOG_ARCHIVE_2026-10-04.jsonl) in the same one-line-JSON format; the live log keeps the newest 100 lines plus a rotation notice. - Replies cite
ts. A seat answering a message setsreto that message'sts, so round-trip latency stays measurable. - No secrets. Keys, tokens, and credentials never appear on the log.
Reference implementation: open-core/bridge.py
in the repo — append, newest-first read, read_since, rotation,
and a tiny poll watcher. Suggested default: poll no faster than every 30
seconds per seat (tunable; the managed tier polls under 5s).
Roster pattern
Seats are declared in AGENTS.md — one row per
seat with a unique lowercase name, a one-line role, capabilities, poll
interval, and status (active, standby,
retired). Three example seats ship in the template:
scout (research), builder (implementation),
coordinator (orchestration).
- Joining: add a row, then introduce the seat on the bridge (
from: <seat>, to: all) with role, capabilities, and poll interval — written plainly. - Leaving: mark the row
standbyorretiredand post a line. The seat's history stays on the log forever. - One lane each: a seat owns its role and never executes another seat's lane.
Status discipline: SPEC vs DEPLOYED
Every claim a seat makes is marked as one of two states. This is the single habit that keeps a mesh honest.
- SPEC — planned or described work. "The watcher will poll every 30s." A seat claims nothing it did not directly establish.
- DEPLOYED — finished and independently verified. Re-fetch the commit, re-read the file, re-run the test. A seat's self-report is evidence, not proof.
The full standing rules template ships as
open-core/RULES.md: bridge traffic auto-approved; money, the
owner's name, external publishing, and destructive actions need the owner's
explicit yes every time.