$ man agent-interface

The terminal
winks back.

A native desktop app for your terminals and the agents in them. A workspace per project, split panes that stay put, and tmux underneath, so nothing stops when you look away.

curl -fsSL …/agent-interface/main/install.sh | sh

macOS · Linux · open source · MIT licensed

storefront 5 tabs
Jump to tab, pane, agent ⌘K
TABS
1 api
2 web
3 db
4 docs
5 release
AGENTS 3 need you
reviewer needs you api
planner needs you release
deployer needs you deploy
builder working api
web-dev working web
docs-writer idle docs
builder working 1
> Add rate limiting to the public API, then push
it for review.
⏺ Search(pattern: "Router::new", path: "src")
⎿ Found 2 files
⏺ Read(src/routes/mod.rs)
⎿ Read 142 lines
⏺ I'll add a token-bucket limiter as middleware
and apply it to the /v1 routes only.
⏺ Write(src/middleware/limit.rs)
⎿ Wrote 64 lines
⏺ Update(src/routes/mod.rs)
⎿ Updated with 2 additions
18 + .layer(RateLimit::per_minute(120))
19 + .route_layer(limit::by_client())
⏺ Bash(cargo test --all)
⎿ test result: ok. 48 passed; 0 failed
⏺ Bash(git push -u origin feat/rate-limit)
⎿ branch feat/rate-limit set up to track origin
✶ Writing tests for burst traffic… (41s · esc to interrupt)
>
? for shortcuts
reviewer needs you 2
› Review feat/rate-limit from builder.
• Ran git diff main...feat/rate-limit --stat
└ 2 files changed, 66 insertions(+)
• Ran cargo clippy --all-targets
└ Finished with no warnings
The limiter looks right. One concern: clients
are keyed on X-Forwarded-For, which can be
spoofed behind a proxy. Key on the API token?
› 1. Yes, write it up as a review note
2. No, approve as is
›
Skills every skill an agent can load, by where it lives
Shared skills One copy in the store; Backbone links each to the agents whose tags it names.
allevery agent
commit-style
review-checklist
rust3 agents
cargo-workflowalso review
api-security2 by name
clickread the skill a repository skill wins over a store skill of the same name
storefront api pane 1 of 3 ⌘Dsplit ⌘⇧Dsplit below ⌘⇧↩expand ⌘Kjump agents shown Saved
storefront 5 tabs
Jump to tab, pane, agent ⌘K
TABS
1 api
2 web
3 db
4 docs
5 release
AGENTS 3 need you
reviewer needs you api
planner needs you release
deployer needs you deploy
builder working api
web-dev working web
docs-writer idle docs
builder working 1
> Add rate limiting to the public API, then push
it for review.
⏺ Search(pattern: "Router::new", path: "src")
⎿ Found 2 files
⏺ Read(src/routes/mod.rs)
⎿ Read 142 lines
⏺ I'll add a token-bucket limiter as middleware
and apply it to the /v1 routes only.
⏺ Write(src/middleware/limit.rs)
⎿ Wrote 64 lines
⏺ Update(src/routes/mod.rs)
⎿ Updated with 2 additions
18 + .layer(RateLimit::per_minute(120))
19 + .route_layer(limit::by_client())
⏺ Bash(cargo test --all)
⎿ test result: ok. 48 passed; 0 failed
⏺ Bash(git push -u origin feat/rate-limit)
⎿ branch feat/rate-limit set up to track origin
✶ Writing tests for burst traffic… (41s · esc to interrupt)
>
? for shortcuts
reviewer needs you 2
› Review feat/rate-limit from builder.
• Ran git diff main...feat/rate-limit --stat
└ 2 files changed, 66 insertions(+)
• Ran cargo clippy --all-targets
└ Finished with no warnings
The limiter looks right. One concern: clients
are keyed on X-Forwarded-For, which can be
spoofed behind a proxy. Key on the API token?
› 1. Yes, write it up as a review note
2. No, approve as is
›
Skills every skill an agent can load, by where it lives
Shared skills One copy in the store; Backbone links each to the agents whose tags it names.
allevery agent
commit-style
review-checklist
rust3 agents
cargo-workflowalso review
api-security2 by name
clickread the skill a repository skill wins over a store skill of the same name
storefront api pane 1 of 3 ⌘Dsplit ⌘⇧Dsplit below ⌘⇧↩expand ⌘Kjump agents shown Saved
← dark light →

drag across the window to compare the themes · the page follows the switch at the top

workspaces

One workspace per project. Everything in it, saved.

Tabs, the split panes inside them, and whatever runs in each pane: shells, servers, editors, agents. Switch projects and each one comes back exactly as you left it.

  1. 01Open a terminal⌘T
  2. 02Split right⌘D
  3. 03Split below⌘⇧D
  4. 04Switch workspace⌥⌘→
storefront3 tabs
research2 tabs
Jump to tab, pane⌘K
TABS
1api
2web
3db
1notes
2papers
Terminal~/storefront1
❯ claude
> Add rate limiting to the API
⏺ Read(src/routes/mod.rs)
⎿ Read 142 lines
⏺ Write(src/middleware/limit.rs)
⎿ Wrote 64 lines
⏺ Bash(cargo test)
⎿ 48 passed; 0 failed
✶ Writing tests…
Terminal~/storefront2
❯ cargo watch -x run
INFO listening on :8080
INFO GET /health 200 0.4ms
INFO GET /v1/items 200 3.1ms
WARN slow query 212ms
Terminal~/storefront3
❯ git status --short
M src/routes/mod.rs
?? src/middleware/limit.rs
❯
Terminal~/research1
❯ codex
› Summarise papers/ by method
• Ran ls papers | wc -l
└ 37
• Grouping by method…
Terminal~/research2
❯ python3 plot.py --all
loaded 37 papers
wrote figures/methods.png
❯

what you get

A real terminal, with a desktop around it.

Terminal~/storefront
❯ npm run dev
ready on :3000
Terminal~/storefront
❯ htop
⌘D · ⌘⇧D · drag · ⌘⇧↩

Split, resize, expand

Split right or below, drag a divider to resize, and give one pane the whole tab when you need room.

builder
⏺ Update(routes/mod.rs)
⎿ 2 additions
⏺ Bash(cargo test)
⎿ 48 passed
✶ Writing tests…
reviewer
• Ran cargo clippy
└ no warnings
Key on the API
token instead?
› 1. Yes
claude · codex · any CLI

Any agent, any program

Claude Code, Codex, a dev server, an editor: if it runs in a terminal, it runs here, side by side.

editorserverlogsapi-server
TMUX SESSIONS
1api-server3 windows
2scratch1 window
⌘⇧A attach

Bring the sessions you have

Attach any tmux session into a pane and click between its windows. Nothing disconnects, and nothing is created until you choose.

ser⌘K
server · cargo watchpane · api
servicestab · infra
⌘K jump

Jump to anything

Tabs, panes and commands across every workspace, a few letters away.

window closed
tmux claude cargo watch zsh
tmux underneath

Sessions outlive the window

Close a pane, detach a session or quit the app. tmux keeps every process running, and reopening puts it all back. How it works →

❯ cargo test 2>&1 | tail -4
test limit::allows_burst ... ok
test limit::rejects_flood ... ok
test routes::health_ok ... ok
test result: ok. 48 passed
❯
Copied
GPU-drawn · Ghostty's core

A real terminal, drawn natively

Scrollback, selection, copy and bracketed paste, with mouse support for the programs that want it. Never a web view.

Rename tab⌘R
Move up
Move down
Move to workspace
drag · rename · move

Tabs that move with you

Drag tabs to reorder, rename with a double-click, or move a whole layout to another workspace.

Skillsevery skill an agent can load
Shared skills
rust3 agents
cargo-workflowalso review
api-security2 by name
optional · with Agent Backbone

Native views, when you want them

Connect Agent Backbone and Skills, Team, Activity and Usage open as native panes beside your terminals. See the integration →

ThemeDarkLight
Text size− 13 +
Pane headersAlwaysOn hoverNever
Split right⌘DChange
⌘, settings · ⌘N new window

Make it yours

Light or dark, your text size, pane headers always or on hover, every shortcut editable, and as many windows as you like.

install

One line, then ⌘T.

curl -fsSL …/agent-interface/main/install.sh | sh
01
Paste it in a terminal
It picks the build for your computer and checks its checksum.
02
Open Agent Interface
From Applications on macOS, or your applications menu on Linux.
03
Press ⌘T
Open a terminal or attach a session. Everything saves as you go.

macOS and Linux · uses tmux 3.3 or newer · install guide ↗

support

Expert support,
from the people who build it.

Hands-on technical support for Agent Backbone setups and solutions built with it. Explore its possibilities and work through complex configurations, in person or remote.