Every technology in Canopy was chosen to keep the app light, local, and honest about what an IDE actually needs in the agent age.
Canopy's core is written in Rust, terminals, process management, file watching, and git all run in native code, which is why it idles around 5% CPU and roughly 120 MB while managing a whole team of agent sessions.
The desktop shell is Tauri: instead of bundling a whole Chromium browser and Node.js runtime like Electron, it renders the interface in your OS's own webview and drives everything else from the Rust core, a binary measured in megabytes, not hundreds.
The interface layer is written in TypeScript and built with Node, its job is deliberately small (the launcher, terminals, RUNS rail, and diffs), while the heavy lifting lives in Rust.
Agent CLIs run in genuine PTY-backed terminals with full TUI support, and dev servers and run commands are real child processes of the app, no daemon, no background service, nothing left running when you close Canopy.
Diffs, staging, stash, branches, worktrees, and history are implemented natively in the core rather than delegated to a bundled extension, which is what makes the side-by-side diff against HEAD live and instant.
Canopy has no extension marketplace and no plug-in API, a security decision, since every plug-in ecosystem is a supply chain and the code we ship is the only code that runs.
The trade-off is that Canopy gets the essentials right out of the box: Markdown, CSVs, Excel spreadsheets, Word documents, PDFs, and images all open natively, with no configuration and no "install the recommended extension?" prompts.
There is no account system, no telemetry, and no cloud component, your code, sessions, and agents' API keys stay on your machine, and 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.