Skip to content

Desktop · macOS & Linux · v0.0.1

codrift

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.

Source on GitHub

Four agents, three repos, one window. Live, from a real session.

01 / floor

Every agent, in its own terminal, on screen at once.

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.

Two Claude Code agents running side by side in Codrift: the left pane is proposing a Go edit, the right has just finished writing a failure-modes document
⌘D splits the content area. Each half keeps its own initiative, agent and view.

Six adapters, one launcher

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.

Sessions outlive the window

Claude sessions are persisted and resumed. Quit Codrift, come back, and the agent picks up the conversation instead of starting over.

02 / attention

Output stopped being scarce. Your attention didn’t.

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.

Codrift sidebar showing an initiative with 3 waiting, while an agent asks how the usage endpoint should carry two rate-limit scopes
“3 waiting” on the initiative row. You go straight there.

03 / conductor

Hand the plan to an agent and let it run the others.

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.

How orchestration works in Codrift A conductor agent calls Codrift’s MCP server over SSE. The server starts one sub-agent per project directory, each in its own git worktree, and all of them read and write a shared FTS5 memory store. conductor claude · context dir Codrift MCP :43117/mcp/sse start_agent · send_to_agent calls claude · atlas-api codrift/9e66/atlas-api codex · atlas-edge codrift/9e66/atlas-edge claude · dashboard codrift/9e66/dashboard shared memory sqlite fts5 decision · summary snippet · note

Press o to start orchestration on the selected initiative, or wire the MCP server into your own tooling with codrift mcp install.

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

Six agents. Six branches. Your checkout untouched.

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.

One trunk, three isolated branches Your main branch continues untouched while Codrift creates one worktree branch per project directory, each holding a single agent’s changes. main · yours atlas-api +30 −2 atlas-edge +41 −6 atlas-dashboard +22 −4
Codrift diff view showing syntax-highlighted additions and deletions in lib/atlas/rate_limit.ex with a plus thirty, minus two summary
2 shows every changed file across every directory, highlighted.

05 / memory

The context you keep re-typing, written down once.

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.

Codrift memory view listing decision, summary, snippet and note entries with a full-text search box
FTS5 query syntax, straight through: redis AND fallback NOT dashboard.

06 / keys

Three views. Press the number.

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.

Codrift context view: the initiative brief rendered as markdown beside the directory list

move

j k
sidebar cursor
collapse / expand
sidebar ⇄ pane
/
fuzzy file filter

work

s
start an agent
t
start a shell
o
start orchestration
b
branch the directories

window

⌘D
split side by side
⌘⇧D
split stacked
⌃B
collapse sidebar
⌃P
command palette
Codrift command palette listing every action with its current key binding
⌃P lists every action, with whatever key it is bound to right now.

07 / surface

Sixty-six themes, and the one you already use.

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.

Codrift theme picker filtering sixty-six bundled VS Code themes
Live preview with , keeps, esc reverts.
Codrift font picker showing installed monospace families and a size stepper
Your installed monospace families, with a size stepper.
The same Codrift tree view rendered in the light Catppuccin Latte theme
Same window, Catppuccin Latte. Light works too.

Pull the work in, don’t retype it

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.

Browse and edit without leaving

3 opens a gitignore-aware file tree with syntax-highlighted previews, a fuzzy filter on /, and a CodeMirror editor with vim bindings on e.

Fuzzy file filter in the Codrift tree view narrowing to three rate limit files
Typing ratlim finds lib/atlas/rate_limit.ex.

08 / install

One binary. No runtime to 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.

macOS .dmg Linux .AppImage / .deb

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.