tmux-ide 2.9.3 → 2.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 wavyrai
3
+ Copyright (c) 2026 Thijs Verreck
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -7,20 +7,21 @@
7
7
 
8
8
  <h1 align="center">tmux-ide</h1>
9
9
 
10
- <p align="center"><strong>A visual tmux client designed for working with coding agents.</strong></p>
10
+ <p align="center"><strong>The open-source workspace for coding agents.</strong></p>
11
11
 
12
- <p align="center">
13
- <img src="./docs/public/tui-demo.svg" alt="Animated tmux-ide OpenTUI demo showing Home, named coding agents, live status, terminal panes, and the command palette" width="960" />
14
- </p>
12
+ <p align="center">An open-source project by <a href="https://www.prototyper.co">Prototyper</a> · <a href="https://github.com/wavyrai/tmux-ide/blob/main/LICENSE">MIT license</a> · <a href="https://tmux-ide.com/docs">Docs</a></p>
15
13
 
16
- The demo above is a self-contained animated SVG generated from the production
17
- OpenTUI renderer—not a video or a hand-maintained mockup. It is committed with
18
- the project, so the animation runs directly in GitHub.
14
+ Run and coordinate a team of coding agents, such as Claude Code and Codex, in the
15
+ tmux sessions you already use. tmux-ide shows what every agent is doing, and lets
16
+ you jump straight to the one that needs you. tmux keeps owning every process and
17
+ pane, so closing tmux-ide never stops an agent.
19
18
 
20
- tmux-ide adds an application shell to ordinary tmux sessions. tmux still owns
21
- the processes, PTYs, sessions, windows, panes, and persistence; tmux-ide adds
22
- Home, clickable pane and window chrome, agent indicators, memorable names, and
23
- direct controls. Close the app and the underlying sessions keep running.
19
+ <p align="center">
20
+ <picture>
21
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/wavyrai/tmux-ide/main/docs/public/tui-demo.svg" />
22
+ <img src="https://raw.githubusercontent.com/wavyrai/tmux-ide/main/docs/public/tui-demo-light.svg" alt="Animated tmux-ide app demo showing Home, named coding agents, live status, terminal panes, and Commands" width="960" />
23
+ </picture>
24
+ </p>
24
25
 
25
26
  ## Install
26
27
 
@@ -29,163 +30,143 @@ curl -fsSL https://tmux-ide.com/install.sh | sh
29
30
  tmux-ide app
30
31
  ```
31
32
 
32
- The installer supports macOS 26+ on ARM64, macOS 15+ on x64, and glibc Linux (Ubuntu 24.04 or newer baseline) on ARM64/x64. It installs a private
33
- Node runtime, bundled tmux, and the verified TUI under `~/.local`, without sudo.
34
- Add `~/.local/bin` to your PATH if prompted. Existing tmux sessions are preserved.
35
- With Node.js 20+ already installed, you can also use `npm install -g tmux-ide`.
36
-
37
- Open a particular session directly:
33
+ Or, with Node.js 20+ already installed:
38
34
 
39
35
  ```bash
40
- tmux-ide app work
36
+ npm install -g tmux-ide
37
+ tmux-ide app
41
38
  ```
42
39
 
43
- The first app launch downloads the exact-version OpenTUI runtime for macOS or
44
- Linux, verifies its release metadata and SHA-256 digests, and caches it under
45
- `~/.tmux-ide/bin`. Installed users do not need Bun.
40
+ Runs on macOS 26+ (ARM64), macOS 15+ (x64) and glibc Linux (ARM64/x64; use WSL on
41
+ Windows). Both installs bundle tmux 3.7c, and the installer brings its own
42
+ Node.js, so you need no sudo and no system tmux. tmux servers you already run must
43
+ be tmux 3.7 or newer; tmux-ide never replaces a running server.
44
+ [Getting started](https://tmux-ide.com/docs/getting-started) has the details.
45
+
46
+ ## What you get
47
+
48
+ - **Home** (`F1`) lists every agent across your local and SSH machines, with
49
+ search and All / Working / Needs attention filters.
50
+ - **Terminals** (`F2`) mirrors the live tmux session with window tabs, pane
51
+ headers and mouse controls. Splits, resizes, renames and closes are real tmux
52
+ operations.
53
+ - **Agent status** for each pane: working, blocked, done or idle. It comes from
54
+ Claude Code hooks or any agent's one-line self-report, and falls back to
55
+ reading the screen.
56
+ - **Notifications** when an agent is blocked or done: tmux toasts, macOS and
57
+ terminal banners, and sound.
58
+ - **Remote machines** over SSH, side by side with your local sessions.
59
+ - **Restore** after a tmux crash or reboot, including Claude Code, Codex, Cursor
60
+ and opencode conversations.
61
+ - **Scripting**: `send`, `wait` and `team --json` from the CLI, plus scoped pane
62
+ reads and sends over MCP and an SDK.
63
+ - **tmux chrome**: `tmux-ide adopt` adds a status bar, sidebar and keys to plain
64
+ tmux clients.
65
+
66
+ ## Agent teams
67
+
68
+ <p align="center">
69
+ <picture>
70
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/wavyrai/tmux-ide/main/.github/assets/agent-teams-dark.gif" />
71
+ <img src="https://raw.githubusercontent.com/wavyrai/tmux-ide/main/.github/assets/agent-teams-light.gif" alt="An agent team in five tmux panes: a Claude Code orchestrator hands a goal to a Codex goal agent, which splits research across Claude Code, opencode and Codex panes; you answer the one that needs input, and the outcome flows back up." width="974" />
72
+ </picture>
73
+ </p>
46
74
 
47
- To reset a running daemon's runtime while keeping its supervising process and
48
- tmux sessions:
75
+ Run several coding agents as a team, each in its own tmux pane. With
76
+ [Claude Code agent teams](https://tmux-ide.com/docs/claude-code-agent-teams), a
77
+ Claude Code lead spawns teammates in split panes, and tmux-ide shows each one by
78
+ name, grouped under its team, with live status. To mix Claude Code, Codex and
79
+ other agents, group panes with `tmux-ide team assign` and coordinate them with
80
+ `send` and `wait`; see
81
+ [Multi-agent teams](https://tmux-ide.com/docs/multi-agent-teams). tmux-ide shows
82
+ and connects the agents; it does not orchestrate them.
49
83
 
50
84
  ```bash
51
- tmux-ide daemon restart --json
85
+ tmux-ide team --json # every session, pane and agent status
86
+ tmux-ide send %2 "Run the tests and report back" # type into another agent's prompt
87
+ tmux-ide wait agent-status api --status done # block until a session's agent is done
52
88
  ```
53
89
 
54
- The command verifies a new daemon generation under the same process, preserving
55
- the active listener and remote-access settings. It does not start a missing
56
- daemon or load newly installed code; use `tmux-ide update --daemon` for the
57
- separate version-upgrade flow. Managed services require the
58
- [explicit supervisor setup](docs/content/docs/app-surfaces.mdx#supervised-daemon-upgrades). The existing `tmux-ide restart` command still
59
- restarts an IDE session.
60
-
61
- ## What ships in 2.9
62
-
63
- - **Home and Terminals** over live tmux sessions, with no project config
64
- required.
65
- - **Agent indicators** in the sidebar, window tabs, and pane chrome.
66
- - **Keyboard and mouse control** for session, window, and pane selection;
67
- splitting, resizing, renaming, creating, and confirmed closing.
68
- - **Truecolor terminal mirroring** with retained content through quiet periods,
69
- resizing, theme changes, daemon replacement, and reattachment.
70
- - **SSH compatibility** because the source of truth remains ordinary tmux.
71
- - **A future-proof daemon boundary** that a later web client can reuse. The web
72
- client is intentionally not part of this release.
73
-
74
- Useful controls:
75
-
76
- | Control | Action |
77
- | ------------ | ------------------------------------- |
78
- | `F1` | Home |
79
- | `F2` | Terminals |
80
- | `F5` | Commands |
81
- | `Ctrl+O` | Next pane |
82
- | `Ctrl+T` | Next window |
83
- | `Meta+Arrow` | Resize focused pane |
84
- | `Ctrl+Q` | Quit, or put away a detachable viewer |
90
+ ## Keys
85
91
 
86
- ## Optional workspace layout
92
+ | Key | Action |
93
+ | ------------------- | ------------------------------------------- |
94
+ | `F1` / `F2` | Home / Terminals |
95
+ | `F5` | Commands |
96
+ | `F6` / `F7` | Sessions / Attention (agents that need you) |
97
+ | `F10` | Show or hide the sidebar |
98
+ | `Ctrl+O` / `Ctrl+T` | Next pane / next window |
99
+ | `Alt+Arrow` | Resize the focused pane |
100
+ | Right-click a pane | Select text, rename, split, zoom, close |
101
+ | `Ctrl+Q` | Quit, or detach a detachable app |
102
+
103
+ See [every keyboard shortcut](https://tmux-ide.com/docs/getting-started#keyboard-shortcuts).
87
104
 
88
- tmux-ide works without configuration. To describe a reproducible project
89
- layout, scaffold `.tmux-ide/workspace.yml`:
105
+ ## Get exact Claude Code status
90
106
 
91
107
  ```bash
92
- tmux-ide init
93
- tmux-ide start
108
+ tmux-ide integration install claude
94
109
  ```
95
110
 
96
- ```yaml
97
- version: 1
98
- name: my-app
99
-
100
- terminal:
101
- rows:
102
- - size: 70%
103
- panes:
104
- - title: Claude
105
- command: claude
106
- focus: true
107
- - title: Shell
108
- - panes:
109
- - title: Dev server
110
- command: pnpm dev
111
+ This installs Claude Code lifecycle hooks, so new Claude Code sessions report
112
+ working, blocked, done and idle exactly. Any other agent can report its own state
113
+ with one tmux option:
114
+
115
+ ```bash
116
+ tmux set-option -p @agent_state "working:$(date +%s)" # working | blocked | done | idle
111
117
  ```
112
118
 
113
- Legacy `ide.yml` files still load through a compatibility adapter. Use
114
- `tmux-ide migrate --dry-run` before writing the current format.
119
+ ## Optional workspace layout
115
120
 
116
- ## Architecture
121
+ tmux-ide works with the tmux sessions you already have. To describe a repeatable
122
+ layout for a project, add `.tmux-ide/workspace.yml`:
117
123
 
118
- ```mermaid
119
- flowchart LR
120
- T[tmux\nprocesses · PTYs · topology · persistence]
121
- D[daemon\ndiscovery · lifecycle · agent state · pane streams]
122
- U[OpenTUI\nHome · Terminals · chrome · input]
123
- T <--> D
124
- D <--> U
124
+ ```bash
125
+ tmux-ide init # scaffold from your detected stack
126
+ tmux-ide validate --json
127
+ tmux-ide start
125
128
  ```
126
129
 
127
- This separation is deliberate: tmux has years of terminal, resize, disconnect,
128
- shell, and SSH edge-case coverage. tmux-ide does not replace that foundation or
129
- put your work behind a proprietary session format.
130
+ See [Configuration](https://tmux-ide.com/docs/configuration) and
131
+ [Workspace templates](https://tmux-ide.com/docs/templates).
130
132
 
131
- ## Requirements
133
+ ## How it works
132
134
 
133
- - tmux 3.7 or newer (the universal installer includes 3.7c)
134
- - Node.js 20 or newer
135
- - macOS 26+ on ARM64, macOS 15+ on x64, or Linux arm64/x64 for the downloadable OpenTUI runtime
136
- - Bun only when developing or compiling the TUI from a checkout
135
+ | Layer | Owns |
136
+ | --------------- | --------------------------------------------------------- |
137
+ | tmux | Processes, PTYs, sessions, windows, panes and persistence |
138
+ | tmux-ide daemon | Discovery, agent state and pane streams, one per machine |
139
+ | tmux-ide app | Home, Terminals, chrome and mouse and keyboard input |
137
140
 
138
- Run `tmux-ide doctor --json` for an environment report.
141
+ tmux has years of coverage for terminal modes, resizes, disconnects and SSH.
142
+ tmux-ide builds on it instead of replacing it, and never puts your work behind a
143
+ proprietary session format. If the app or daemon stops, your sessions are still
144
+ ordinary tmux.
139
145
 
140
- ## Development
141
-
142
- ```bash
143
- pnpm install --frozen-lockfile
144
- pnpm release:opentui:check
145
- pnpm docs:build
146
- ```
146
+ ## Documentation
147
147
 
148
- The focused OpenTUI release gate builds and checks the package, runs renderer
149
- and lifecycle tests, and installs the packed tarball into an isolated new-user
150
- environment.
148
+ - [Getting started](https://tmux-ide.com/docs/getting-started)
149
+ - [App tour](https://tmux-ide.com/docs/app-surfaces)
150
+ - [Agent status detection](https://tmux-ide.com/docs/agent-detection)
151
+ - [Claude Code agent teams](https://tmux-ide.com/docs/claude-code-agent-teams) and
152
+ [Multi-agent teams](https://tmux-ide.com/docs/multi-agent-teams)
153
+ - [Remote machines over SSH](https://tmux-ide.com/docs/remote-machines)
154
+ - [Restore and resume](https://tmux-ide.com/docs/restore-resume)
155
+ - [tmux chrome](https://tmux-ide.com/docs/the-dock)
156
+ - [CLI reference](https://tmux-ide.com/docs/commands)
157
+ - [Troubleshooting](https://tmux-ide.com/docs/troubleshooting)
151
158
 
152
- Regenerate the production-renderer demo with `pnpm demo:tui`.
159
+ Agents can read [tmux-ide.com/agents.md](https://tmux-ide.com/agents.md) for a
160
+ setup manual written for them.
153
161
 
154
- Explore real Home, sidebar, Help, pane-header and footer components with `pnpm gallery:tui`. The
155
- development gallery uses fixture data and local actions, so it does not connect
156
- to your daemon or change live tmux sessions. See the
157
- [gallery controls and checks](scripts/tui-gallery/README.md).
162
+ ## Contributing
158
163
 
159
- - [Documentation](https://github.com/wavyrai/tmux-ide/tree/main/docs)
160
- - [Contributing](CONTRIBUTING.md)
161
- - [Release checklist](RELEASE.md)
162
- - [Changelog](CHANGELOG.md)
163
- - [Security](SECURITY.md)
164
+ See [CONTRIBUTING.md](https://github.com/wavyrai/tmux-ide/blob/main/CONTRIBUTING.md)
165
+ and [Contributing to tmux-ide](https://tmux-ide.com/docs/contributing). Release
166
+ notes are in [CHANGELOG.md](https://github.com/wavyrai/tmux-ide/blob/main/CHANGELOG.md),
167
+ and security reports go through
168
+ [SECURITY.md](https://github.com/wavyrai/tmux-ide/blob/main/SECURITY.md).
164
169
 
165
170
  ## License
166
171
 
167
- [MIT](LICENSE)
168
-
169
- Owner-authorized `GET /api/resources/workspace-admission` returns a versioned,
170
- passive snapshot of workspace promotion and workspace-open admission. Each
171
- backend reports `pending`, its `limit`, `disposed`, and retained receipt counts
172
- (`retained` / `retentionLimit`). A `null` backend means unavailable or unknown.
173
- `pending >= limit` indicates queue pressure; `disposed` refuses new work.
174
- Promotion replay retention does not block admission. For workspace-open,
175
- `retentionMayBlock` indicates the current legacy receipt ledger is full; normal
176
- admission may still retire closed-workspace receipts and proceed. The snapshot
177
- performs no inventory discovery, mutation, or reservation. It describes only
178
- these admission owners, not whole-daemon readiness; `/health` remains liveness.
179
-
180
- `tmux-ide update --dry-run --json` reports the planned update without installing
181
- packages or refreshing skills. Stable installations use the npm `latest` tag;
182
- prerelease installations use `beta`. Update checks and notification receipts are
183
- cached separately per channel. The updater resolves its own installation path
184
- and verifies that the active npm, pnpm, or Bun global destination matches it
185
- before executing an argument-based manager command. Homebrew, Yarn, npx, source
186
- checkouts, unknown layouts, and mismatched manager prefixes receive manual
187
- instructions. Package postinstall owns skill refresh; `tmux-ide skill-sync` is
188
- available explicitly for installations that skip lifecycle scripts.
189
-
190
- Node.js 20 or newer is required. `doctor` accepts a project without a workspace
191
- preset; a present but malformed `.tmux-ide/workspace.yml` still fails validation.
172
+ [MIT](https://github.com/wavyrai/tmux-ide/blob/main/LICENSE) © Thijs Verreck