{"id":50249830,"url":"https://github.com/simion/termic","last_synced_at":"2026-06-08T01:01:19.110Z","repository":{"id":358563871,"uuid":"1241066010","full_name":"simion/termic","owner":"simion","description":"Open-source Conductor.build alternative. Runs the real claude/gemini/codex CLIs in real terminals, no SDK middleman","archived":false,"fork":false,"pushed_at":"2026-06-04T21:11:37.000Z","size":5273,"stargazers_count":24,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-04T23:06:30.282Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simion.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.json","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"},"funding":{"github":["simion"]}},"created_at":"2026-05-16T23:16:28.000Z","updated_at":"2026-06-04T21:11:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/simion/termic","commit_stats":null,"previous_names":["simion/termic"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/simion/termic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simion%2Ftermic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simion%2Ftermic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simion%2Ftermic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simion%2Ftermic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simion","download_url":"https://codeload.github.com/simion/termic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simion%2Ftermic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34043822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-27T01:09:12.239Z","updated_at":"2026-06-08T01:01:19.018Z","avatar_url":"https://github.com/simion.png","language":"TypeScript","funding_links":["https://github.com/sponsors/simion"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# termic\n\n**Run `claude`, `codex`, `gemini`, `grok`, and `agy` in parallel, each in its own git worktree.**\n\n[![Latest release](https://img.shields.io/github/v/release/simion/termic?label=release\u0026color=d97757)](https://github.com/simion/termic/releases/latest)\n[![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-d97757)](./LICENSE)\n[![macOS 12+](https://img.shields.io/badge/macOS-12%2B-d97757)](https://github.com/simion/termic/releases/latest)\n[![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-d97757)](#linux-appimage)\n[![Windows: build from source](https://img.shields.io/badge/Windows-build%20from%20source-d97757)](#windows-self-build-no-sandbox)\n[![termic.dev](https://img.shields.io/badge/website-termic.dev-d97757)](https://termic.dev)\n\nFree, open-source desktop app for running AI coding-agent CLIs in parallel,\neach in an isolated git worktree, with an optional macOS sandbox cage per\nworkspace.\n\n[Install](#install) · [What it does](#what-it-does) · [Sandbox](#sandbox) · [Contributing](./CONTRIBUTING.md)\n\n\u003c/div\u003e\n\n---\n\n## Install\n\nThe recommended path is Homebrew + the official tap:\n\n```sh\nbrew install --cask simion/termic/termic\n```\n\nThat single command auto-taps `simion/homebrew-termic`, downloads the\nlatest `.dmg`, and installs `Termic.app` into `/Applications`. No\nGatekeeper warning — the tap is configured to bypass it.\n\nUpdates: Termic ships with a self-updater. When a new release lands you'll\nsee an **Update X.Y.Z** pill in the top-right of the toolbar; click it\nto download + verify + relaunch. To check manually:\n\n```sh\nbrew upgrade --cask termic\n```\n\n### Direct download\n\n`.dmg`, `.app.tar.gz`, and the ed25519 signature for each version live at\nthe [Releases](https://github.com/simion/termic/releases) page. First\nlaunch may show the \"unidentified developer\" Gatekeeper prompt — right-click\nthe app → Open, or strip the quarantine attribute:\n\n```sh\nxattr -dr com.apple.quarantine /Applications/Termic.app\n```\n\n### Linux (AppImage)\n\nDownload `termic_\u003cversion\u003e_amd64.AppImage` from the\n[Releases](https://github.com/simion/termic/releases) page, make it\nexecutable, and run it:\n\n```sh\nchmod +x termic_*_amd64.AppImage\n./termic_*_amd64.AppImage\n```\n\nThe AppImage is ed25519-signed by the same CI flow as the macOS build,\nso the in-app updater works the same way: a new release appears as the\n**Update X.Y.Z** pill in the top-right, click to download + verify +\nrelaunch. Keep the AppImage somewhere writable like `~/Applications/`\nso the updater can replace it in place.\n\nThe sandbox feature is macOS-only on Linux: the workspace's Shield\ntoggle is disabled and agents run unsandboxed. Everything else\n(worktrees, parallel tabs, find-in-files, themes, in-app diff) works\nthe same.\n\nWayland note: if fonts render thin, force X11 with `GDK_BACKEND=x11`\nin front of the launch command (or in the `.desktop` file's `Exec=`).\n\n### Build from source\n\n#### macOS (first-class)\n\n```sh\ngit clone https://github.com/simion/termic\ncd termic\nmake setup          # brew/rust/node + npm install + cargo check\nmake install        # build, copy to /Applications, launch\n```\n\n`make dev` (vite HMR + Rust auto-rebuild) is the iteration loop — see\n[CONTRIBUTING.md](./CONTRIBUTING.md) if you plan to hack on the code.\n\n#### Linux (build it yourself)\n\nThe signed AppImage on the\n[Releases](https://github.com/simion/termic/releases) page is the\nrecommended path for most users — see [Linux (AppImage)](#linux-appimage)\nabove. Build from source if you want to hack on it, ship a `.deb` /\n`.rpm` for your own distro packaging, or run an unreleased commit.\n\nPrerequisites — Debian / Ubuntu (24.04+ has WebKitGTK 4.1):\n\n```sh\nsudo apt update\nsudo apt install -y \\\n  build-essential curl wget file git pkg-config \\\n  libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev \\\n  librsvg2-dev libssl-dev libsoup-3.0-dev libxdo-dev\n\n# Rust stable\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y\n. \"$HOME/.cargo/env\"\n\n# Node 20+ — distro package, nvm, fnm, asdf, or mise (whichever you use)\n```\n\nFedora:\n\n```sh\nsudo dnf install -y \\\n  @development-tools curl wget file git pkgconfig \\\n  webkit2gtk4.1-devel gtk3-devel libappindicator-gtk3-devel \\\n  librsvg2-devel openssl-devel libsoup3-devel libxdo-devel\n```\n\nArch:\n\n```sh\nsudo pacman -S --needed base-devel curl wget file git pkgconf \\\n  webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg openssl libsoup3 xdotool\n```\n\nBuild and install:\n\n```sh\ngit clone https://github.com/simion/termic\ncd termic\nnpm install\nnpm run tauri build           # ~5 min first time, faster on incremental\n```\n\nThe bundles land under `src-tauri/target/release/bundle/`. Pick whichever\nfits your distro:\n\n```sh\n# Debian / Ubuntu / Pop / Mint\nsudo apt install ./src-tauri/target/release/bundle/deb/termic_*_amd64.deb\n\n# Fedora / RHEL / openSUSE\nsudo dnf install ./src-tauri/target/release/bundle/rpm/termic-*.x86_64.rpm\n\n# Distro-agnostic — no install needed, just make it executable and run\nchmod +x src-tauri/target/release/bundle/appimage/termic_*_amd64.AppImage\n./src-tauri/target/release/bundle/appimage/termic_*_amd64.AppImage\n```\n\nAfter the `.deb` / `.rpm` install, \"Termic\" shows up in your application\nlauncher. The in-app updater only knows how to replace the AppImage in\nplace — `.deb` / `.rpm` users upgrade via `git pull \u0026\u0026 npm run tauri build`\n+ reinstall.\n\nIf the window looks slightly off — an empty gap on the left of the top\nbar, for example — that's the 84px reservation for macOS traffic-light\ncontrols. Harmless, will be cleaned up when the cross-platform chrome\nlands.\n\nWayland note: if fonts render thin, force X11 with\n`GDK_BACKEND=x11 termic` (or set it in the `.desktop` file's `Exec=`).\n\n#### Windows (self-build, no sandbox)\n\nSame story: no prebuilt binaries, build works, sandbox is a no-op.\nOn Windows 11 (or Windows 10 with WebView2 Evergreen installed):\n\n1. Install [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) (the \"Desktop development with C++\" workload).\n2. Install [Rust stable](https://www.rust-lang.org/tools/install) (rustup).\n3. Install [Node 20+](https://nodejs.org/) and [Git for Windows](https://git-scm.com/download/win).\n\nThen in PowerShell:\n\n```powershell\ngit clone https://github.com/simion/termic\ncd termic\nnpm install\nnpm run tauri build              # → src-tauri\\target\\release\\bundle\\msi\\\n```\n\nThe `.msi` is unsigned — Windows SmartScreen will warn on first run.\nClick *More info → Run anyway* (or sign it yourself for distribution).\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for the full dev guide.\n\n---\n\n## What it does\n\nTermic spawns the real `claude` / `codex` / `gemini` / `grok` / `agy`\n(Antigravity) CLIs inside PTYs, the same binaries you run in iTerm. It\ndoes NOT use the vendor SDKs (which bill against a separate credit\npool as of [June 2026](https://thenewstack.io/anthropic-agent-sdk-credits/));\ninference rides on your existing Pro / Max plan.\n\n- **Parallel worktrees.** Each workspace is a git worktree under\n  `~/termic/workspaces/\u003cproject\u003e/\u003cname\u003e/`. Run N agents against the same\n  branch across tabs; attach to repo root when you don't want a worktree;\n  duplicate a worktree to spin up a parallel attempt off the same tip.\n- **Multi-repo workspaces.** Group N repos under one wrapper with shared\n  `CLAUDE.md` / `AGENTS.md`, per-member port forwarding (`$TERMIC_PORT_\u003cMEMBER\u003e`),\n  and one aggregated diff.\n- **Per-workspace sandbox** (macOS). Filesystem + network cage via\n  `sandbox-exec` and an in-process HTTPS CONNECT proxy with a hostname\n  allowlist. Lets the agent run with `--dangerously-skip-permissions`\n  safely — the cage is the boundary, not the prompt.\n- **Work-done indicator** that's actually reliable. Per-CLI title classifier\n  (Claude spinner, Gemini's `◇` / `✦` / `✋`, Codex `Working` / `Ready` /\n  `Waiting`) plus OSC 9;4, gated by byte-quiet and content-hash checks so\n  static-title \"thinking\" doesn't false-fire done. Blue bullet on the tab\n  when a turn finishes, orange bell when the agent is blocked on input,\n  optional OS notification that drops you on the right workspace and tab.\n- **Find + edit in-app.** ⌘P fuzzy file finder, ⇧⌘F find-in-files\n  (`git grep`, .gitignore-aware, streams live). CodeMirror 6 editor and\n  side-by-side / unified diff with syntax highlighting. \"Send to main\"\n  lands the worktree diff in the parent checkout.\n- **Broadcast** a prompt to every agent in a workspace at once (⇧⌘B).\n  **AI review**: open the Review dialog, pick an agent, it gets the diff\n  + a review prompt and starts streaming.\n- **Bring your own agent.** Settings → Agents is an editable registry.\n  Drop in aider, opencode, ollama, a shell script — 30 seconds. Claude,\n  Codex, Antigravity, Gemini, and Grok ship as built-ins.\n- **Keyboard-first.** ⌘1..9 swaps tabs, ⌥↑/↓ walks the visible sidebar\n  tree, ⌥⌘↑/↓ hops workspace-only, ⇧⌘D opens a split shell, ⌘T spawns a\n  new tab, ⌘W closes one. Seven themes (System, Light, Claude, Dark+,\n  Solarized Dark, Cobalt, Matrix), each re-themes both chrome and the\n  terminal pane.\n\n---\n\n## Sandbox\n\nOptional per-workspace macOS Seatbelt (`sandbox-exec`) + an in-process\nHTTPS CONNECT proxy per workspace. Configured per project, pinned per\nworkspace at creation (editable later from the workspace's Shield icon),\nenforced from the moment the agent spawns.\n\nThe cage:\n\n- **Writes restricted** to the worktree, agent config dirs (`~/.claude`,\n  `~/.gemini`, `~/.codex`), package caches (`~/.npm`, `~/.cache`,\n  `~/.cargo/registry`), and TMPDIR. Always-denied: `~/.ssh`, `~/.aws`,\n  `~/.gnupg`, `~/.netrc`, `~/.docker/config.json`, `~/.kube`, Keychains.\n- **Network restricted** via an in-process CONNECT proxy with a regex\n  hostname allowlist. Per-CLI vendor APIs (anthropic / google / openai)\n  + GitHub + npmjs + PyPI + crates.io baked in. Add custom hosts per\n  project. No external daemon — the proxy lives inside the Tauri\n  binary, so there's nothing extra to install.\n- **YOLO auto-on inside the cage.** The seatbelt profile IS the security\n  boundary, so the agent's own permission prompts are skipped. The toolbar\n  lightning icon turns red when YOLO is on *without* a sandbox (intentional\n  danger signal — agents can `rm -rf $HOME` at that point).\n\nFor the full sandbox design — including the recent-denies debug panel\nand the auto-restart-on-edit flow — see [CLAUDE.md](./CLAUDE.md)\n§\"Sandbox\".\n\n---\n\n## Status\n\n- **macOS:** first-class — universal binary (Apple Silicon + Intel),\n  signed updater, Homebrew cask. Requires macOS 12+ (Monterey).\n- **Linux:** x86_64 AppImage shipped per release, signed by the same\n  ed25519 key as the macOS build so the in-app updater works. ARM\n  Linux + a Flathub submission are on the roadmap.\n- **Windows:** build-from-source works today (Tauri 2 + WebView2). No\n  prebuilt binaries yet — CI matrix entry is on the roadmap.\n- **Sandbox:** macOS-only (`sandbox-exec` is Apple's frontend to\n  Seatbelt). On Linux + Windows the Shield toggle is disabled and\n  agents run unsandboxed.\n\n---\n\n## Why use Termic over Conductor\n\nThe honest pitch — see [termic.dev/vs/conductor](https://termic.dev/vs/conductor/) for the full version with explanations.\n\n| | Termic | Conductor |\n|---|---|---|\n| License | Open source (AGPL-3.0) | Closed source, proprietary |\n| Price | Free | Paid |\n| Parallel agents in git worktrees | ✓ | ✓ |\n| Attach an agent to the repo root (no worktree) | ✓ | ✗ (worktree per workspace only) |\n| Runs `claude` | ✓ | ✓ |\n| Runs `gemini` | ✓ | ✗ |\n| Runs `codex` | ✓ | ✓ |\n| Bring your own agent (PTY-based) | ✓ — opencode, aider, ollama, anything that runs in a terminal | ✗ |\n| Multi-repo workspaces | ✓ — N repos under one wrapper, shared CLAUDE.md, per-member ports | ✗ |\n| Uses Claude Pro / Max subscription quota | ✓ — spawns the interactive `claude` CLI directly | ◐ Routes through the Claude Agent SDK |\n| 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) |\n| Local-only, no vendor backend in the loop | ✓ | ✗ — vendor-hosted services |\n| Per-workspace macOS sandbox (filesystem + network) | ✓ — Seatbelt + in-process network allowlist | ✗ |\n| Work-done indicator from real PTY signals | ✓ — OSC 9;4 + per-CLI title classifier, no idle guessing | ✗ |\n| Side-by-side ⇄ unified diff with syntax highlighting | ✓ | varies |\n| Platforms | macOS + Linux today (signed AppImage); Windows on the way | macOS |\n\nIf you already pay for a Claude Pro / Max plan, Termic spawns the same\n`claude` binary that plan covers — no separate metered usage, no\nper-token markup. The agent and Anthropic still see the same auth they'd\nsee in iTerm.\n\n---\n\n## Roadmap\n\nOpen an issue to push something up the list or pick one off.\n\n- **First-class git surface.** Commit / push / pull / branch switch from\n  inside the app instead of dropping to the aux terminal.\n- **Linear + GitHub PR integration.** Paste an issue / PR URL, get a\n  workspace seeded with title + body. Create the PR from the app via\n  `gh`. No OAuth.\n- **Sandbox parity on Linux + Windows.** macOS Seatbelt today; bubblewrap\n  / landlock on Linux and AppContainer on Windows are the gap.\n- **Windows prebuilts.** AppImage CI is live for Linux; Windows MSI is\n  the matching CI matrix entry.\n\n---\n\n## License\n\n[AGPL-3.0-or-later](./LICENSE). Fork it, modify it, build a derivative —\nthe only string is that derivatives stay AGPL too. The \"open core that\nquietly went proprietary\" pattern can't happen with this license, which\nis most of the point.\n\n---\n\n## Links\n\n- **Website:** [termic.dev](https://termic.dev)\n- **Issues:** [github.com/simion/termic/issues](https://github.com/simion/termic/issues)\n- **Releases:** [github.com/simion/termic/releases](https://github.com/simion/termic/releases)\n- **Homebrew tap:** [github.com/simion/homebrew-termic](https://github.com/simion/homebrew-termic)\n- **Contributing:** [CONTRIBUTING.md](./CONTRIBUTING.md)\n- **Architecture notes (for hackers + AI agents working in this repo):** [CLAUDE.md](./CLAUDE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimion%2Ftermic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimion%2Ftermic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimion%2Ftermic/lists"}