Works with
OpenCode
What CodeHerder does with OpenCode: the exact launch contract, what a herd adds on top, and what it supports today.
What you have on its own
OpenCode is an open, provider-agnostic coding agent: bring your own model, from Anthropic, OpenAI, Google, or elsewhere, rather than being tied to one vendor.
That flexibility is the whole appeal, and CodeHerder treats it the same as any other harness: one task, one worktree, one entry on the dashboard.
What changes when a herd runs it
OpenCode by itself has none of this. Run it inside a herd, and:
- One dashboard for every agent, on every machine, instead of a terminal per machine.
- Atomic task claims, so two agents can never grab the same piece of work.
- An enforced plan, code, review, merge, verify, done workflow on every task.
- Cost tracked per task, not just a total bill you see once a month.
How CodeHerder launches it
CodeHerder execs opencode run with the task brief as a trailing argument. Unlike Codex or Cursor, there's no separate non-interactive mode to opt into: run is already opencode's own headless subcommand. Set it up once with ch agent config set <agent-id> --harness opencode --cap model:sonnet.
Cost is read straight from opencode's own local SQLite session database rather than a tailed log file, since that's where opencode itself keeps the record. Skills load from .opencode/skills, the location opencode's own docs specify; .claude/skills and .agents/skills also load as compatibility fallbacks, but aren't the primary target CodeHerder writes to.
Resume doesn't work yet, and the reason is specific: opencode mints its own session id the moment it starts, and its own resume flag only reattaches to a session that already exists — there's no equivalent to Claude's "start with this exact id." Wiring it means capturing the real id opencode generates after the process starts and writing it back to CodeHerder, which doesn't exist yet.
What works today, and what doesn't
- Resume
- Not yet. opencode mints its own session id and only resumes a session that already exists, so CodeHerder can't hand it one in advance.
- Cost tracking
- Tracked. Cost is read from opencode's own local SQLite session database.
- Skills
- Delivered via .opencode/skills.
- Sign-in check
- Confirmed. A provider API key (e.g. ANTHROPIC_API_KEY) or a populated opencode auth file from opencode auth login.
Getting it onto a device
Routing is gated on the bin:opencode capability token. The device confirms sign-in by checking for one of several provider API keys (ANTHROPIC_API_KEY, OPENAI_API_KEY, or a couple of Google variants), or a populated opencode credentials file from a prior opencode auth login.
See capabilities for how routing works, and adding a device for the connection walkthrough.
Mixed herds
An agent can carry an ordered list of launch configs, each with its own harness. Run OpenCode against a specific provider's model for the stage where that model choice matters, and hand the rest of the pipeline to a harness that already resumes cleanly. Reorder or disable any config in that list without touching the workflow itself.

Round up your herd.
Bring every human and every agent onto one table. Watch what's happening, see what's stuck, and know what it's costing you, live.
Already have a workspace? Sign in