Skip to content

Working from Another Harness ​

Русская версия: 06-other-harnesses.ru.md.

Supporting any coding agent ​

Agents differ enormously in what they expose, so support is graded rather than binary:

LevelRequirementWhat you get
1 — Contextthe agent can call an MCP serverproject memory: snapshots, tasks, checkpoints, questions and answers
2 — Attributionit writes a session artifact with a working directory and session idsession-to-project attribution, timings, history
3 — Usagethat artifact carries token countsspend analytics, cost, rework metrics
4 — Liveit exposes an observable streamcurrent activity

Level 1 is all it takes to be supported, and it needs no adapter. An agent released tomorrow gets project memory on the day it can speak MCP. See ADR-0014.

The harnesses and their levels ​

The harnesses Binnacle reads today, the highest level each reaches, and how:

HarnessLevelHow it is reached
Claude Code (CLI and desktop)4 — Liveits session files under ~/.claude/projects, and the OpenTelemetry export binn init enables in its settings
Codex (CLI and desktop)4 — Liveits rollouts under ~/.codex/sessions, and the OpenTelemetry export binn init enables in ~/.codex/config.toml
Gemini CLI4 — Live, not verifiedits session files under ~/.gemini/tmp, and the OpenTelemetry export binn init enables in ~/.gemini/settings.json
opencode3 — Usageits database in ~/.local/share/opencode; it documents no OpenTelemetry export
ZCode3 — Usageits database in ~/.zcode/cli/db; it documents no OpenTelemetry export
pi3 — Usageits session files under ~/.pi/agent/sessions; it has no built-in OpenTelemetry export
Antigravity2 — Attribution, not verifiedits window state, which names each conversation's workspace; its conversations are encrypted, so no model or tokens
any other1 — ContextMCP, or binn call in its shell

Level 4 holds while a harness's events arrive. Without the export, Claude Code, Codex and Gemini CLI are read at level 3 from their files, and a call seen both ways is counted once.

Gemini CLI and Antigravity are built from their sources, as neither could run a session on the owner's machine, and are marked not verified. Each project's actual levels, with the reason a harness stays below the next one, are on the dashboard's usage page. Details: MCP and skills, Harnesses and their levels.

Binnacle's skills in another harness ​

One binn init sets up every harness on the machine:

  • Its plan installs Binnacle's skills at user scope, through npx skills, into every harness the skills CLI (skills.sh) detects, such as Codex, Antigravity, ZCode or pi.
  • It then removes them from Claude Code, which has the binnacle plugin. --skip-harness <id>, with the harness's skills CLI id, keeps them out of another harness too.
  • The Summary names the harnesses they went into, and says to run binnacle-product there.

For a harness installed later, run binn init again: it installs the skills into every harness it detects, stale or current, and says which they were. binn audit reports skills at another version than the installed binn's, and binn init then reinstalls them.

Outside Claude Code, each skill is named binnacle-<action>, where Claude Code has /binnacle:<action>:

In Claude CodeIn another harnessWhat it does
/binnacle:auditbinnacle-auditwhat a repository has and lacks for Binnacle, changing nothing
/binnacle:initbinnacle-initset a repository up: the whole plan, written only after your yes
/binnacle:daemonbinnacle-daemonstart, stop or check the daemon, or turn its autostart on or off
/binnacle:registerbinnacle-registerregister this repository with the running daemon
/binnacle:statusbinnacle-statushow this project and this checkout are seen
/binnacle:dashboardbinnacle-dashboardopen the dashboard
/binnacle:roadmapbinnacle-roadmapturn a vision or a project under way into a roadmap of epics
/binnacle:productbinnacle-productstart a Product session: where the project stands, what comes next
/binnacle:dailybinnacle-dailywhat changed since the last daily, and what needs you
/binnacle:taskbinnacle-taskone ticket's brief; with run <ticket>, work the ticket
/binnacle:answerbinnacle-answeranswer a question an agent left in a ticket
/binnacle:checkpointbinnacle-checkpointsave a Product session's decisions into the project's documents
/binnacle:autopilotbinnacle-autopilotfinish one planned epic, one agent per ticket
/binnacle:helpbinnacle-helpwhich skill to use when

The binnacle MCP server ​

binn init also offers to register the binnacle MCP server, in the project's own file, with Claude Code, Codex, opencode and VS Code. In any other harness, or before the server is registered, the skills call the same tools through binn call <tool> [json] in the shell.

binnacle-autopilot runs only where the harness can start a background agent in a worktree of its own. Elsewhere it refuses at once and changes nothing, and the epic's tickets are run by hand, one session each.

What each harness needs:

  • Codex reads a project's .codex/config.toml only in a trusted project. Trust the project in Codex, or the binnacle entry is not seen. The Codex desktop app ships its CLI outside PATH; on Linux it is /usr/lib/chatgpt/resources/codex.
  • opencode reads opencode.json or opencode.jsonc in the project. Run opencode in the repository root.
  • VS Code reads .vscode/mcp.json. Open the repository, start the binnacle server listed there, and chat in agent mode.
  • GLM is a model, not a harness. Reach it through a harness such as ZCode, Claude Code or opencode; there is no GLM adapter to look for.

Apache-2.0