decision claude/atlas-api
Bucket key is {api_token, route_class}, not api_token alone. A read loop must never starve a payout. Rejected: one global bucket per token (simpler, but it couples the two failure modes).
Desktop · macOS & Linux · v0.0.1
A desktop control surface for running many AI coding agents at once. Claude Code, Codex, Opencode, Gemini, Copilot and raw shells, against every repo in a project at the same time.
Live terminals, a branch per directory, one diff across all of it, and a memory store the agents share.
Four agents, three repos, one window. Live, from a real session.
01 / floor
Codrift does not wrap your agents or paraphrase them. Each one runs in a real PTY and renders byte-for-byte in an embedded terminal, so Claude Code looks like Claude Code and Codex looks like Codex. Split the pane and watch two of them at the same time.
Claude Code, Codex, Opencode, Gemini, Copilot, and a raw
$SHELL. Start any of them against any
directory; run several in the same one if you want a second opinion.
Claude sessions are persisted and resumed. Quit Codrift, come back, and the agent picks up the conversation instead of starting over.
02 / attention
Six agents will produce more work than you can read. The job is no longer typing, it is routing yourself to the one that is actually stuck. Codrift makes that a glance: every agent carries a state, the sidebar rolls them up per initiative, and anything waiting on a human says so in words, not just colour.
running
Working. Leave it alone.
needs input
Asked you something. This is the only one that costs you time.
idle
Finished its turn, holding the session.
stopped
Exited or crashed, with its exit code.
03 / conductor
Codrift ships an MCP server. Point one agent at it, give it the initiative, and it plans the work, starts sub-agents in the other directories, sends them instructions, reads their output, and writes what it learns to the shared memory. There is no glue code and no orchestration DSL: the conductor is just an agent with tools.
orchestration.md, read by the conductor
# Rules for workers
- Read the initiative memory
before touching anything.
- Write a decision entry the
moment you pick between
two approaches.
- Never widen the public API
without saying so in memory
first.
- Stop and report if a change
would need a migration.
## Merge order
edge -> api -> dashboard
04 / isolation
Turn on worktrees for a directory and Codrift checks it out on
codrift/{id}/{slug} before any agent starts.
Parallel agents stop colliding, and nothing lands in your working tree until you
decide it should. The diff view shows every change across the whole initiative in one
scroll, so review is one pass, not six.
05 / memory
Every initiative carries a searchable SQLite FTS5 store. Agents read it before they start and write to it when they decide something. The next agent inherits the reasoning instead of rediscovering it, which is cheaper in tokens and much cheaper in contradictions.
decision claude/atlas-api
Bucket key is {api_token, route_class}, not api_token alone. A read loop must never starve a payout. Rejected: one global bucket per token (simpler, but it couples the two failure modes).
snippet claude/atlas-api
defp encode({token, class}), do: "rl:#{class}:#{token}"
The edge must produce the identical key or the two layers count separately.
note conductor
Two accounts poll on a fixed 200ms interval with no jitter, so the sliding window fills at exactly the same instant on every edge node.
06 / keys
The keyboard is the interface, not a shortcut layer bolted on top. Everything
(navigation, view switching, launching, splitting, the palette) is reachable by key,
and the map comes from ~/.codrift/keybindings.json
so you can rebind all of it.
Try it here: press 1, 2 or 3.
move
work
window
07 / surface
Codrift reads VS Code theme JSON. Sixty-six are bundled; drop any other into
~/.codrift/themes and it shows up in the
picker. Theme and font apply live to the whole surface, terminals included, so the
agent panes match everything else on your screen.
Connect GitHub, GitHub Projects, GitLab, Linear or Linear Projects and import an
issue straight into an initiative’s context folder, where every agent picks it up
automatically through --add-dir.
3 opens a gitignore-aware file tree with syntax-highlighted previews, a fuzzy filter on /, and a CodeMirror editor with vim bindings on e.
08 / install
A native desktop app for macOS and Linux. No Node, no Erlang, no Ruby on your machine because the runtime ships inside. Bring your own agent CLIs and Codrift drives them.
Not yet code-signed or notarized. The cask strips the download quarantine; if macOS still objects, right-click → Open once. Then codrift mcp install registers the MCP server with Claude Code.