Every new feature the day they ship it: the real CLIs on your own Pro / Max plan, no vendor backend.
Install · What it does · Sandbox · vs. Conductor · Contributing
Termic is a free, open-source desktop app that runs your AI coding-agent CLIs
side by side, each isolated in its own git worktree, with an optional per-workspace
macOS sandbox cage. It spawns the real claude, codex, agy (Antigravity),
copilot and grok binaries (not the vendor SDKs), so inference rides on the Pro / Max plan you
already pay for. Spin up four agents on the same branch, broadcast one prompt to
all of them, watch a reliable work-done indicator tell you the moment each finishes.
The recommended path is Homebrew + the official tap:
brew install --cask simion/termic/termicThat single command auto-taps simion/homebrew-termic, downloads the
latest .dmg, and installs Termic.app into /Applications. Termic is
signed with a Developer ID certificate and notarized by Apple, so there's
no Gatekeeper warning.
Updates: Termic ships with a self-updater. When a new release lands you'll see an Update X.Y.Z pill in the top-right of the toolbar; click it to download + verify + relaunch. To check manually:
brew upgrade --cask termic.dmg, .app.tar.gz, and the ed25519 signature for each version live at
the Releases page. The .dmg
is signed and notarized by Apple, so it opens on first launch with nothing
else to do.
Download termic_<version>_amd64.AppImage from the
Releases page, make it
executable, and run it:
chmod +x termic_*_amd64.AppImage
./termic_*_amd64.AppImageThe AppImage is ed25519-signed by the same CI flow as the macOS build,
so the in-app updater works the same way: a new release appears as the
Update X.Y.Z pill in the top-right, click to download + verify +
relaunch. Keep the AppImage somewhere writable like ~/Applications/
so the updater can replace it in place.
The sandbox feature is macOS-only on Linux: the workspace's Shield toggle is disabled and agents run unsandboxed. Everything else (worktrees, parallel tabs, find-in-files, themes, in-app diff) works the same.
Wayland note: if fonts render thin, force X11 with GDK_BACKEND=x11
in front of the launch command (or in the .desktop file's Exec=).
git clone https://github.com/simion/termic
cd termic
make setup # brew/rust/node + npm install + cargo check
make install # build, copy to /Applications, launchmake dev (vite HMR + Rust auto-rebuild) is the iteration loop — see
CONTRIBUTING.md if you plan to hack on the code.
The signed AppImage on the
Releases page is the
recommended path for most users — see Linux (AppImage)
above. Build from source if you want to hack on it, ship a .deb /
.rpm for your own distro packaging, or run an unreleased commit.
Prerequisites — Debian / Ubuntu (24.04+ has WebKitGTK 4.1):
sudo apt update
sudo apt install -y \
build-essential curl wget file git pkg-config \
libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev \
librsvg2-dev libssl-dev libsoup-3.0-dev libxdo-dev
# Rust stable
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
. "$HOME/.cargo/env"
# Node 20+ — distro package, nvm, fnm, asdf, or mise (whichever you use)Fedora:
sudo dnf install -y \
@development-tools curl wget file git pkgconfig \
webkit2gtk4.1-devel gtk3-devel libappindicator-gtk3-devel \
librsvg2-devel openssl-devel libsoup3-devel libxdo-develArch:
sudo pacman -S --needed base-devel curl wget file git pkgconf \
webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg openssl libsoup3 xdotoolBuild and install:
git clone https://github.com/simion/termic
cd termic
npm install
npm run tauri build # ~5 min first time, faster on incrementalThe bundles land under src-tauri/target/release/bundle/. Pick whichever
fits your distro:
# Debian / Ubuntu / Pop / Mint
sudo apt install ./src-tauri/target/release/bundle/deb/termic_*_amd64.deb
# Fedora / RHEL / openSUSE
sudo dnf install ./src-tauri/target/release/bundle/rpm/termic-*.x86_64.rpm
# Distro-agnostic — no install needed, just make it executable and run
chmod +x src-tauri/target/release/bundle/appimage/termic_*_amd64.AppImage
./src-tauri/target/release/bundle/appimage/termic_*_amd64.AppImageAfter the .deb / .rpm install, "Termic" shows up in your application
launcher. The in-app updater only knows how to replace the AppImage in
place — .deb / .rpm users upgrade via git pull && npm run tauri build
- reinstall.
If the window looks slightly off — an empty gap on the left of the top bar, for example — that's the 84px reservation for macOS traffic-light controls. Harmless, will be cleaned up when the cross-platform chrome lands.
Wayland note: if fonts render thin, force X11 with
GDK_BACKEND=x11 termic (or set it in the .desktop file's Exec=).
Same story: no prebuilt binaries, build works, sandbox is a no-op. On Windows 11 (or Windows 10 with WebView2 Evergreen installed):
- Install Microsoft C++ Build Tools (the "Desktop development with C++" workload).
- Install Rust stable (rustup).
- Install Node 20+ and Git for Windows.
Then in PowerShell:
git clone https://github.com/simion/termic
cd termic
npm install
npm run tauri build # → src-tauri\target\release\bundle\msi\The .msi is unsigned — Windows SmartScreen will warn on first run.
Click More info → Run anyway (or sign it yourself for distribution).
See CONTRIBUTING.md for the full dev guide.
Every agent runs inside a real PTY, the same binary you'd launch in iTerm, so there's nothing between you and the CLI. No vendor SDK (which bills against a separate credit pool as of June 2026), no metered markup, no backend daemon. Here's what the window gives you on top:
- Parallel worktrees. Each workspace is a git worktree under
~/termic/workspaces/<project>/<name>/. Run N agents against the same branch across tabs; attach to repo root when you don't want a worktree; duplicate a worktree to spin up a parallel attempt off the same tip. - Command palette (⌘K). Search and run any action — new workspace, file picker, find-in-files, rename, archive, YOLO, sandbox, theme, sidebars, settings — from one place, each with its shortcut inline. ⌘N is a quick project picker: fuzzy-find any repo and start a workspace without touching the sidebar.
- Multi-repo workspaces. Group N repos (backend, frontend, infra) under one workspace with a shared CLAUDE.md and per-member dev-server ports. File finder, find-in-files, and the diff view span every member.
- Broadcast & Brainstorm. Send a single prompt to every agent in a workspace concurrently (⇧⌘B). Perfect for multi-agent code reviews, architectural brainstorming, or getting four "second opinions" on a complex bug in seconds.
- Config as Code (
.termic.yaml). Persist all project-specific settings—setup scripts, run commands, preview URLs, and sandbox allowlists—into a.termic.yamlfile. Commit it to your repo so your whole team gets the same optimized agent environment instantly. - Per-workspace sandbox (macOS). Filesystem + network cage via
sandbox-execand an in-process HTTPS CONNECT proxy with a hostname allowlist. Lets the agent run with--dangerously-skip-permissionssafely — the cage is the boundary, not the prompt. - Sidebar Cockpit. Expand any workspace in the sidebar to see all its active agents, their live work-done indicators, and their agent-managed titles at a glance.
- Work-done indicator that's actually reliable. Per-CLI title classifier (Claude spinner, etc.) plus OSC 9;4, gated by byte-quiet and content-hash checks. This reliability enabled opt-in desktop notifications that only fire when an agent actually finishes a turn.
- Message Queues. Built on top of work-done detection: queue N messages (with optional repeats) to run autonomous "Ralph loop" sessions.
- Auto-Resume Everything. Termic auto-resumes sessions even for repo-root workspaces. The latest update now auto-resumes ALL agent tabs in a workspace, not just the primary one.
- Spotlight. Mirror one worktree's changes — committed, uncommitted, and untracked — into your repo root in real time, so your editor, dev server, and browser see the agent's work live. It runs on a detached HEAD and never commits to your branch; disabling it cleanly restores the checkout. (Conductor checkpoints your branch; Spotlight doesn't touch it.)
- Find + edit in-app. ⌘P fuzzy file finder, ⇧⌘F find-in-files
(
git grep, .gitignore-aware, streams live). CodeMirror 6 editor with side-by-side / unified diffs and Markdown preview (including inline Mermaid diagrams). - Fork-style Git UI. A dedicated staging area inspired by the Fork app. Stage, unstage, and commit without dropping to a terminal.
- AI review: open the Review dialog, pick an agent, it gets the diff
- a review prompt and starts streaming. Or leave GitHub-style inline comments on the diff yourself — they batch into one message and fire to the agent on send.
- Prompt library. Save reusable prompts and fire them at a running or fresh agent from the top menu. Ships with Review, Write tests, Security review, Explain changes, and Commit; queues automatically if the agent is busy.
- Bring your own agent. Settings → Agents is an editable registry. Drop in aider, ollama, a shell script — 30 seconds. Claude, Codex, Antigravity, Copilot, Grok, and opencode ship as built-ins.
- Keyboard-first. ⌘K command palette, ⌘1..9 swaps tabs, ⌥↑/↓ walks the visible sidebar tree, ⌥⌘↑/↓ hops workspace-only, ⌘D / ⇧⌘D split right / bottom, ⌘T spawns a new tab, ⌘W closes one. Every shortcut is rebindable in Settings → Shortcuts (⌘/ for the searchable cheat sheet). Seven themes (System, Light, Claude, Dark+, Solarized Dark, Cobalt, Matrix), each re-themes both chrome and the terminal pane. Or bring your own: drop a JSON file in the themes folder and it appears in the picker as a first-class theme — see docs/themes.md.
- Terminal niceties. xterm.js + WebGL, OSC 52 clipboard (copy out of a container or over SSH), optional copy-on-select, inline images, clickable links, and drag-and-drop file paths.
Optional per-workspace macOS Seatbelt (sandbox-exec) + an in-process
HTTPS CONNECT proxy per workspace. Configured per project, pinned per
workspace at creation (editable later from the workspace's Shield icon),
enforced from the moment the agent spawns.
The cage:
- Writes restricted to the worktree, agent config dirs (
~/.claude,~/.codex), package caches (~/.npm,~/.cache,~/.cargo/registry), and TMPDIR. Always-denied:~/.ssh,~/.aws,~/.gnupg,~/.netrc,~/.docker/config.json,~/.kube, Keychains. - Network restricted via an in-process CONNECT proxy with a regex
hostname allowlist. Per-CLI vendor APIs (anthropic / google / openai)
- GitHub + npmjs + PyPI + crates.io baked in. Add custom hosts per project. No external daemon — the proxy lives inside the Tauri binary, so there's nothing extra to install.
- YOLO auto-on inside the cage. The seatbelt profile IS the security
boundary, so the agent's own permission prompts are skipped. The toolbar
lightning icon turns red when YOLO is on without a sandbox (intentional
danger signal — agents can
rm -rf $HOMEat that point).
For the full sandbox design — including the recent-denies debug panel and the auto-restart-on-edit flow — see CLAUDE.md §"Sandbox".
- macOS: first-class — universal binary (Apple Silicon + Intel), signed updater, Homebrew cask. Requires macOS 12+ (Monterey).
- Linux: x86_64 AppImage shipped per release, signed by the same ed25519 key as the macOS build so the in-app updater works. ARM Linux + a Flathub submission are on the roadmap.
- Windows: build-from-source works today (Tauri 2 + WebView2). No prebuilt binaries yet — CI matrix entry is on the roadmap.
- Sandbox: macOS-only (
sandbox-execis Apple's frontend to Seatbelt). On Linux + Windows the Shield toggle is disabled and agents run unsandboxed.
The honest pitch — see termic.dev/vs/conductor for the full version with explanations.
| Termic | Conductor | |
|---|---|---|
| License | Open source (AGPL-3.0) | Closed source, proprietary |
| Price | Free | Paid |
| Parallel agents in git worktrees | ✓ | ✓ |
| Attach an agent to the repo root (no worktree) | ✓ | ✗ (worktree per workspace only) |
Runs claude |
✓ | ✓ |
Runs codex |
✓ | ✓ |
| Bring your own agent (PTY-based) | ✓ — opencode, aider, ollama, anything that runs in a terminal | ✗ |
| Multi-repo workspaces | ✓ — N repos under one wrapper, shared CLAUDE.md, per-member ports | ✗ |
| Sync a worktree into the repo root live | ✓ — Spotlight, detached HEAD, never commits to your branch | ◐ Checkpoints onto your branch |
| Command palette + fuzzy project / file switch | ✓ — ⌘K / ⌘N / ⌘P | varies |
| Uses Claude Pro / Max subscription quota | ✓ — spawns the interactive claude CLI directly |
◐ Routes through the Claude Agent SDK |
| Monthly Claude cost on top of your Pro / Max plan | $0 — same quota as running claude in iTerm |
Capped by the separate SDK credit ($20 / $100 / $200) |
| Local-only, no vendor backend in the loop | ✓ | ✗ — vendor-hosted services |
| Per-workspace macOS sandbox (filesystem + network) | ✓ — Seatbelt + in-process network allowlist | ✗ |
| Work-done indicator from real PTY signals | ✓ — OSC 9;4 + per-CLI title classifier, no idle guessing | ✗ |
| Side-by-side ⇄ unified diff with syntax highlighting | ✓ | varies |
| Platforms | macOS + Linux today (signed AppImage); Windows on the way | macOS |
If you already pay for a Claude Pro / Max plan, Termic spawns the same
claude binary that plan covers — no separate metered usage, no
per-token markup. The agent and Anthropic still see the same auth they'd
see in iTerm.
Two lists, and the difference between them is a commitment.
Planned is what will be built. Each one has an issue labelled
planned,
and that issue is where its progress lives.
Ideas are not committed to. Most have a write-up under
docs/ideas/ arguing the case, and several are detailed
enough to build from, but none of them is decided. They deliberately have
no tracking issue: an issue implies someone intends to do it. Open one, or
comment on the discussion linked below, if you want to make the case or
pick something up.
Approved ideas move to docs/plans/ as implementation-ready
specs and get an issue at the same time. That is the whole promotion path:
docs/ideas/ → docs/plans/ + a planned issue → built.
- Code intelligence via language server plugins. (#174) Cmd-click go-to-definition, find class / symbol, hover types, inline diagnostics. Pluggable language servers (rust-analyzer, typescript-language-server, pyright, gopls) resolved from the user's toolchain automatically, with a fast heuristic pass (ripgrep + tree-sitter) for languages that have no server present. The commenting half of #174 shipped in 0.27.0; this is the code-navigation half. Design and measurements in docs/plans/lsp.md.
- Mobile app. (#165) A companion app for checking on and steering tasks while away from the Mac.
- MCP server endpoint. (#176) A scoped control plane an agent can call without being handed a terminal. The 2026-07-28 spec revision made the protocol stateless, so a per-task bearer token can finally answer which task is calling and what it may do, which is the narrowest grant a sandboxed agent could be given. Design in docs/plans/mcp.md.
- Docker-based sandboxing. (#231) An opt-in, more brutal alternative to Seatbelt: each agent inside a container off an editable Dockerfile, seeing only the paths you mount. Cross-platform for free, and it pairs with per-agent credential injection so secrets need not be mounted at all. This also closes the Linux/Windows sandbox-parity gap, a container is the same isolation boundary on every platform, so there is no separate bubblewrap/landlock or AppContainer backend to build. Design in docs/plans/docker-sandbox/.
- On-device dictation for agent prompts. Prompts to a coding agent are
prose, and one dictated prompt can be broadcast to four agents at once.
macOS 26's
SpeechAnalyzerruns entirely on device, which is the only way this belongs in an app that is otherwise wholly local. Apple Silicon and macOS 26+ only, so strictly additive. Discussion in #178. - Intentional agent-driven orchestration. The plumbing already ships:
an agent can spawn a task with
--wait, prompt another, read its result and branch on the exit code. What is missing is intent, and an opinion about shape (fan out, queue behind, supervisor and workers). docs/ideas/agent-orchestration.md. - Agent lifecycle hooks, measured against OSC detection. Termic infers "the agent finished" from the terminal stream, which needs no config and survives the sandbox. Every supported CLI now also exposes hooks that say it outright. Whether that earns a place in a user's agent config is an open question, and the first step is measurement, not implementation. docs/ideas/agent-hooks.md.
- Windows support, then Windows prebuilts. Linux AppImage CI is live; the Windows MSI is the matching matrix entry, and it depends on the app compiling on Windows at all. The audit in docs/ideas/windows.md is a prediction: nothing in it has been built on Windows yet.
- Spaces. A named, colored group of projects with its own window, so work and personal projects stay in separate windows. docs/ideas/spaces.md.
- Ambient agent status. A Dock tile, or a strip beside the Dock, showing what every agent is doing without bringing the window forward. docs/ideas/dock-widget.md.
- Import Warp and Ghostty themes. Termic has a native JSON theme format, but two large theme ecosystems already exist and neither is ours. Scan both directories, translate, and let people pick from the library they already collected.
- Linear + GitHub PR integration. Paste an issue or PR URL, get a task
seeded with its title and body; create the PR from the app via
gh. No OAuth. - Opt-in usage telemetry. Anonymous, off by default, one toggle: which features are used and how often, plus crash reports. No code, no prompts, no file paths, no agent output, no project names.
- Termic in the official Homebrew cask repository. Today the install
path is this repo's own tap, so it takes a
brew tapfirst. Upstream would make it plainbrew install --cask termic. The cask is ready (the.dmgis signed and notarized, and itslivecheckmakes it autobump-eligible), and Homebrew/homebrew-cask#274896 is filed and closed on one thing only: notability. Homebrew asks for 90 forks, 90 watchers or 225 stars when the author submits their own software. The forks already clear the third-party bar, so stars are the realistic lane, and at 225 the same PR gets reopened.
Termic is free, AGPL-3.0, and built by its author and a growing group of dedicated open-source contributors. If your team builds on AI coding agents and finds it useful, sponsoring helps keep it moving.
![]() |
|---|
Also sponsoring: Vyttle, Sage Haven.
AGPL-3.0-or-later. Fork it, modify it, build a derivative — the only string is that derivatives stay AGPL too. The "open core that quietly went proprietary" pattern can't happen with this license, which is most of the point.
- Website: termic.dev
- Issues: github.com/simion/termic/issues
- Releases: github.com/simion/termic/releases
- Homebrew tap: github.com/simion/homebrew-termic
- Contributing: CONTRIBUTING.md
- Architecture notes (for hackers + AI agents working in this repo): CLAUDE.md
