Introducing Daintree
This post was originally published as "Introducing Canopy." The project has since been renamed to Daintree — same app, same code, same workflow, new name. We've updated the copy below to reflect the rename but kept the original URL intact.
I've been working on something for the past few months and it's finally ready to share. Daintree is a desktop app for running CLI coding agents in parallel. Claude Code, Gemini CLI, Codex, OpenCode, or really any terminal-based agent you prefer. One window, multiple agents, each isolated in its own Git worktree so they can't step on each other's files.
The part I'm most pleased about is the state detection. Daintree watches each terminal and works out whether an agent is busy, waiting for your input, or finished. It's heuristic-based (pattern matching on PTY output), but it means you can actually see what's going on across all your agents at a glance instead of cycling through tabs.
There's a unified input bar with @file references and /slash commands that work the same regardless of which agent you're talking to. Built-in dev server preview so you can see what agents are building. GitHub integration for spinning up worktrees directly from issues and PRs. And notifications when agents change state so you're not constantly checking.
Daintree is not an IDE and isn't trying to be one. No code editor, no file tree. It sits alongside whatever editor you already use. It's also completely agent-agnostic. Models change fast, and the workspace layer shouldn't care which one you're running this week.
This is early and there are definitely rough edges. But the core workflow is solid and I've been using it daily for my own work. The full source is on GitHub, Apache 2.0 licensed, free, no account needed. If you're already juggling AI coding agents in terminal tabs, give it a go and let me know what you think.