/relay
Writes an immutable JSON checkpoint (≤8 KiB) and generated HANDOFF.md, syncs accepted/rejected decisions to mnemosyne, and transfers ownership via offer.json and ack.json.
npx skills@latest add luci-efe/skills -s relay- ContinueStage
- 04 Context continues · 02 Not a clipboardMethod
- .ramos/
runs/ <run-id>/ <pane>/ checkpoints/ <seq>/ handoff.json + HANDOFF.mdProduced artifact / output
Use when
A session must hand work to a fresh session, another agent, or another machine, or when starting work a previous session handed off.
Support & adapters
- Instructions usable across harnesses
- Hooks tested: Claude Code
- 1. Sender (pane A)
handoff.json (≤8 KiB) + HANDOFF.md + mnemosyne
- 2. Phase: offered
transfer_id + sha256 · Receiver checks the checkpoint sha256
- 3A. Verified ack (ack.json)
sha256 matches → ack.json, ownership transfers to receiver · SessionStart ≤ 400 tokens, flagged STALE if the code changed since the checkpoint
- 3B. Not acknowledged / rejected
No ack.json or sha256 mismatch → sender keeps ownership · no silent drop
Decision tree
- 01→ handoff.json + HANDOFF.md
Checkpoint & generated view
Write draft JSON (strings ≤240 chars) and run relay.mjs checkpoint to create immutable handoff.json (≤8 KiB) + HANDOFF.md
- 02→ memory-sync.json
Sync decisions to mnemosyne
Run relay.mjs sync <handoff.json> to persist accepted/
rejected decisions; if mnemosyne is missing, keep checkpoint and report blocked - 03→ offer.json → ack.json
Offer & receiver ack
Sender runs relay.mjs offer --to <pane>; receiver reads the checkpoint and runs relay.mjs ack --receiver <pane>; ack rejects a changed checkpoint, records stale: true if the code moved, and SessionStart then shows STALE
Prerequisites & install recipes
- noderequired · default & herdr-launch branches
nodebrew install node - mnemosynerequired · default & herdr-launch branches
mnemosyneuv tool install --python 3.12 mnemosyne-memoryneeds uv (brew install uv) · required for transfer and decision memory sync - herdroptional · herdr-launch branch
herdrbrew install herdrOptional · required only when launching a fresh Herdr pane
Completion criteria
- Each pane writes only to its own lane path (.ramos/
runs/ <run>/ <pane>/ checkpoints/ <n>/ ) and checkpoints are immutable. - If mnemosyne is missing, writes the recovery checkpoint first, prints uv tool install --python 3.12 mnemosyne-memory (needs uv), and reports blocked without offering.
- Receiver may write only after relay.mjs ack verifies the offer and writes ack.json.
Want something like this built for your company?
Book a callMessage me on LinkedInSee Agentic Engineering