agterm plugin
A plugin that teaches Claude Code and Codex to drive the agterm macOS terminal via agtermctl: sessions, panes, overlays, status
- 743 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent types commands into any terminal session and reads its text, and sessions may hold open shells with access rights and secrets.
- Through overlays and scripts the agent launches programs and shows pages with saved logins.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add plugins/agtermDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent types commands into any terminal session and reads its text, and sessions may hold open shells with access rights and secrets.
- Through overlays and scripts the agent launches programs and shows pages with saved logins.
This is third-party code. Review the repository files before installing.
What it does
agterm is a native macOS terminal with a small interface and a full control API. Shells are organized into named workspaces, and everything in them is reachable by a script through the `agtermctl` utility over a local socket. The `agterm` plugin gives the agent a skill describing this control model. An agent running in an agterm session creates sessions and splits panes, types into another session and reads its text, runs a program in an overlay and gets its exit status, shows HTML pages, images, markdown and logs, raises questions and pick lists, sets a session status in the sidebar and sends messages to other panes. The skill installs through the `agterm@agterm` plugin for Claude Code or Codex, or through the Help ▸ Install Agent Skill menu item in the app itself. The repository also holds a cookbook of recipes with skills for agents.
Who it is for. Claude Code and Codex users on Mac who run several agents in different sessions and want the agent to drive the terminal itself.
Good fit when
- Several agents work on a project in separate sessions and the sidebar has to show who is busy, blocked or done.
- The agent has to show a report or page in an overlay above the terminal and return my choice through buttons.
- The agent has to build a layout itself: a workspace, sessions with split panes and companion processes.
- A task in another pane has to be started and its exit status awaited without switching windows.
Not a fit when
- You do not work on macOS: the app ships for Apple Silicon on macOS 14 or newer.
- The agent must not get access to other terminal sessions with your open shells.
- A regular terminal without script control is needed.
Example request
Create an agterm workspace demo with two sessions: run the tests in one and the logs in the other, and mark the tests session status when they finish.Limitations
The agterm terminal itself is required: prebuilt releases exist only for Apple Silicon Macs on macOS 14 or newer, and the skill is useless without the app. The skill is installed one way, by plugin or from the app menu, otherwise it is unclear which copy runs. Terminal output is not streamed. `session text` reads the buffer on request and `session type` returns as soon as keystrokes are queued, so reading right after typing can outrun the shell. The `pick` and `ask` commands block until the user answers. Agent status hooks are installed separately from the Help menu.
How to disable. Remove the plugin with `claude plugin uninstall agterm@agterm` (a similar Codex command for Codex). A skill installed from the menu is deleted from the agent's skills directory, and the app with `brew uninstall --cask agterm`.
FAQ
How do I install the agterm skill in Claude Code?
Run `claude plugin marketplace add umputun/agterm`, then `claude plugin install agterm@agterm`. For Codex use `codex plugin marketplace add umputun/agterm` and `codex plugin add agterm@agterm`.
Is the agterm app required?
Yes. The skill drives the terminal through `agtermctl`, which ships with the app. The Homebrew cask installs both the app and this utility.
What does the session status show?
Each agent works in a named session and reports whether it is active, blocked or done. The status shows as an icon in the sidebar, set with `agtermctl session status`.
Can the skill be installed both by plugin and from the menu?
No. Two copies leave it undefined which one the agent picks, so use one route.
What is the cookbook in the repository?
The `cookbook/` folder with ready recipes: document annotation, picking tasks from a backlog, an HTML document overlay and scheduled jobs.
Discussion
No questions or reviews yet.
Related
PluginsA skill that teaches an agent to split Zentty windows into panes, read neighboring sessions, search history and notify you
A Rust terminal with a multiplexer: agent sessions from several machines in one window, plus a skill for seeing adjacent panes
A native macOS terminal built on Ghostty with vertical tabs and notifications when an agent needs your input
Native macOS terminal with an MCP server and CLI: agents see panes, commands and output, and you grant permissions in one window
A terminal dashboard for Claude Code and Codex: a tree of agents with live status, a tool-call feed and context headroom.
A CLI that installs shared skills, commands, subagents, hooks and MCP servers into eight AI coding tools in their native layouts
Comparison with similar tools
Cards that share the main search query, and how they differ.
README in short
The README covers the model of workspaces and sessions, installation of the app and the skill, `agtermctl` scripting examples and documentation. Related projects and license terms are listed separately.
README badge
Original SKILL.md
--- name: agterm description: > Drive agterm, a macOS terminal, via agtermctl. Use in an agterm session: manage sessions, companions and workspaces; split panes; toggle the scratch; run, hide or show overlays; read exit status; show HTML pages, URLs or dev servers in an overlay with saved logins or as a page row; post a HUD/caption/notification/sidebar activity line; message panes; show a picker, question or input dialog; show images/markdown/code; type into or restart a pane by id, copy its selection, set the clipboard, search its scrollback; manage windows, font size and theme; reload or edit the keymap, event hooks and agterm-scoped ghostty config; run a custom command; read a closed window's session screen; subscribe to status, notify, lifecycle, selection, pane, tree and launch events; wait on agent status. Covers window/workspace/session addressing, session links, AGTERM_* variables, attaching another Mac's sessions, agterm-server windows, cookbook recipes, version and upgrades, diagnosing problems, filing a bug or feature request. when_to_use: > Trigger on: agterm, agtermctl, AGTERM_SESSION_ID, and, from inside a session, plain requests such as split the pane, print a link that jumps to a session, close the overlay, hide the overlay for a moment, show a message over the session, show a question dialog, agtermctl ask, ask the user to type a value or a message, let the user pick one or several items from a list, show an image inline, show this markdown file rendered, show this source file or log at a line, show me the diff of a file or the changes as links, tail or follow this log file, search the log or text page in the overlay, wrap long lines in the text or log page, show this HTML page or artifact, make an HTML page or explainer for this and show it, make a page that switches sessions or returns a choice, preview the report you generated, show this URL or the running dev server, keep me logged in to a page shown in an overlay, search the scrollback, flag every session in a workspace, tint a session or workspace row a color, show status or activity under a session in the sidebar, make a companion session, keep a related program next to a session, duplicate this session with its programs as a companion, make this session a companion, open a sub-session under this one, fold a session's companions, show a page as a companion of this session, open a page as its own session row in the sidebar, run my custom command, send a message to the other pane or another agent, read my messages, wait for a message, tell me when the selected session changes, wait until that worker session finishes, bring back the session I just closed, attach a session from another Mac, attach a remote session with all its companions, open a remote window for my Linux server, run sessions on a Linux host with agterm-server, install agterm-server on a Linux host, detach or reattach a remote session, copy this to the clipboard, was agterm upgraded under the running app, upgrade agterm without losing sessions, what recipes are there, the keymap editor will not open. allowed-tools: Bash(agtermctl *) --- <!-- agterm-skill --> # Driving agterm agterm is a native macOS terminal. It exposes a programmatic control channel over a local unix socket, driven by the companion CLI `agtermctl`. Use it to build and steer terminal layouts, run programs in overlays, type into sessions, notify the user in the exact session you are working in, and subscribe to control events. Events cover status, notifications, session lifecycle, split and scratch pane visibility, structural tree changes (an overlay, page or HUD opening or closing included) and the app's launch; `hooks.conf` runs a shell line on any of them, so `on app.launched` is where a script recreates what a relaunch does not restore. They do not stream terminal output; use `session text` to read a buffer. ## Am I inside agterm? Each shell agterm spawns gets these environment variables. Check `AGTERM_ENABLED` before assuming the control channel is available: - `AGTERM_ENABLED=1` — this shell runs inside agterm. - `AGTERM_SESSION_ID` — the current session's UUID (the session this shell belongs to). - `AGTERM_WINDOW_ID` / `AGTERM_WORKSPACE_ID` — the owning window / workspace UUIDs. The workspace id is