Cyberdeck Seed harness: the Seed agent configured like cc and cx
2026-10-16. What changed in Cyberdeck so its Seed agent has the prompt, memory, tools and model of the terminal agents; how it is deployed on every host; what is still open.

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

deploy/yacht-20261016

harness live; companion adopted

iris, sentinel

deploy/iris-20261016


botical

deploy/iris-20261016

build OOMs there; dist built on yacht and shipped

enuc

deploy/enuc-20261016

keeps the overlay's TV-aware AfterglowFrame

clipper

main 31d5f85

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