Skip to content
zorvo 0.9.1 is out

Every coding agent.
One desktop.

Claude Code, Codex, Qwen Code and the agents of the ACP registry in one native Mac app. Work with one, or send one prompt to four and keep the best. No lock-in, no API keys.

Free and open source under Apache 2.0, for Macs with Apple silicon or Intel. Zorvo updates itself, and brings Node.js when an agent needs it.

agents

Bring the agent you already use.

Zorvo runs each agent that speaks ACP as a real chat, with its own models, modes and approvals. Add any other agent from the ACP registry in Settings.

In a chat

Driven over the Agent Client Protocol, so you see each agent's own models, effort, modes and approvals.

  • Claude Code
  • Codex
  • Qwen Code
  • Models
  • Effort
  • Modes
  • Approvals
  • Questions
  • Plans
  • Diffs
  • Rewind
  • Fork
  • Resume

From the ACP registry

Add any registry agent in Settings. Zorvo installs it, plus Node.js or uv when it needs them, and checks every download against its SHA-256 hash.

New versions are offered a week after they are published.

Each agent reports its own models and modes, so Zorvo offers whatever your install has. Agent names belong to their makers; Zorvo works with them and is not endorsed by them.

compare

One prompt. Four agents. Keep the best.

In a git repository, tick up to four agents on a new session and send them the same prompt. Each works on its own, and you choose whose changes stay.

  • Each agent in its own worktree

    Every agent gets its own copy of the repository on its own branch, in the safest mode it has, so none of them edits your checkout or another agent's files.

  • A model for each agent

    The composer shows one model chip per agent. Zorvo asks an agent for its models only when you open its chip.

  • Pick keeps one

    Read each agent's changes, answer its permissions from the run, then Pick. Zorvo asks first, stops and archives the others, and keeps their worktrees.

Each agent runs on its own sign-in and uses its own quota.

How a compare run works

control

You approve every step.

Permission requests arrive with the agent's own choices. Its plan stays in sight, and every step it took is in its activity.

  • Approvals in the chat

    Deny, always allow or allow once, as the agent offers, with the files an edit touches and their changed lines. Each session starts in the safest mode its agent has, and a mode that skips approvals carries a shield.

  • The plan in the top bar

    The agent's plan shows as 2/4 beside the session's title. Open it to see which step runs now.

  • Background tasks

    Each running shell command and subagent gets its own row, with how long it has run. Open one, or stop it.

  • What the agent did, turn by turn

    The Activity tab lists the files, commands and permissions the agent reported, with a jump to each in the chat. Files git shows as changed that the agent did not report are listed apart.

  • Context in plain words

    The composer reads 38% of context, turns amber from 80%, and opens the numbers behind it.

review

Review it like a pull request, before it is one.

Every change the agent makes waits in a diff you can read, comment on and send back in your next message.

  • Comment on the lines you want changed

    In the full review or the inspector's Changes tab. Add puts each comment in your message with its file, line and the line itself, for you to read and edit before Send.

  • A comment never moves

    It stays on the line it was written on. When the agent changes that line, the comment reads Outdated instead of jumping to similar code.

  • Quote anything back

    Select text in a reply and press Reply, or select lines in the file view and add them to your message.

  • Commit, then open the pull request

    Commit the files you tick. The top bar shows the branch's pull request and its state, read with your own gh.

How to review an agent's changes

features

One app. Each agent as it really is.

Sessions, worktrees, a terminal, files and diffs sit around the agent, never in its way.

  • The agent's own data

    Its real modes and models, permission requests with its own choices, its questions, slash commands and context use. Sessions resume after a restart.

  • Every choice the agent offers

    Models, modes and other settings each get a chip with the agent's own description: Codex's Plan mode, Claude's fast mode, Gemini's models. What does not fit goes under ⋯.

  • Install agents from Zorvo

    Pick an agent and click Install. Zorvo brings Node.js or uv when it needs them, and you can write your first message while it installs.

  • See which agents are ready

    The Agents menu and Settings show Ready, Sign in or Not checked for each agent. Its own login, or Qwen Code's own setup, runs in a terminal in the app, and your message is sent once you are signed in.

  • One welcome screen

    Tick the agents you'll use, pick a project folder and press Start. Signing in waits for your first session.

  • A sidebar that says who waits

    Each session reads its agent and what it does: Working, Waiting for you, Finished, unread. A folded folder still says 1 waiting. Hide the sidebar to give the chat the room.

  • One inspector

    Changes, Activity, Files and Terminal in one panel beside the chat. Drag it wider; its shells keep running when you switch tabs or close it.

  • Read a file in place

    The Files tab marks what changed. Click a file to read it with its changed lines marked, and add the lines you select to your message.

  • Branches and worktrees

    Start from the branch you pick, or turn on New worktree to give the session its own copy on an agent/<title> branch.

  • Fork and rewind

    Fork any reply into a new session. Or rewind to before one of your messages and send it again, edited.

  • When a turn goes wrong

    A failed turn says what happened in plain words, with Try again. An agent that has sent nothing for a while gets a notice with Stop, and a message that did not reach the agent comes back to its box.

  • Zorvo updates itself

    A card offers Update & restart and says what a restart would stop, such as 2 agents mid-turn. Zorvo checks the update's signature before it installs it.

privacy

No lock-in. No API keys.

Zorvo sits between you and your agents and keeps nothing for itself.

  • Sign-in stays with the agents

    Zorvo never asks for or stores API keys or tokens. Agents sign in with their own tools, even when the login runs inside Zorvo, and GitHub goes through your own gh.

  • Few hosts, all named

    Zorvo reads the ACP registry and, shortly after it starts and then about once a day, asks GitHub whether a newer Zorvo exists. Only when you click Install does it fetch that agent's hash-checked download, plus Node.js or uv if it needs them, and only when you click Update & restart does it download a signature-checked update. No telemetry, and no requests from the window.

  • Your data, on your Mac

    Sessions, transcripts, worktrees and installed agents live in one folder you can open in Finder.

  • Only the folders you open

    The backend reads and runs only in folders you opened in the app. What you type in an agent's form is never saved.

Every agent, one prompt.

Download Zorvo, open a folder and pick the agent you already use. Zorvo installs the rest, and keeps itself up to date.

The build is not signed yet. The first time you open it, allow it in System Settings, Privacy and Security.