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.

Package bytesOriginal
Touch any byte. Watch the entire hash change.
Expected SHA-256 from the signed indexComputing…Received SHA-256 original bytesComputing…
One changed byte breaks trust.

Illustrative signing chain · real SHA-256 on a 32-byte sample

Popular plugins

All plugins

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.

Frame pulseMAIN THREAD / LIVE SIGNAL
···msmean frame
awaiting framesdelivered frames
···peak / 4s
4 seconds of real frame intervalsTRACE HELD
Example agent streampaused
> inspect src/parser.ts

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.

Reasoning depthRoom to reason
Drag the dialor use ← →

Checkpoints

Every turn is a checkpoint. Rewind the files and the chat together.

fetchUser.tsCheckpoint 4
async function fetchUser(id) {
return retry(3, () =>
api.get(`/users/${id}`),
{ backoff: 250,
onError: log.warn });
}
Log each failureFailures now go to log.warn.
Add loggingFiles + chat

A real terminal

Built on libghostty. TUI agents run right in place.

codex / terminal
Example run
Ready

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.

The first build is on its way.