What's New in 2.8
tmux-ide 2.8 — agent lifecycle control, a detachable cockpit, a local socket API, per-pane notifications, and eight new detection manifests
tmux-ide 2.8
2.7 shipped the unified app. 2.8 adds control over the agents it shows you: spawn, restart, and stop from any surface; a cockpit you can detach and reattach from another terminal; a local socket API so agents can call the same verbs you can; per-pane notifications; and detection for eight more agent kinds.
npm i -g tmux-ide # or: brew install wavyrai/tap/tmux-ide
tmux-ide app # from any folder — no tmux server requiredAgent lifecycle: spawn, restart, stop
Spawn from the home chips, the sidebar's session menu, or the palette. Agent kinds come from the detection manifests, so your own overrides appear automatically, and a custom-command option covers anything not in a manifest. A project row that isn't running spawns a fresh session.
The two-step placement dialog is replaced by one picker, with your last spawn
pinned and pre-selected — repeating it is the palette plus one Enter. Placement
defaults to context (split right on Terminal, a new window from a session, a
fresh session from a project), with the alternatives on footer ctrl-actions. New
panes inherit the focused pane's cwd (app.newAgentCwd) and are auto-labelled.
Restart, stop, and close are available on agent rows and in the palette.
The detachable cockpit
tmux-ide app --detachable # alias: --hosted · config: app.detachableThe app hosts itself inside an internal session and attaches your terminal to it.
Detach and reattach from any terminal — a second window, another machine, a phone
over SSH — with scroll position and workspace state intact. Inside tmux it
switches clients; ^q from a hosted app returns you to the session you came from
rather than to a shell.
Local socket API
tmux-ide serve # NDJSON over a 0600 unix socketVerbs: fleet, agents, send, wait, spawn, restart-agent, stop-agent,
explain. Responses are returned by id (out-of-order safe), and subscribe
pushes events. Every verb calls the same data layer as the CLI, so the two
surfaces cannot drift apart.
Notifications
Notification decisions are now per-pane: two agents in one session both
notify, instead of one shadowing the other. First-sight events never notify, so
restarting the app doesn't re-announce work you already know about.
lastNotified persists across restarts. New channels: SSH banners, Linux
support, and an optional sound.
On macOS, banners now come from a bundled native notifier — a small signed
universal helper app that ships inside the npm package. No terminal-notifier
dependency, branded with the app icon, and clicking a banner jumps straight to
the session that needs you.
Detection
Eight new manifests: devin, kimi, pi, grok, kiro, cline, droid, kilo — each
with corpus fixtures and a cross-misfire matrix, so a new manifest cannot claim
panes belonging to another agent. --resume session-id capture covers three more
agent kinds, so restore revives more of the fleet's conversations.
App surfaces
- Resize is driven by tmux's own
%layout-changepayload, parsed and applied synchronously in the same read turn, so a resize cannot race the output that follows it. - Drag-selection anchors to absolute buffer lines rather than viewport cells: the highlight stays on its content while the pane scrolls, and a wheel mid-drag extends the selection instead of cancelling it. Drag-select is now the default in agent panes.
- Diff gained stage/unstage verbs, grouping, and counts. Files gained
filtering. The palette gained ⌘K and a ranking that learns what you run.
/at a live prompt is no longer intercepted — the agent receives it.
Install
brew install wavyrai/tap/tmux-ideHomebrew is a supported install path, with tmux-ide doctor checking the pieces
Homebrew does not wire up.
Upgrading
Nothing to migrate. Re-run tmux-ide adopt <session> to pick up the new key
binds; tmux-ide update refreshes the bundled Claude Code skill.