the workspace for
managing agents
and projects.

Canopy sits between heavyweight IDEs and bare terminals — launch agent CLIs, run your whole stack, and review every diff in one light, local window.

macOS & Linux · all downloads · Windows coming soon

free & open source · MIT · macOS / Linux / Windows
canopy ~/dev/your-project rust core · 5% cpu · 120 MB
Canopy — the agent launcher grid

the way we code changed.
the tooling didn't.

✕ IDEs — too heavy

Extension hosts, indexers, language servers you didn't ask for. Gigabytes of chrome around a text box you barely type into anymore.

✕ terminals — too thin

One pane, no diffs, no state. Multitasking by muscle memory and tmux incantations while three agents wait on you.

✓ canopy — the essentials

Launch agents, run your stack, stage, stash, diff, commit. What development actually requires — and nothing it doesn't.

01 / agent-first

agents are first-class citizens.

Opening a project opens the launcher — not a shell you didn't ask for. Pick an agent CLI or a plain shell; Canopy starts it cd'd into your project with full TUI support. Don't have one installed? It hands you the install command.

claude codex amp aider gemini opencode + any shell
The agent launcher grid
02 / how the workflow actually happens

one window. the whole stack.
every agent.

./define

Your project, in components.

Real projects aren't one folder. Label each directory — and give each its run commands, right in the project definition. Servers start natively from the component: no more managing five dev servers across five stray terminals.

frontend backend workers android ios website
Edit project — labeled component directories, each with its own run commands
./run

Servers run natively, one trigger away.

Each component's servers launch into the RUNS rail — services, not sessions. A pulsing dot while live, a green check when a one-shot finishes, a red exit code when it fails. Switch between sessions without losing any of them.

The RUNS rail — server and trigger.dev running natively next to a Claude Code tab
A renamed agent tab — PR Reviewer — with shared context controls in the sidebar
./orchestrate

Run a team of agents, natively.

Every agent gets a native tab — rename it to what it's doing (PR Reviewer, not zsh (3)). Anything an agent asks for surfaces to you, and the sessions panel shows what each one is doing and costing.

Shared context, built in: sessions in a project can see each other's prompts and edited files. No more spinning up a third agent just to ferry context between two others.

./resume

Crash? Resume every agent in one click.

Five agents deep and the IDE dies — which one was where? Canopy tracks every agent session across all terminals. After a crash or restart, reopening runs each agent's own resume, so it comes back with its history intact.

  • +Sessions survive crashes and restarts
  • +Tracked per project, per component, per branch
  • +One-click Restore — or Forget
Restore sessions — agent sessions that survive a crash, with one-click Restore
Side-by-side diff and staging panel
03 / review what shipped

git, without leaving.

When agents write the code, reviewing the diff is the work. Canopy makes it native: side-by-side or unified diffs, staging, stash, branches, worktrees, history, and PRs — one rail away from the terminal.

  • +Stage, stash & commit from the sidebar
  • +Side-by-side diffs against HEAD, live
  • +Branches, worktrees, history, PRs
04 / nothing else

the essentials, and only those.

>_ terminal is the hero

Full TUI support — claude, vim, htop, tmux run as-is. Tabs per session, scrollback capped and configurable.

▸ run commands rail

Services, not sessions: a pulsing dot while live, green check on finish, red exit code on failure. Output stays readable.

⌘P quick open

Quick Open and Find in Files search every component of the project by default. Chips narrow the scope.

▤ projects & workspaces

Multi-component projects (frontend, backend, …), scoped panels and terminals. Export a workspace, commit it to the repo.

◇ native & light

Rust core, no Electron, no extension host, no server. Everything runs as a child process of the app.

⊘ no plug-ins, no attack surface

No marketplace, no third-party extensions running inside your IDE. What we ship is all that runs — a rogue plug-in can't supply-chain you.

▤ viewers built in

Markdown, CSVs, Excel sheets, Word docs, PDFs, and images open natively. Nothing to install, nothing to configure — it works out of the box.

⏻ local-first

Your code, your machine, your agents' API keys — nothing else leaves the box.

build it. it's yours.

requires: rust (stable) · node 20+

sh
$ git clone https://github.com/FluidWorksApp/canopy-ide
$ cd canopy-ide && npm install
$ npm run tauri dev   # or: npm run tauri build

MIT licensed. Issues, PRs, and strong opinions welcome — contribute on GitHub.

Donate to keep Canopy independent