Zozo vs Herdr, cmux, and Conductor

The other three wait for you to start each task. Zozo starts the next one itself.

Herdr, cmux, and Conductor give you a better place to run a coding agent: panes that survive a closed lid, a sidebar that shows which agent is blocked, a diff viewer with a merge button. They're good at that. Every one of them still needs you to decide what runs next, type the prompt, answer in the pane, and open the pull request.

I built Zozo because that's the part I kept getting stuck being. Zozo watches the GitHub repositories you point it at, picks the next Issue you've labelled ready, works it in its own worktree on a machine that stays up, asks you once if the spec is missing a decision, and opens a Pull Request that closes the Issue. You label in the evening and review in the morning.

Side by side

The decisions that actually change what you do.

Equivalent tiers where they exist. Where a capability needs a paid plan, an integration, or a script you'd write yourself, the cell says so.

Herdr 0.9
cmux
Conductor
Zozo
Who starts the next task
You, in a pane. One agent can start another through the socket API.
You, in a tab.
You, from a prompt, a branch, a pull request, a GitHub issue, or a Linear issue. Its API can create workspaces from a script you write.
Auto-dispatch. Label an Issue ready-for-agent and it's picked in priority order when a slot is free, after its blockers close. You never press start.
Where it runs with your laptop shut
A background server on a machine you keep up: a desktop, or a box you reach over SSH.
Your Mac. Running processes aren't checkpointed across a quit; a local tmux option keeps them until logout or restart.
Your Mac on the free plan. Cloud workspaces on Pro at $50 a month, metered in cloud workspace hours.
A dedicated VM per customer on every plan, from $40 a month. Nothing on your side has to stay awake.
When the agent needs a decision
The pane turns blocked in the sidebar. You answer in that pane.
The tab's notification ring lights up. You answer in that tab.
The agent asks in the workspace chat. Plan Mode can hold for approval before editing.
The attempt pauses, posts its questions as a comment on the Issue, pushes to your phone, and waits with no timeout. Your answer resumes the same Thread and worktree.
Getting to merged
Out of scope. You or the agent pushes and opens the pull request.
The sidebar shows the linked pull request's status. You open and merge it.
Drafts the pull request description. A Checks tab shows CI, comments, and todos. You click merge.
Opens the Pull Request that closes the Issue. Per Project, auto-merge lands it only after the tested commit is verified against the current base branch. Otherwise it waits for your review.
Billing a client's usage
Whatever account the CLI is logged into.
Whatever account the CLI is logged into.
Bring your own subscription or API keys.
Each Project pins its own Credential: a client's repository on the client's API key, yours on your subscription. Tokens and cost roll up daily per Credential.
The record afterwards
Scrollback. Replaying pane history after a restart is experimental and off by default.
Scrollback, restored best-effort on relaunch.
Chat history kept when a workspace is archived. Transcripts queryable through the API, in beta.
An append-only Event journal per Thread: every turn, tool call, command, and decision. Downloadable as an archive with git bundles for any commits that never reached your remote.
Agents
Seventeen or more agent CLIs detected, including Claude Code, Codex, Cursor, Copilot, and OpenCode.
Any agent that runs in a terminal.
Claude Code, Codex, Cursor, OpenCode.
Claude Code, Codex, OpenCode.
Price
Free. Apache 2.0.
Free. GPL-3.0.
Free for local workspaces. Pro at $50 a month adds cloud workspaces, the API, and multiplayer.
$40, $50, or $60 a month by machine size. No inference markup. Fourteen-day trial.

Competitor cells come from each product's own site, docs, README, or pricing page, read on 2026-09-07: Herdr 0.9.0 and its docs, the cmux README and site, Conductor's docs, pricing page, and changelog through 0.84.2. Tell support@zozohq.com if a cell is out of date and it'll be corrected.

Selection

The backlog moves without you.

Say it's Thursday evening and three client repositories each have a couple of small Issues you've been meaning to get to. In Herdr or cmux you'd open three panes and type three prompts, and the fourth Issue waits until you're back. In Conductor you'd create a workspace from each Issue, one at a time.

With Zozo you label the six Issues ready-for-agent and close the laptop. Auto-dispatch picks them in priority order, one Issue per free slot. When a Run finishes, the freed slot picks the next Issue immediately instead of waiting for a timer. An Issue marked blocked on another one waits; a reconciler rechecks every open Issue on every watched repository once a minute, so the moment its blocker closes it's eligible again.

It also knows when to stop. Three attempts in a row failing for the same reason trip a circuit breaker and end the pass. If GitHub can't be read for one repository, that repository is skipped and the others keep moving.

Thursday 18:40 · you label · Friday 07:10 · you read
18:40
Six Issues labelled ready-for-agent across three Projects. #214 is blocked on #209.
18:45
Tick. Two slots on a Plus plan. #209 and #231 selected, each in its own worktree.
21:03
#231 Pull Request opened. Slot freed. #188 selected without waiting for the next tick.
23:52
#209 landed and closed. Reconciler sees #214's last blocker resolved and moves it to ready-for-agent.
23:53
#214 selected on the freed slot.
07:10
Four Pull Requests open, one landed, one Issue paused on a question for you. Nothing was started by hand.
Issue #214 · retry failed webhook deliveries · awaiting-answers
zozo
Retries can duplicate a delivery. The Issue, the docs, and the code don't say which you want. Dedupe by event id, or accept at-least-once?
you
Dedupe by event id.
zozo
Confirmed. Resuming on the same worktree. Q&A digest posted to the Issue so it stands on its own.

Clarification

It asks once, in one place, and waits.

Every agent can ask a question. The difference is what happens when you're not sitting in front of it. In Herdr the pane goes blocked and holds the session open until you come back to that pane. In Conductor the question sits in the workspace chat. Either way the answer has to be typed where the agent is running, and while you're away the work sits.

Zozo treats a missing decision as a state, not a prompt. When an Issue turns out to need something that isn't in the Issue, the docs, or the codebase, the attempt pauses, labels the Issue awaiting-answers, posts its questions as a comment on it, and sends a push notification to your phone. There's no timeout. You answer from the Dashboard on whatever device you have, the same Thread resumes on the same worktree with every file it already touched, and a digest of the exchange lands on the Issue so the next person reading it doesn't have to ask again.

For a contractor that's the difference between a client's vague ticket costing you a twenty-minute session and costing you one sentence.

Landing

Merged means verified against main, not just green.

Conductor gets you to a merge button with a Checks tab beside it, which is a real improvement over a raw terminal. Herdr and cmux stop at the pane; pushing and opening the pull request is on you or the agent. In all three, merging is a thing you do.

Zozo opens the Pull Request itself, with a closing reference to the Issue. What happens next is a per-Project setting. Open-PR-only stops there and waits for your review. Auto-merge sends it through Landing, which merges only if the base branch the checks ran against is still an ancestor of the current base. If main moved, it updates and re-verifies instead of merging stale. If checks fail or never report, it stops with a landing-blocked label and a push notification rather than merging anyway. Merging past failing checks is a separate, per-Project switch that is off by default.

Landings run one at a time, so two overnight Pull Requests can't interleave into a broken main. A successful Landing closes its Issue and comments with the branch it landed on, which is what lets the next blocked Issue move.

Landing · Project webhooks-api · auto-merge
05:47
PR #214 opened. Body carries Closes #214. Enters the Landing Queue behind PR #231.
06:02
PR #231 checks passed. Base tip is an ancestor of the tested commit. Merged. Issue #231 closed with a comment naming the branch.
06:03
PR #214: base moved since its checks ran. Updated from main, checks re-run.
06:19
PR #214 checks passed on the updated commit. Merged. Issue #214 closed.
06:20
PR #188: one required check failed. landing-blocked. Push sent. Not merged.
Watched Projects · Credentials column
acme/api
acme-key (Codex, API key) → fallback openrouter-cheap (OpenCode)
acme/web
acme-key (Codex, API key) → fallback openrouter-cheap (OpenCode)
you/sideproject
personal-max (Claude Code, subscription)
usage
Daily rows per Credential: tokens, and cost where the vendor meters it. acme-key shows a dollar figure measured on Acme's account; personal-max shows tokens against your subscription.

Credentials

Client work bills the client.

In a terminal, an agent runs on whatever account the CLI is logged into. If you do client work and your own work on the same machine, keeping a client's usage off your personal subscription is a matter of remembering to switch. Conductor lets you bring your own keys, which helps, but the accounting is still yours to keep.

Zozo makes the billing identity part of the Project. Adding a repository asks you to name a Credential for dispatch and one for intake, with no global default that could silently fill it in. A client's repositories run on an API key on the client's own vendor account, metered by Anthropic or OpenAI with no markup from Zozo. Your own repositories run on the Claude or Codex subscription you already pay for, which adds no inference cost at all. Every Run reports its tokens and cost, and the Dashboard rolls them up by day, Provider, and Credential.

When a client asks what last month's agent work cost, the number is measured on their account, not estimated from yours.

Where Zozo won't fit

What it doesn't do, plainly.

These are the reasons a reasonable person on this page picks something else. None of them are hidden in the pricing.

It isn't a terminal

You don't get a pane to type into. Interactive pairing, spiking a design with an agent, or watching output scroll by in real time is what the other three are for. Zozo is for work you've already decided to hand off.

Three Providers, GitHub only

Zozo drives Claude Code, Codex, and OpenCode. If your workflow runs on Cursor, Copilot CLI, or another agent, or your issues live in Linear rather than GitHub, it doesn't fit today.

Hosted, and invite-gated for now

Zozo runs on a VM we operate for you. There's no self-hosted build yet and no date promised for one. Signup is by invite code or the waitlist until open signup passes its readiness checks.

Next

Label an Issue. Read the Pull Request.

The core loop is idea to Issues to code to Pull Request, and every step of it is on the home page. The trial is fourteen days on Standard, with your own Claude or Codex subscription and nothing added on top of it.