The terminal IDE for your AI agents — Claude Code, Codex, Gemini CLI, Aider, Cline, in parallel.
▶ Watch the demos at termloop.ai
The agent-loop layer — what makes TermLoop different from a plain terminal multiplexer.
Native iOS client pairs with your Mac over an authenticated TCP socket on your local network. Watch live agent output, switch projects, jump into a session — from the couch, the queue, or another room. Stable today; still under active development.
![]() |
![]() |
![]() |
TermLoop builds on cmux, an open-source GPL-3.0 terminal multiplexer by Manaflow. cmux gives us the multiplexer foundation — splits, panes, the renderer. The features below come from there:
| Panes get a blue ring and tabs light up when coding agents need your attention. |
|
| Split a browser alongside your terminal with a scriptable API ported from agent-browser. |
|
| Sidebar shows git branch, linked PR status/number, working directory, listening ports, and latest notification text. Split horizontally and vertically. |
|
termloop ssh user@remote creates a workspace for a remote machine. Browser panes route through the remote network so localhost just works. Drag an image into a remote session to upload via scp.
|
|
termloop claude-teams runs Claude Code's teammate mode with one command. Teammates spawn as native splits with sidebar metadata and notifications. No tmux required.
|
|
- Notification panel — See all pending notifications in one place, jump to the most recent unread
- Browser import — Import cookies, history, and sessions from Chrome, Firefox, Arc, and 20+ browsers so browser panes start authenticated
- Custom commands — Define project-specific actions in
cmux.jsonthat launch from the command palette - Scriptable — CLI and socket API to create workspaces, split panes, send keystrokes, and automate the browser
- Native macOS app — Built with Swift and AppKit, not Electron. Fast startup, low memory.
- Ghostty compatible — Reads your existing
~/.config/ghostty/configfor themes, fonts, and colors - GPU-accelerated — Powered by libghostty for smooth rendering
Open the .dmg and drag TermLoop to your Applications folder. TermLoop auto-updates via Sparkle, so you only need to download once.
brew tap feritzcan2/termloop
brew install --cask termloopTo update later:
brew upgrade --cask termloopOn first launch, macOS may ask you to confirm opening an app from an identified developer. Click Open to proceed.
I run more AI coding agents than I have screens for — Claude Code, Codex, Gemini CLI, Aider — usually three or four at a time, on different branches, doing different work. The mismatch between how agents work and how terminals work was getting in the way.
A coding agent is asynchronous. It reads, thinks, edits, runs tests, comes back with a question, waits, runs more tests. While it's working, I want to be doing something else — code review, another agent, lunch. But standard terminals don't tell you which pane is asking for input. You alt-tab into the wrong pane, lose your place, and an agent has been blocked for ten minutes.
Worktrees are the right answer for parallel work — different branch, different directory, no stash gymnastics. But booting them by hand for every agent is friction. So TermLoop creates one per task, automatically, and tears it down when you merge.
Then there's the question of how agents talk to each other. When Claude gets stuck on something Codex is good at, it should ask Codex — not me. The ask_to MCP tool makes that a one-line call, cross-model, cross-worktree.
And the context. Every project has a CLAUDE.md, AGENTS.md, GEMINI.md somewhere. Most of them are stale or unused. The Context Bank scores them and lets you clone the strong ones across agents — so the next worker starts with the same memory the last one had.
The whole thing is a terminal, not a panel bolted onto an IDE. You bring your own subscription (Claude Code, Codex, Gemini CLI, etc.) — TermLoop never proxies your API traffic, never adds a billing layer, never locks you in. Built on top of cmux, so the multiplexer, browser, and rendering foundation is solid; everything above the terminal is what TermLoop adds.
For more info on how to configure TermLoop, head over to our docs.
This fork ships with crash reporting disabled by default.
- Enable it from
Settings -> Appif you want anonymized crash and app-hang reporting through the project's Sentry endpoint. - Performance tracing and usage analytics stay disabled in this fork.
- Crash reports are configured with
sendDefaultPii = false; file paths, document names, URL query strings, cookies, headers, screenshots, and view hierarchies are stripped before events are sent. - Document contents and terminal contents are not sent as part of crash reporting.
| Shortcut | Action |
|---|---|
| ⌘ N | New workspace |
| ⌘ 1–8 | Jump to workspace 1–8 |
| ⌘ 9 | Jump to last workspace |
| ⌃ ⌘ ] | Next workspace |
| ⌃ ⌘ [ | Previous workspace |
| ⌘ ⇧ W | Close workspace |
| ⌘ ⇧ R | Rename workspace |
| ⌘ B | Toggle sidebar |
| Shortcut | Action |
|---|---|
| ⌘ T | New surface |
| ⌘ ⇧ ] | Next surface |
| ⌘ ⇧ [ | Previous surface |
| ⌃ Tab | Next surface |
| ⌃ ⇧ Tab | Previous surface |
| ⌃ 1–8 | Jump to surface 1–8 |
| ⌃ 9 | Jump to last surface |
| ⌘ W | Close surface |
| Shortcut | Action |
|---|---|
| ⌘ D | Split right |
| ⌘ ⇧ D | Split down |
| ⌥ ⌘ ← → ↑ ↓ | Focus pane directionally |
| ⌘ ⇧ H | Flash focused panel |
Browser developer-tool shortcuts follow Safari defaults and are customizable in Settings → Keyboard Shortcuts.
| Shortcut | Action |
|---|---|
| ⌘ ⇧ L | Open browser in split |
| ⌘ L | Focus address bar |
| ⌘ [ | Back |
| ⌘ ] | Forward |
| ⌘ R | Reload page |
| ⌥ ⌘ I | Toggle Developer Tools (Safari default) |
| ⌥ ⌘ C | Show JavaScript Console (Safari default) |
| Shortcut | Action |
|---|---|
| ⌘ I | Show notifications panel |
| ⌘ ⇧ U | Jump to latest unread |
| Shortcut | Action |
|---|---|
| ⌘ F | Find |
| ⌘ G / ⌘ ⇧ G | Find next / previous |
| ⌘ ⇧ F | Hide find bar |
| ⌘ E | Use selection for find |
| Shortcut | Action |
|---|---|
| ⌘ K | Clear scrollback |
| ⌘ C | Copy (with selection) |
| ⌘ V | Paste |
| ⌘ + / ⌘ - | Increase / decrease font size |
| ⌘ 0 | Reset font size |
| Shortcut | Action |
|---|---|
| ⌘ ⇧ N | New window |
| ⌘ , | Settings |
| ⌘ ⇧ , | Reload configuration |
| ⌘ Q | Quit |
TermLoop NIGHTLY is a separate app with its own bundle ID, so it runs alongside the stable version. Built automatically from the latest main commit and auto-updates via its own Sparkle feed.
Report nightly bugs on GitHub Issues or GitHub Discussions.
On relaunch, TermLoop currently restores app layout and metadata only:
- Window/workspace/pane layout
- Working directories
- Terminal scrollback (best effort)
- Browser URL and navigation history
TermLoop does not restore live process state inside terminal apps. For example, active Claude Code/tmux/vim sessions are not resumed after restart yet.
Ways to get involved:
- Join the conversation on GitHub Discussions
- Create and participate in GitHub issues and discussions
- Let us know what you're building with TermLoop
TermLoop is open source under GPL-3.0-or-later.
If your organization cannot comply with GPL, a commercial license is available. Contact feritzcan93@gmail.com for details.













