Every technology in Canopy was chosen to keep the app light, local, and honest about what an IDE actually needs in the agent age. Here's the stack — and the reasoning behind each choice.
Canopy's core is written in Rust. Terminals, process management, file watching, and git operations all run in native code — no garbage-collection pauses, no runtime overhead, and memory usage that stays predictable no matter how many agents you have running. It's why Canopy idles around 5% CPU and roughly 120 MB while managing a whole team of agent sessions.
The desktop shell is Tauri. Instead of bundling an entire Chromium browser and Node.js runtime the way Electron apps do, Tauri renders the interface in your operating system's own webview and drives everything else from the Rust core. The result is a binary measured in megabytes, not hundreds of them — and an app that feels like a native citizen of your machine, because it is one.
The interface layer is written in TypeScript and built with Node — which is why building from source needs only Rust (stable) and Node 20+. The UI's job is deliberately small: show the launcher, the terminals, the RUNS rail, and the diffs. The heavy lifting lives in Rust.
Agent CLIs run in genuine PTY-backed terminals with full TUI support — claude, vim, htop, and tmux behave exactly as they would in your favourite terminal emulator. Dev servers and run commands are real child processes of the app: no daemon, no background service, no server component. When you close Canopy, nothing of it is left running.
Diffs, staging, stash, branches, worktrees, and history are implemented natively in the core rather than delegated to a bundled extension. That's what makes the side-by-side diff against HEAD live and instant — reviewing what your agents changed is the heart of the workflow, so it can't be an afterthought.
Canopy has no extension marketplace and no plug-in API. That's not a missing feature; it's a security and simplicity decision. Every plug-in ecosystem is a supply chain: third-party code, updated on its own schedule, running with your IDE's privileges. Compromised extensions are a recurring attack vector in editors that allow them. In Canopy, the code we ship is the only code that runs — there is simply no channel for a rogue plug-in to reach you.
The trade-off is that Canopy has to get the essentials right out of the box — so it does. Markdown, CSVs, Excel spreadsheets, Word documents, PDFs, and images all open natively in the workspace. No hunting through a marketplace, no configuration, no "install the recommended extension?" prompts. It works the moment you install it.
There is no account system, no telemetry, and no cloud component. Your code, your sessions, and your agents' API keys stay on your machine. Canopy works fully offline; the only network traffic is whatever your agents and dev servers make themselves.
The whole stack is open — read the source on GitHub, build it yourself with Rust and Node, and see every choice for what it is.