Why
Eric: "the cyberdeck seed agent seems impaired compared to cx and cc; rework it so it is faster and more capable." The agent behind Cyberdeck's prompt bar was a "Cyberdeck Queries" agent on the local agents server with a one-paragraph prompt, no memory, and only the deck tools (status, todo, repos, collab). It could look at the fleet but not work in it.
What a Seed agent gets now
Everything is derived from files on the node and applied by SeedBridge.syncHarness (five seconds after each daemon start, and on cyberdeck seed sync), the same way on every Cyberdeck instance.
Prompt. A persona and working rules written for this surface (orient with deck_context, use the node tools, results are bounded, finish the job, leave a trace), then the node's ~/Code/AGENTS.md and Deck/AGENTS.md verbatim: exactly what cc and cx read at session start. About 16 KB on yacht. The voice companion keeps its spoken persona and gets the same two files appended (cyberdeck seed sync --voice, applied on yacht).
Memory. A fleet pack in each agent's ~/memory/fleet/: an index, the two files again, and Claude Code's project memory for the Code root (46 notes on yacht). Synced by hash; the agent keeps its own learnings in ~/memory/notes/.
Tools. The cyberdeck MCP server now also carries shell (login shell on this node, or on a manifest host over ssh), read_file, write_file, edit_file, list_dir, grep and deck_context, next to the 22 deck tools. Bounded output (the agents server cuts results at 8 KB), process-group timeouts, an audit line per command or write, config.mcp.nodeTools: false to opt a node out.
Model. seed.model and seed.reasoningLevel (default medium) are applied to the harness agent.
Turn context. Every prompt-bar message carries the fleet machine, directory, Deck project, git state and time.
Nodes without a vault. cyberdeck seed keygen creates a node identity; cyberdeck seed login runs Sign in with ChatGPT and saves the subscription provider.
Smoke test on yacht (prompt bar API): deckcontext, shell and readfile in one task, six model turns of 1.4 to 5.4 seconds, correct answer.
Code: cyberdeck main d84fe0b and 31d5f85 (src/daemon/harness.ts, src/daemon/api/mcp-node.ts, SeedBridge.syncHarness, docs in docs/AGENTS.md "The harness" and docs/VOICE.md).
Deployment, and what I found on the hosts
The installed checkouts on yacht, enuc, iris, sentinel and botical were not main: old commits plus large uncommitted overlays (vault, steam, vimm, emulator, spotify, TV kiosk, navigation) that exist on no remote branch. I snapshotted each as host-overlay/<host>-20261016, merged main into them, verified (type check, build, tests; the overlays' twelve pre-existing e2e failures are unchanged, main is green), and deployed:
host | tree | note |
|---|---|---|
yacht |
| harness live; companion adopted |
iris, sentinel |
| |
botical |
| build OOMs there; dist built on yacht and shipped |
enuc |
| keeps the overlay's TV-aware AfterglowFrame |
clipper | main | clean checkout, auto-updates |
starlight | not deployed | asleep during the rollout; auto-updates when it wakes if its tree is clean |
Every host tree is now a clean checkout of its branch. The overlay features still need landing in main (cx follow-up).
Clipper agents server
Running: the agents binary bundled with Seed.app, launchd sh.cyberdeck.seed-agents, port 3053, state in ~/Library/Application Support/CyberdeckSeed, hyper.media as the Seed API, code execution on, no voice. Cyberdeck on clipper has its own node identity (z6Mku4qHhcTeiNyTFdxtF11QMvzvcLqU5UuCwegf8RVX2aQY), the MCP server registered (29 tools), and both agents created and synced (Cyberdeck harness agent, gpt-6-sol at medium, 3 pack files; the setup agent adopted as voice persona for later).
Model provider: on Eric's request the OpenAI subscription credential was copied from yacht's experiments server (decrypted from its agents.sqlite with the server's own key, stored on clipper as openai-subscription-oauth, provider OpenAI in subscription mode, authStatus ok). Caveat: two servers now hold the same refresh token; if OpenAI rotates refresh tokens on use, one of them will show needs-login on its next refresh. The fix is cyberdeck seed login on that node.
Smoke test on clipper (prompt bar API): deckcontext, shell and a memory read in one task, five model turns, correct hostname and Seed commit.
Open
starlight deploy (asleep).
Overlay features from host-overlay/* into main.
Voice on clipper (LiveKit, Deepgram, Cartesia keys live only on yacht's experiments server).
clipper's memory pack has no Claude Code notes yet (no cc memory dir there); seed.memoryDirs can point it at a synced copy.
The yacht harness agent keeps its old name "Cyberdeck Queries"; new nodes create "Cyberdeck".
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime