agterm

Terminal for coding agents · macOS

Know which agent needs you.

agterm is a native Mac terminal for running Claude Code, Codex and twenty other agent CLIs in tabs. Each tab card shows the agent's task and whether it's waiting on you, with the folder, the lines it changed and the git branch underneath.

v1.0.1 · 3.5 MB · macOS 14+ · Apple silicon and Intel · signed and notarized · updates itself

The agterm window with four tabs. Fix login redirect loop is working in web, +4 −1 on main. Rename env vars in workers needs you in api, +18 −18 on env-rename. Add dark mode tokens is done in design, +142 −9 on tokens. The fourth tab is a zsh shell in docs. The selected tab shows a Claude Code session fixing a redirect and running its tests.
The real app, rendered off screen by its debug self-test with stand-in agents. agterm measured each diff itself, with git, from the moment that agent started.

01Tab cards

Every tab answers before you click it

Claude Code writes its task into the terminal title, and agterm puts that title on the tab. The line under it carries a status, then the folder, the lines changed since the agent started and the branch.

  • Tab card: Fix login redirect loop, WORKING, web, +4 −1, main.

    Working

    The agent is running. For Claude Code that's the spinner in its title; for other programs, it's output that isn't an echo of your typing.

  • Tab card: Rename env vars in workers, NEEDS YOU, api, +18 −18, env-rename.

    Needs you

    A permission prompt is on screen, in any tab (the one you're looking at too), or the bell rang in a tab you aren't watching.

  • Tab card: Add dark mode tokens, DONE, design, +142 −9, tokens.

    Done

    It finished while you were in another tab. agterm can post a notification and play a sound; clicking the notification opens that tab.

Lines changed come from a git stash create snapshot taken when the agent starts, plus any files it creates. There are no hooks or plugins to install: status comes from the title, the screen and git.

02Agents

Works with 22 agent CLIs

Each of these gets tab status, the needs-you flag and lines changed. ⌥⌘T opens a tab in the current folder and starts your usual agent; ⌥⌘1 ⌥⌘2 ⌥⌘3 start Claude Code, Codex and Grok.

  • Claude Code
  • Codex
  • Grok
  • Gemini CLI
  • Antigravity
  • Cursor Agent
  • OpenCode
  • Kimi Code
  • Aider
  • Amp
  • Qwen Code
  • Crush
  • GitHub Copilot CLI
  • Factory Droid
  • Kilo Code
  • Cline
  • Goose
  • Auggie
  • Qodo
  • Kiro CLI
  • Continue
  • Pi
  • Typed at a real prompt

    A new agent tab types the agent's command into an ordinary shell. When the agent quits, the shell is still there, and the tab restores like any other.

  • Skip permission prompts, if you choose

    Settings → Permissions can start each installed agent with its own bypass flag, such as --dangerously-skip-permissions for Claude Code or --yolo for Gemini. It's off by default.

03Accounts

Out of usage? The tab moves to another login

Add more Claude Code or Codex logins in Settings → Accounts. Each one signs in through the CLI's own login, in its own folder, and shares your conversations, settings, skills and MCP servers through symlinks. Any login can resume any conversation.

  1. 01

    Sees the limit

    Claude Code writes a 429 record into the conversation and Codex logs a usage-limit event. agterm follows each agent tab's transcript and reacts within a second.

  2. 02

    Picks a login with room

    It checks every login's usage through that CLI (no Keychain reads, no model calls) and takes the one with the most left.

  3. 03

    Resumes the conversation

    It stops the agent and runs claude --resume or codex resume with your original options on the new login, in the same tab, then tells it to continue.

  4. 04

    Tells you

    A notification names the account it moved to. A tab switches at most 3 times in 30 minutes, so two empty logins can't loop.

agmux Teams

If your team shares Codex logins in agmux Teams, agterm borrows one once every Codex login of yours is out. It's lent to one tab at a time and handed back, with the tokens Codex refreshed, as soon as Codex exits. Claude logins can't be shared, and Grok isn't supported yet.

04At the prompt

Folders by name, commands by description

A shell line reading cd agter, with a suggestion list under the cursor: agterm in ~/Documents/GitHub, and the hints tab to go, arrows to choose, esc to hide.

cd by folder name

Type cd and part of a folder's name. agterm lists matching folders from your home folder (three levels down) and the folders your tabs have visited. ⇥ fills in the full path.

Claude Haiku
~2.5 s
Codex, lowest effort
~4 s
Grok, low effort
~5 s

⌘K writes a command

Describe what you want. ⏎ puts the command at your prompt to check, and ⌘⏎ runs it. It goes through the CLI you're already signed in to, at its fastest setting. The model sees your request, the tab's folder, your shell and the last 20 lines on screen. It has no tools, and the run isn't kept in the CLI's history.

05With agmux

Shared with agmux

Agents in agterm get the same project memory and second opinions as agents in agmux, and your tabs reach your phone through agmux's relay. None of it needs agmux installed; with agmux, memory is shared between the two apps.

  • Project memory

    Claude Code and Codex started in agterm get the agmux-memory server: every agent in a repo reads and adds to one set of notes about it. With agmux installed, agterm uses agmux's own memory for the folders agmux knows, so agents in both apps share it.

  • consult

    An agent can ask Claude, Codex or Grok on your Mac for a second opinion, or have them review its diff before it calls the work done.

  • Your phone

    agterm Remote, agterm's own iPhone app (in testing), pairs with a QR code. Watch any tab's live screen, answer an agent's prompt with a tap, type a reply, press Esc or the arrows, stop it, or open a new tab with any agent in one of your folders. Claude Code and Codex tabs also read as the conversation. A notification arrives when an agent finishes or needs you.

  • agmux Teams

    Sign in and agterm reports hourly totals for sessions started in it: tokens, estimated cost, active time, turns and tool calls. Prompts, replies, code, diffs, file paths and terminal output stay on your Mac.

agterm ships both servers and adds them when you type claude or codex in its tabs, skips any you configured yourself and edits no config files. AGTERM_MCP=0 turns them off for one run. They need Node. The agmux phone app works with agterm too, but keeps one paired Mac, so pairing agterm replaces agmux on that phone.

06Native

Light and native

Download
3.5 MB
Memory, one tab
41 MB
Each extra tab
~0.5 MB
Opening a tab
~4 ms

Measured on an M5 Max with macOS 27.2, optimized build, physical memory as Activity Monitor reports it. The first prompt took 220–450 ms after launch; most of that is the shell's own startup files.

  • No web view

    AppKit and the SwiftTerm emulator, drawn with Core Graphics. Your login shell runs as it does in Terminal.app.

  • Tabs come back

    Quit with tabs open and they reopen with their folder and colored history. Claude Code and Codex tabs resume the same conversation with their original flags; other agents pick up their latest one in that folder.

  • Mac manners

    Drag in files or images, drag tabs to reorder them, pick one of five themes and any monospaced font. A see-through window blurs what's behind it.

  • Asks first

    Closing a tab or quitting asks before it stops a program that's still running.

07Install

Get agterm

  1. Download agterm.zip from GitHub Releases.
  2. Unzip it and move agterm.app to Applications.
  3. On first launch, allow Full Disk Access. Programs in a terminal get the terminal's permissions, so without it macOS blocks agents from Desktop, Documents and other apps' data, or keeps asking.
Download for Mac

macOS 14 or later. Signed and notarized; updates itself through Sparkle.

Build from source

Needs Xcode 16 or later (Swift 6) and the Metal toolchain.

swift test
Unit tests for the status, title, git and settings logic.
./install.sh --adhoc
Build, sign ad hoc and install to /Applications.