Public alpha · Rust + GPUI
The agent app your agents can rewrite
Codex, Claude Code, OpenCode and any ACP agent in one native desktop app. Every panel is a plugin your agents can edit, and a marketplace brings you more.
macOS · Windows · Linux, on ARM64 and x64
Agents
Bring the agents you already use
Built-in providers for Codex, Claude Code and OpenCode, each speaking its agent's own protocol, plus every agent on the Agent Client Protocol registry. Sign in with the accounts you have.
Grab an agent and fling it around the crescent. It bounces off the others and comes back through the opposite edge.
Grab an agent. Give it a fling.
Off one edge, back through the other.
41 agents · Tab to an agent, then use the arrow keys to fling it.
Plugins
Everything you see is a plugin
The sidebar, the chat, the file tree, git, settings, even the agent providers live in one plugins folder. The app opens it as a workspace, so you can ask any agent to change the app itself.
UI plugins
JavaScript modules build the sidebar, chat, files, git, tabs, terminal and settings from native building blocks. Save a file and it reloads in place.
Agent providers
Codex, Claude Code, OpenCode and ACP agents are plugins too, each speaking its agent's own protocol.
Tools for every agent
A plugin can give tools and rules to every agent session, whichever agent runs it.
Docs in the folder
The plugins folder carries its own guide, host API and examples, so an agent opened there can write a plugin with no other context.
Sandbox
A plugin can do only what you granted
Each plugin runs in a sandboxed helper process with no files, no network and no programs of its own. It asks the app's broker, and the broker checks every call against what you granted: these folders, that host, this program.
Send a call to any destination. Grant a scope, then ask for something outside it.
Marketplace
Share what you build, safely
Publish plugins and mods, public or shared with a few people. Install with an agent scan and a card that shows every permission.
Permissions you can read
Every plugin declares what it may do and why. A permission that is not declared and granted does not exist for it.
An agent reads it first
Install opens a chat in the Plugins workspace. The agent reads the source before anything runs, and only you enable it.
Mods, merged for you
Publish your changed version of any plugin. When the original updates, your agent merges it into yours.
Signed releases
Official plugins carry an offline-rooted signature, and every publish goes to a public transparency log. Before the app installs anything it walks this chain.
The app's built-in root public key verifies root.json, which names the trusted signing keys.
Computing…Received SHA-256 original bytesComputing…Illustrative signing chain · real SHA-256 on a 32-byte sample
Popular plugins
All pluginsACP agents from the ACP registry (Gemini, Cursor, Droid, Kilo, pi, ...), Oh My Pi, and your own entries (custom.json in the plugin's data folder). Agents are discovered at runtime.
Built-in chat UI (JavaScript UI plugin).
Claude Code agent provider: runs the Claude Code CLI headless for each account.
Codex agent provider: runs the Codex CLI's app-server for each account.
Built-in files UI (JavaScript UI plugin).
Built-in git UI (JavaScript UI plugin).
Native
A desktop app, not a web page in a window
Rust, end to end
The window, the host services and the plugin broker are Rust. Plugins run in sandboxed helper processes.
Drawn by the GPU
The interface renders with GPUI, the framework behind the Zed editor, so streaming transcripts stay smooth.
No browser inside
No Electron and no bundled Chromium. It starts fast and stays light while your agents work.
Live frame times of this page in your browser. An illustration of jank, not a benchmark of Divergence.
Workspace
Everything an agent session needs
Reasoning effort
Each agent's own effort levels, per chat. Turn the dial.
Checkpoints
Every turn is a checkpoint. Rewind the files and the chat together.
async function fetchUser(id) { return retry(3, () => api.get(`/users/${id}`), { backoff: 250, onError: log.warn });}A real terminal
Built on libghostty. TUI agents run right in place.
Streamed tool calls
Commands, edits, reads and searches render as they happen.
Approvals and questions
Agents ask, you answer inline, with the agent's own options.
Git built in
Status, staging, diffs, commits and branches.
Files and code
A git-aware file tree and a code viewer, a tab away.
Errors in plain sight
A failing agent or plugin says so. It never just hangs.
Tabs
Chats, files and diffs in tabs, with the keyboard to move between them.
Ready when you are
Pick your platform. Once installed, the app and its plugins update themselves, and nothing new runs until you say so.