TermCanvas is a terminal management tool designed to transform how you interact with multiple terminals. By presenting them on an infinite spatial canvas, TermCanvas eliminates the need for tabs or split panes, allowing users to drag, zoom, and organize terminals freely.
Key Features:
Infinite Canvas Navigation: Pan and zoom across an endless workspace to arrange terminals as needed.
Project → Worktree → Terminal Hierarchy: Organizes your workflow to mirror git usage, automatically detecting worktrees and updating in real time.
Real-Time Updates: New worktrees created from the terminal appear instantly on the canvas.
Infinite Canvas Tool: Draw, annotate, or group terminals with free-form sketches directly on the workspace.
Save Layouts: Export your entire setup to a .termcanvas file for easy restoration.
AI Coding Agent Support: First-class integration with Claude Code, Codex, Kimi, Gemini, and OpenCode, featuring status indicators, conversation tracking, and inline diff cards.
Git Integration: Built-in commit history, diffs, and live git status within the sidebar.
Terminal Types: Supports shell, lazygit, tmux, and AI agents, with custom titles and starred terminals for quick access.
Usage Tracking: Monitors spending on Claude and Codex, broken down by model, with quota meters for rate limits.
Customizable Settings: Adjustable themes, keyboard shortcuts, fonts, and language preferences (English or Chinese).
Audience & Benefit:
Ideal for developers and teams working across multiple projects and terminals, TermCanvas streamlines workflow organization and collaboration. Its canvas-based approach reduces tab clutter and enhances focus, while real-time updates and AI integration accelerate development cycles.
Install via winget to experience a more intuitive and productive terminal management solution.
TermCanvas spreads all your terminals across an infinite spatial canvas — no more tabs, no more split panes. Drag them around, zoom in to focus, zoom out to see the big picture.
It organizes everything in a Project → Worktree → Terminal hierarchy that mirrors how you actually use git. Add a project, and TermCanvas auto-detects its worktrees. Create a new worktree from the terminal, and it appears on the canvas instantly.
> New to TermCanvas? Read the full User Guide — every interaction explained, every keyboard shortcut, plus the non-obvious tricks (⌘E focus chain, drag-to-stash, session replay, etc.).
> [!IMPORTANT]
> Apple Silicon (M-series) Macs — pick the file with arm64 in its name
> Files witharm64 in the filename (e.g. TermCanvas-X.Y.Z-arm64.dmg, TermCanvas-X.Y.Z-arm64-mac.zip) are native Apple Silicon builds. Files are Intel (x64) builds — they'll still launch on M-series Macs via Rosetta 2, but you'll see noticeable lag when panning/zooming the canvas.
>
> To verify after install: open , find TermCanvas, and check the column — it should say , not . If it says Intel, delete the app and redownload the variant.
> [!WARNING]
> macOS note for unsigned builds
> If macOS says TermCanvas is damaged or blocks launch because the app is unsigned, clear the quarantine attribute and try again:
>
> bash > xattr -cr /Applications/TermCanvas.app >
>
> If you installed the app somewhere else, replace the path with the actual app location.
Build from source:
This workspace uses pnpm, and pnpm-lock.yaml is the canonical lockfile.
git clone https://github.com/blueberrycongee/termcanvas.git
cd termcanvas
pnpm install
pnpm dev
Install CLI tools — after launching the app, go to Settings → General → Command line interface and click Register. This adds termcanvas and hydra to your PATH.
Registration also installs TermCanvas skills and lifecycle hooks for Claude/Codex. For Codex 0.129.0 and newer, TermCanvas writes the required hook trust state in ~/.codex/config.toml so the generated hooks are reviewed/trusted and continue to emit terminal lifecycle and telemetry events.
Features
Canvas
Infinite canvas — pan, zoom, and arrange terminals freely. Three-layer hierarchy: projects contain worktrees, worktrees contain terminals. New worktrees appear automatically as you create them.
Double-click a terminal title bar to zoom-to-fit. Drag to reorder. Box-select multiple terminals. Draw and annotate freely on the canvas itself with the Free Canvas tool — sketches, callouts, and grouping lines live alongside your terminals. Save your entire layout to a .termcanvas file.
AI Coding Agents
First-class support for Claude Code, Codex, Kimi, Gemini, and OpenCode.
Glance at any tile to know what it's doing — a coloured status dot tells you whether the agent is thinking, awaiting input, idle, or done
Pick up where you left off — close and reopen an agent terminal without losing the conversation
Review changes in place — inline diff cards let you read an agent's edits without leaving the canvas
Sessions Panel
Every past Claude / Codex conversation in your projects, organised as projects → worktrees → sessions. Click any row to replay it, or jump straight to the running terminal. Worktrees show their live git status so you can tell at a glance what's clean.
Git
Commit history, diff viewer, and live git status — built into the sidebar so you never need to leave the canvas to check what changed.
Terminals
Shell, lazygit, and tmux terminals live alongside AI agents on the same canvas. Star the ones you keep coming back to (⌘F) and cycle through just those with ⌘] / ⌘[ — use ⌘G to choose whether you're cycling all terminals, just starred, or whole worktrees. Custom titles, per-agent CLI override, and your preferred terminal size is remembered after the first manual resize.
Usage Tracking
Track how much you're spending on Claude and Codex — across all projects, broken down by model, with quota meters for the 5-hour and 7-day rate limits. Sign in to keep usage in sync across devices.
Settings
Downloadable monospace fonts · dark / light theme · rebindable keyboard shortcuts · adjustable contrast for accessibility · English and Chinese · in-app auto-update.
CLI
Both CLIs are bundled with the app. Register them from Settings to use in any terminal.
termcanvas
Full command reference
Usage: termcanvas [args]
Groups:
project add | list | remove | rescan
worktree list | create | remove
terminal create | list | status | output | destroy | set-title
workflow Lead-driven Hydra workflow over HTTP (init / dispatch / watch …)
telemetry get | events
computer-use status | enable | setup | disable | stop | list-apps
| open-app | get-app-state | click | type | press-key | scroll | drag
pin add | list | show | update | rm
diff [--summary]
state dump full canvas state as JSON
Common shapes:
project add
worktree create --repo --branch [--from ]
terminal create --worktree --type
[--prompt ] [--parent-terminal ] [--auto-approve]
terminal output [--lines N] # default 50
telemetry get --terminal
telemetry get --workflow --repo
pin add --title [--body <b>] [--link ] [--link-type ]
Flags:
--json Machine-readable output for any command
termcanvas project add ~/my-repo
termcanvas terminal create --worktree ~/my-repo --type claude --prompt "Audit the auth flow and fix the root cause"
termcanvas terminal status
termcanvas telemetry get --terminal
termcanvas diff ~/my-repo --summary
For Claude/Codex task automation, start a fresh terminal with termcanvas terminal create --prompt "...". termcanvas terminal input is not a supported dispatch path.
hydra
Hydra is TermCanvas's terminal orchestration toolkit for Lead-driven workflows and isolated direct workers. It coordinates git worktrees, assignment/run file contracts, and the telemetry truth layer without taking control away from the agent sessions themselves.
Hydra is now Lead-driven. One main terminal owns the workbench, reads the codebase, and decides what to do at each decision point. Worker terminals stay autonomous. Workbench state lives under repo-local .hydra/workbenches/, and the authoritative contract is on disk: inputs/intent.md, dispatches//intent.md, report.md, result.json, and ledger.jsonl. Terminal prose is advisory only; validated result.json is the machine gate.
Role-driven workflows currently target Claude/Codex through the Hydra role registry. If you only need one isolated worker without a Lead-driven DAG, use hydra spawn instead.
Run hydra init-repo in your project (or click Enable Hydra in the worktree header) to sync the Hydra instructions into CLAUDE.md / AGENTS.md. Then either talk to your main agent, or drive the workflow yourself:
> Write a PRD or describe your requirements clearly, then tell the agent:
>
> "Read the Hydra skill. I want you to choose the right mode and autonomously complete this task based on the PRD in docs/prd/auth-redesign.md."
The main agent should classify the task and pick the lightest fitting path:
Stay in current agent — simple or local tasks, no orchestration overhead
hydra spawn — a direct isolated worker when the task is clear and self-contained
hydra init + dispatch + watch — Lead-driven workflow for ambiguous, risky, parallel, or multi-step work
hydra init-repo
hydra init --intent "Add OAuth login" --repo .
hydra dispatch --workbench --dispatch dev --role dev \
--intent "Implement OAuth login and the tests that cover it" --repo .
hydra watch --workbench --repo .
hydra dispatch --workbench --dispatch review --role reviewer \
--intent "Independent review of the OAuth change" \
--depends-on dev --repo .
hydra watch --workbench --repo .
hydra complete --workbench --repo .
Role files choose the CLI / model / reasoning profile. The caller chooses the role; Hydra resolves the terminal from that role definition.
Full command reference
Usage: hydra [options]
Lead-driven workbench:
init Create a workbench context
dispatch Dispatch a unit of work into a workbench
watch Wait until a decision point is reached
redispatch Re-run an eligible/reset dispatch
approve Mark a dispatch output as approved
reset Reset a dispatch (and downstream by default) for rework
ask Ask a completed dispatch a follow-up question via session resume
merge Merge completed parallel dispatch branches
complete Mark a workbench as completed
fail Mark a workbench as failed
Inspection:
status Show structured workbench + assignment state
ledger Show workbench event log
list List direct spawned agents (pass --workbenches for workbenches)
list-roles Show available role definitions
Housekeeping:
spawn Create one direct isolated worker terminal
cleanup Clean up workbench state or direct spawned workers
init-repo Sync Hydra instructions into CLAUDE.md and AGENTS.md
Example commands
# Repo setup
hydra init-repo
# Start a Lead-driven workbench
hydra init --intent "fix the login bug" --repo .
# Dispatch a unit of work and wait for the decision point
hydra dispatch --workbench --dispatch dev --role dev \
--intent "Fix the login bug and add regression coverage" --repo .
hydra watch --workbench --repo .
# Ask a completed dispatch a follow-up question without re-running it
hydra ask --workbench --dispatch dev \
--message "Why did you change the session validation path?" --repo .
# Send a dispatch back for rework
hydra reset --workbench --dispatch dev \
--feedback "The fix regressed the refresh-token path. Rework it." --repo .
hydra redispatch --workbench --dispatch dev --repo .
# Direct isolated worker
hydra spawn --task "investigate the flaky CI failure" --repo .
# Inspection
hydra status --workbench --repo .
hydra ledger --workbench --repo .
hydra list --workbenches --repo .
hydra list-roles --repo .
# Cleanup
hydra cleanup --workbench --repo . --force
hydra cleanup --force
Lead-driven workbenches advance through validated result.json evidence inside .hydra/workbenches/. The telemetry truth layer provides real-time turn_state, last_meaningful_progress_at, derived_status, and session attachment data — used by both the UI and Hydra's watch / retry / health-check paths.
Typical workflow: write a PRD → run hydra init-repo once → let the Lead choose direct work vs spawn vs init/dispatch/watch → monitor via hydra watch or the canvas UI → read report.md before approving / resetting / completing. See Hydra Orchestration Guide for the control-plane details, and the Hydra Panoramic Flowchart for the updated state / file model.
Find your way around
A short map of where each major feature lives. Every shortcut here is rebindable in Settings → Shortcuts (Windows/Linux uses Alt in place of ⌘).
Discovery — when you don't know where something is
Shortcut
Surface
What it's for
⌘P
Command Palette
Run any in-app action by name (toggle a panel, open settings, switch theme, etc.)
⌘K
Global Search
Files, terminals, sessions, git branches/commits, memory — fuzzy across the canvas
⌘⇧J
Hub
Right-anchored command center: live terminals, recent activity, waypoints, pinned items
⌘⇧/
Status Digest
Quiet floating chip with the 3–5 most relevant signals across the canvas
Canvas navigation
Shortcut
Action
⌘E
Toggle focus — zoom into focused terminal / out to fit
⌘0 · ⌘1 · ⌘= · ⌘-
Zoom: fit · 100% · in · out
⌘] / ⌘[
Next / previous terminal (or worktree / starred — see ⌘G)
⌘G
Cycle focus level (terminal → worktree → starred)
⌘F
Star / unstar the focused terminal
⌘⇧1–9 · ⌥1–9
Save / recall a spatial waypoint (per project, 9 slots)
⌥`
Pan to whichever terminal had output most recently (cycles on rapid re-press)
V · H · Space(hold)
Select tool · Hand tool · Temporary pan
Multi-canvas
Shortcut
Action
⌘⇧] / ⌘⇧[
Next / previous canvas (each canvas owns its viewport, projects, waypoints)
⌘⇧N
Open Canvas Manager (rename, reorder, switch)
Terminals
Shortcut
Action
⌘T · ⌘D
New / close terminal in the focused worktree
⌘;
Open composer (or inline-rename the focused terminal title)
Panels & overlays
Shortcut
Action
⌘/
Toggle right panel (Files / Diff / Git / Memory)
⌘⇧U
Usage dashboard (cost & quotas)
⌘⇧H
Sessions overlay
⌘⇧T
Snapshot history (browse and restore canvas states, with diff)
Acknowledgements — lazygit is integrated as a built-in terminal type for visual git management on the canvas.
Roadmap
TermCanvas is evolving from a local desktop tool into a cloud-native AI development platform. Here's what's coming:
Cloud Runtime
Move task execution from your local machine to the cloud. Spin up AI agents on remote runtimes — your tasks run in managed environments with full git, toolchain, and dependency support, while your canvas remains the single pane of glass.
Hosted agent execution — delegate Claude, Codex, and other agent tasks to cloud workers with on-demand compute
Persistent remote sessions — close your laptop, come back later, your agents are still working
Parallel cloud workers — scale out Hydra workflows across multiple cloud instances instead of local terminals
Automated Vibe Pipeline
End-to-end automation from idea to shipped code, powered by cloud runtime:
Intent → Plan → Implement → Review → Merge — a fully automated pipeline where you describe what you want and the system handles the rest
Continuous vibe loop — agents plan, implement, self-review, and iterate autonomously until the result meets acceptance criteria
Pipeline-as-code — define reusable workflow templates for common tasks (bug triage, feature implementation, migration, refactoring)
Human-in-the-loop checkpoints — configurable approval gates at any stage for when you want to stay in control
Vision
The goal is simple: you describe intent, TermCanvas handles the rest. Your canvas becomes a mission control for autonomous AI development — monitor progress, review results, intervene when needed, and let the cloud do the heavy lifting.
Contributing — fork, branch, and open a PR. Licensed under MIT.