The Problem
Running multiple coding agents (Claude Code, Codex, etc.) in parallel produces a mess of terminal tabs with no visibility into which agent is blocked waiting for input, which is done, and which is still working. Coordinating agents across git branches on one machine typically means manual worktree juggling and constant context switching.
What This Does
Cate is an Electron-based infinite canvas IDE where terminals, editors, browsers, and viewer panels live as spatial objects. Agent-aware terminals detect turn start/end and permission prompts via a protocol (piRpcClient.ts), so each panel shows running/waiting/finished state and pings you when an agent needs input. One click creates a git worktree with its own colored canvas territory, keeping parallel branches visually separate.
The cateAgent module (src/cateAgent/main/, src/cateAgent/renderer/) is the agent orchestration layer: session management, auth, model pickers, chat UI, and subagent orchestration. A CLI (src/cli/cate.ts) lets agents drive the browser panel, read other terminals, and manage panels from inside a terminal.
How It Is Wired
Execution starts in index.html → the React renderer. The Electron main process (src/main/) owns windows, drag logic (dragLogic.ts), browser panels (browser/agentBrowser.ts), and extensions (extensions/ExtensionManager.ts).
The agent control path: renderer UI → src/cateAgent/renderer/cateAgentSend.ts → IPC (src/cateAgent/main/ipcCoding.ts) → codingManager.ts, which routes through piRpcClient.ts to talk to the external agent process over RPC. authManager.ts handles provider credentials; codingDir.ts and seedWorktreeChat.ts own worktree creation. The cateAgent/extensions/ directory holds four installable modes—cate-orchestrator, cate-plan-mode, cate-canvas-mode, cate-ask-user—each with its own index.ts and tests, installed via installOrchestrator.ts and siblings.
The widest blast radius sits in codingManager.ts (session lifecycle, all agent state) and cateAgentStore.ts (renderer state). Both are heavily tested—399 test files total, including concurrent/race tests (authManager.concurrent.test.ts, dockWindowFlush.races.test.ts). The store-to-manager-to-RPC chain is the path any new agent feature must touch.
How To Use It
# Install (recommended, from README)
brew install --cask cate
# Or download a prebuilt release for macOS/Windows/Linux
# Build from source (per CONTRIBUTING.md)
git clone https://github.com/moses-y/cate
cd cate
npm install
npm run dev
No configuration files required—open a folder and it becomes a workspace. Press Cmd+K for commands, panels, and files. Shortcuts are rebindable in Settings.
Real-World Use
Run five Claude Code agents on five branches. Each gets a worktree with its own canvas territory; Cate surfaces which agent is waiting on a permission prompt. When one blocks, you answer it in place without leaving the canvas. An agent can call cate from its terminal to open a file or drive a browser panel for verification.
Code Health & Issues
Deep analysis has not run for this repo yet; the following is from structure only.
- Low - Fork adds no README attribution to upstream
0-AI-UG/cate; verify license provenance before commercial use. - Med - No measured coverage data; 399 test files exist but pass/fail state requires running CI.
- Low -
research/browser-agent-architecture.mdandplan.mdsuggest active design work; docs may drift from code.
CI (ci.yml), release automation (release.yml), MIT license, and a lockfile are all present.
The Bottom Line
A well-tested, genuinely useful tool for parallel agent workflows—the agent-aware terminal protocol and worktree-per-canvas-territory model solve a real coordination problem. The fork is fresh (0 stars vs. 2106 upstream), so treat it as a snapshot of upstream rather than an independent project. Use it if you run multiple coding agents daily; fork upstream directly if you plan to extend it.