tmux-ide 2.9.2 → 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 +1 -1
- package/README.md +121 -140
- package/bin/cli.js +2457 -727
- package/package.json +23 -8
- package/packages/contracts/src/desktop-host.ts +3 -0
- package/packages/contracts/src/saved-machines.ts +19 -0
- package/packages/contracts/src/terminal-replica.ts +1 -1
- package/packages/core/package.json +3 -2
- package/packages/core/src/terminal-delivery.ts +51 -3
- package/packages/core/src/terminal-fnv64-wasm.ts +4 -3
- package/packages/core/src/terminal-replica-hash-cache.ts +129 -31
- package/packages/core/src/terminal-replica-owned-row.ts +27 -0
- package/packages/core/src/terminal-replica.ts +13 -28
- package/packages/daemon/dist/command-center/daemon-fleet-facts-observer.js +96 -10
- package/packages/daemon/dist/command-center/resources/saved-machine-route.js +40 -1
- package/packages/daemon/dist/command-center/ws-events.js +5 -24
- package/packages/daemon/dist/lib/canonical-daemon-bootstrap.js +8 -0
- package/packages/daemon/dist/lib/canonical-daemon.js +28 -2
- package/packages/daemon/dist/lib/daemon-embed.js +1 -1
- package/packages/daemon/dist/lib/daemon-service-manager.js +122 -0
- package/packages/daemon/dist/lib/daemon-service-plan.js +127 -0
- package/packages/daemon/dist/lib/daemon-service.js +259 -0
- package/packages/daemon/dist/lib/install-origin.js +2 -0
- package/packages/daemon/dist/lib/local-fleet-request.js +9 -3
- package/packages/daemon/dist/lib/log.js +6 -10
- package/packages/daemon/dist/lib/managed-installer-update.js +67 -0
- package/packages/daemon/dist/lib/{tui-download-lock.js → private-operation-lock.js} +11 -11
- package/packages/daemon/dist/lib/remote-daemon-info.js +3 -2
- package/packages/daemon/dist/lib/remote-daemon-lifecycle.js +4 -4
- package/packages/daemon/dist/lib/remote-tmux-command.js +10 -0
- package/packages/daemon/dist/lib/runtime-namespace.js +28 -16
- package/packages/daemon/dist/lib/saved-machines.js +40 -2
- package/packages/daemon/dist/lib/ssh-daemon-transport.js +24 -9
- package/packages/daemon/dist/lib/tmux-server-owner.js +1 -1
- package/packages/daemon/dist/lib/tmux-server-registration.js +21 -3
- package/packages/daemon/dist/lib/tui-binary.js +2 -2
- package/packages/daemon/dist/lib/update.js +18 -0
- package/packages/daemon/dist/lib/workspace-multiplexer-verbs.js +24 -1
- package/packages/daemon/dist/machines.js +40 -4
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Info.plist +2 -2
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/MacOS/tmux-ide-notifier +0 -0
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Resources/Assets.car +0 -0
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/_CodeSignature/CodeResources +2 -2
- package/packages/daemon/dist/terminal/attachments/direct-websocket.js +4 -1
- package/packages/daemon/dist/terminal/attachments/native-runtime.js +22 -13
- package/packages/daemon/dist/terminal/mirror/mirror-service.js +101 -3
- package/packages/daemon/dist/terminal/mirror/registered-window-guard.js +62 -0
- package/packages/daemon/dist/terminal/mirror/session-channel.js +75 -4
- package/packages/daemon/dist/terminal/mirror/shared-window-index.js +45 -0
- package/packages/daemon/dist/terminal/pane-stream/pane-stream-websocket.js +11 -1
- package/packages/daemon/dist/terminal/session-runtime/multiplexer-backend.js +1 -0
- package/packages/daemon/dist/terminal/session-runtime/registry.js +56 -7
- package/packages/daemon/dist/terminal/session-runtime/semantic-mutation-executor.js +3 -1
- package/packages/daemon/dist/tui/integrations/claude-agent-teams.js +264 -0
- package/packages/daemon/dist/tui/mirror/dialog-model.js +2 -35
- package/packages/daemon/dist/tui/mirror/runtime/application-daemon-authority-owner.js +8 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-home-fleet.js +20 -2
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-agents.js +7 -1
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-authority.js +59 -9
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-navigation.js +27 -19
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-sidebar.jsx +23 -18
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-startup.js +31 -2
- package/packages/daemon/dist/tui/mirror/runtime/application-palette-search-owner.js +7 -3
- package/packages/daemon/dist/tui/mirror/runtime/application-performance-log.js +3 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-input-ingress.js +146 -2
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-interaction-controller.js +201 -50
- package/packages/daemon/dist/tui/mirror/runtime/bounded-performance-record-writer.js +50 -10
- package/packages/daemon/dist/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.js +6 -5
- package/packages/daemon/dist/tui/mirror/runtime/terminal-pane-input-router.js +3 -0
- package/packages/daemon/dist/tui/mirror/runtime/workspace-terminal-fast-lane.js +8 -2
- package/packages/daemon/dist/tui/mirror/terminal-text.js +35 -0
- package/packages/daemon/dist/tui/mirror/workspace/connection-feedback.js +5 -3
- package/packages/daemon/src/command-center/daemon-fleet-facts-observer.ts +100 -10
- package/packages/daemon/src/command-center/resources/saved-machine-route.ts +48 -1
- package/packages/daemon/src/command-center/ws-events.ts +5 -25
- package/packages/daemon/src/lib/canonical-daemon-bootstrap.ts +12 -0
- package/packages/daemon/src/lib/canonical-daemon.ts +44 -2
- package/packages/daemon/src/lib/daemon-embed.ts +1 -0
- package/packages/daemon/src/lib/daemon-service-manager.ts +152 -0
- package/packages/daemon/src/lib/daemon-service-plan.ts +153 -0
- package/packages/daemon/src/lib/daemon-service.ts +301 -0
- package/packages/daemon/src/lib/install-origin.ts +5 -0
- package/packages/daemon/src/lib/local-fleet-request.ts +19 -3
- package/packages/daemon/src/lib/log.ts +13 -9
- package/packages/daemon/src/lib/managed-installer-update.ts +79 -0
- package/packages/daemon/src/lib/{tui-download-lock.ts → private-operation-lock.ts} +15 -11
- package/packages/daemon/src/lib/remote-daemon-info.ts +3 -3
- package/packages/daemon/src/lib/remote-daemon-lifecycle.ts +4 -4
- package/packages/daemon/src/lib/remote-tmux-command.ts +12 -0
- package/packages/daemon/src/lib/runtime-namespace.ts +27 -18
- package/packages/daemon/src/lib/saved-machines.ts +40 -1
- package/packages/daemon/src/lib/ssh-daemon-transport.ts +25 -7
- package/packages/daemon/src/lib/tmux-server-owner.ts +1 -0
- package/packages/daemon/src/lib/tmux-server-registration.ts +21 -3
- package/packages/daemon/src/lib/tui-binary.ts +2 -2
- package/packages/daemon/src/lib/update.ts +24 -0
- package/packages/daemon/src/lib/workspace-multiplexer-verbs.ts +22 -0
- package/packages/daemon/src/machines.ts +53 -5
- package/packages/daemon/src/terminal/attachments/direct-websocket.ts +8 -2
- package/packages/daemon/src/terminal/attachments/native-runtime.ts +28 -13
- package/packages/daemon/src/terminal/mirror/mirror-service.ts +105 -3
- package/packages/daemon/src/terminal/mirror/registered-window-guard.ts +66 -0
- package/packages/daemon/src/terminal/mirror/session-channel.ts +92 -4
- package/packages/daemon/src/terminal/mirror/shared-window-index.ts +42 -0
- package/packages/daemon/src/terminal/pane-stream/pane-stream-websocket.ts +12 -1
- package/packages/daemon/src/terminal/session-runtime/multiplexer-backend.ts +2 -0
- package/packages/daemon/src/terminal/session-runtime/registry.ts +70 -8
- package/packages/daemon/src/terminal/session-runtime/semantic-mutation-executor.ts +3 -1
- package/packages/daemon/src/tui/integrations/claude-agent-teams.ts +334 -0
- package/packages/daemon/src/tui/mirror/dialog-model.ts +2 -32
- package/packages/daemon/src/tui/mirror/runtime/application-daemon-authority-owner.ts +8 -0
- package/packages/daemon/src/tui/mirror/runtime/application-home-fleet.ts +19 -2
- package/packages/daemon/src/tui/mirror/runtime/application-machine-agents.ts +6 -1
- package/packages/daemon/src/tui/mirror/runtime/application-machine-authority.ts +60 -11
- package/packages/daemon/src/tui/mirror/runtime/application-machine-navigation.ts +39 -33
- package/packages/daemon/src/tui/mirror/runtime/application-machine-sidebar.tsx +31 -23
- package/packages/daemon/src/tui/mirror/runtime/application-machine-startup.ts +38 -2
- package/packages/daemon/src/tui/mirror/runtime/application-palette-search-owner.ts +7 -4
- package/packages/daemon/src/tui/mirror/runtime/application-performance-log.ts +3 -0
- package/packages/daemon/src/tui/mirror/runtime/application-root-v2.tsx +1 -1
- package/packages/daemon/src/tui/mirror/runtime/application-shell-view.tsx +47 -46
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-input-ingress.ts +165 -2
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-interaction-controller.ts +207 -53
- package/packages/daemon/src/tui/mirror/runtime/bounded-performance-record-writer.ts +49 -9
- package/packages/daemon/src/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.ts +6 -5
- package/packages/daemon/src/tui/mirror/runtime/terminal-pane-input-router.ts +4 -0
- package/packages/daemon/src/tui/mirror/runtime/workspace-terminal-fast-lane.ts +8 -3
- package/packages/daemon/src/tui/mirror/terminal-text.ts +32 -0
- package/packages/daemon/src/tui/mirror/workspace/connection-feedback.ts +6 -3
- package/packages/daemon-client/src/fleet-connection-status.ts +10 -1
- package/packages/daemon-client/src/workspace-client.ts +4 -1
- package/skill/SKILL.md +30 -30
- package/packages/contracts/src/__tests__/actions-contract.test.ts +0 -119
- package/packages/contracts/src/__tests__/agent-graph-overlay.test.ts +0 -428
- package/packages/contracts/src/__tests__/app-window-mutation.test.ts +0 -51
- package/packages/contracts/src/__tests__/app-window-state.test.ts +0 -34
- package/packages/contracts/src/__tests__/application-shell.test.ts +0 -645
- package/packages/contracts/src/__tests__/automation-operations.test.ts +0 -78
- package/packages/contracts/src/__tests__/causal-cell.test.ts +0 -47
- package/packages/contracts/src/__tests__/client-view-state.test.ts +0 -115
- package/packages/contracts/src/__tests__/cohesion-fixture.test.ts +0 -106
- package/packages/contracts/src/__tests__/commands.test.ts +0 -86
- package/packages/contracts/src/__tests__/control.test.ts +0 -154
- package/packages/contracts/src/__tests__/daemon-events.test.ts +0 -405
- package/packages/contracts/src/__tests__/daemon-resources.test.ts +0 -143
- package/packages/contracts/src/__tests__/daemon-wire.test.ts +0 -149
- package/packages/contracts/src/__tests__/desktop-host.test.ts +0 -269
- package/packages/contracts/src/__tests__/desktop-missions.test.ts +0 -215
- package/packages/contracts/src/__tests__/experience-conformance.test.ts +0 -153
- package/packages/contracts/src/__tests__/experience-kernel-boundary.test.ts +0 -113
- package/packages/contracts/src/__tests__/experience-shell.test.ts +0 -65
- package/packages/contracts/src/__tests__/fixtures/daemon-wire-v2.json +0 -35
- package/packages/contracts/src/__tests__/fixtures/daemon-wire-v3.json +0 -35
- package/packages/contracts/src/__tests__/fixtures/daemon-wire-v4.json +0 -35
- package/packages/contracts/src/__tests__/fixtures/scoped-receipt.ts +0 -62
- package/packages/contracts/src/__tests__/fleet-agent-graph.test.ts +0 -231
- package/packages/contracts/src/__tests__/fleet-catalog.test.ts +0 -270
- package/packages/contracts/src/__tests__/fleet-lifecycle.test.ts +0 -62
- package/packages/contracts/src/__tests__/focus-overlay.test.ts +0 -110
- package/packages/contracts/src/__tests__/ide-config.test.ts +0 -64
- package/packages/contracts/src/__tests__/interaction-evidence.test.ts +0 -288
- package/packages/contracts/src/__tests__/interaction-receipt-v2.test.ts +0 -72
- package/packages/contracts/src/__tests__/issue-error.test.ts +0 -78
- package/packages/contracts/src/__tests__/mission-projections.test.ts +0 -186
- package/packages/contracts/src/__tests__/missions.test.ts +0 -272
- package/packages/contracts/src/__tests__/multiplexer-verbs.test.ts +0 -242
- package/packages/contracts/src/__tests__/pane-appearance.test.ts +0 -146
- package/packages/contracts/src/__tests__/pane-read-result.test.ts +0 -55
- package/packages/contracts/src/__tests__/pane-stream.test.ts +0 -536
- package/packages/contracts/src/__tests__/pane-widget-marker.test.ts +0 -327
- package/packages/contracts/src/__tests__/performance-metrics.test.ts +0 -73
- package/packages/contracts/src/__tests__/performance-qualification.test.ts +0 -137
- package/packages/contracts/src/__tests__/rich-card-widget.test.ts +0 -29
- package/packages/contracts/src/__tests__/session-runtime.test.ts +0 -512
- package/packages/contracts/src/__tests__/startup-readiness.test.ts +0 -409
- package/packages/contracts/src/__tests__/terminal-attachment-stream.test.ts +0 -72
- package/packages/contracts/src/__tests__/terminal-attachments.test.ts +0 -329
- package/packages/contracts/src/__tests__/terminal-delivery.test.ts +0 -88
- package/packages/contracts/src/__tests__/terminal-runtime-inventory.test.ts +0 -68
- package/packages/contracts/src/__tests__/terminals.test.ts +0 -87
- package/packages/contracts/src/__tests__/tmux-server-scope.test.ts +0 -166
- package/packages/contracts/src/__tests__/transport-contract-loading.test.ts +0 -91
- package/packages/contracts/src/__tests__/visual-tokens.test.ts +0 -224
- package/packages/contracts/src/__tests__/window-links.test.ts +0 -243
- package/packages/contracts/src/__tests__/workspace-changes-resource.test.ts +0 -317
- package/packages/contracts/src/__tests__/workspace-changes-view.test.ts +0 -122
- package/packages/contracts/src/__tests__/workspace-config.test.ts +0 -294
- package/packages/contracts/src/__tests__/workspace-files-resource.test.ts +0 -261
- package/packages/contracts/src/__tests__/workspace-files-tree.test.ts +0 -147
- package/packages/contracts/src/__tests__/workspace-pane-creation.test.ts +0 -249
- package/packages/contracts/src/__tests__/workspace-promotion.test.ts +0 -94
- package/packages/contracts/src/__tests__/workspace-resource-identity.test.ts +0 -90
- package/packages/contracts/src/daemon-resource-request.test.ts +0 -192
- package/packages/contracts/src/native-operation-identity.test.ts +0 -23
- package/packages/contracts/src/workspace-admission.test.ts +0 -21
- package/packages/contracts/src/workspace-catalog-resource.test.ts +0 -146
- package/packages/core/src/agent-provisioning.test.ts +0 -42
- package/packages/core/src/application-shell-session.test.ts +0 -105
- package/packages/core/src/interaction-evidence.test.ts +0 -134
- package/packages/core/src/interaction-flow.test.ts +0 -66
- package/packages/core/src/interaction-receipts.test.ts +0 -671
- package/packages/core/src/navigator.test.ts +0 -34
- package/packages/core/src/optimistic-projection-conformance.test.ts +0 -75
- package/packages/core/src/optimistic-projection.test.ts +0 -118
- package/packages/core/src/performance-metrics.test.ts +0 -121
- package/packages/core/src/performance-qualification.test.ts +0 -283
- package/packages/core/src/saved-machines.test.ts +0 -80
- package/packages/core/src/terminal-compact-cold.test.ts +0 -87
- package/packages/core/src/terminal-conformance.test.ts +0 -48
- package/packages/core/src/terminal-delivery-cache-lifetime.test.ts +0 -167
- package/packages/core/src/terminal-delivery-encode-cooperative.test.ts +0 -140
- package/packages/core/src/terminal-delivery-representation-hash.test.ts +0 -77
- package/packages/core/src/terminal-delivery.test.ts +0 -1471
- package/packages/core/src/terminal-fnv64-wasm.test.ts +0 -61
- package/packages/core/src/terminal-replica-cold.test.ts +0 -31
- package/packages/core/src/terminal-replica-cooperative.test.ts +0 -170
- package/packages/core/src/terminal-replica-hash-cache.test.ts +0 -283
- package/packages/core/src/terminal-replica.test.ts +0 -347
- package/packages/core/src/workspace-selection.test.ts +0 -63
- package/packages/daemon/dist/__tests__/support.js +0 -33
- package/packages/daemon/dist/lib/__tests__/fixtures/workspace-state-writer.js +0 -58
- package/packages/daemon/dist/lib/__tests__/installed-recovery-fixture.js +0 -400
- package/packages/daemon/dist/terminal/__tests__/MockPtyAdapter.js +0 -182
- package/packages/daemon/dist/terminal/mirror/__tests__/scripted-channel.js +0 -98
- package/packages/daemon/dist/terminal/mirror/__tests__/simulated-channel.js +0 -156
- package/packages/daemon/src/tui/mirror/__snapshots__/activity-surface-renderer.test.tsx.snap +0 -42
- package/packages/daemon/src/tui/mirror/__snapshots__/changes-terminal-surface-renderer.test.tsx.snap +0 -267
- package/packages/daemon/src/tui/mirror/__snapshots__/home-files-surface-renderer.test.tsx.snap +0 -267
- package/packages/daemon/src/tui/mirror/__snapshots__/missions-surface-renderer.test.tsx.snap +0 -134
- package/packages/daemon/src/tui/mirror/__snapshots__/recipes-gallery-renderer.test.tsx.snap +0 -141
- package/packages/daemon/src/tui/mirror/__snapshots__/shell-chrome-renderer.test.tsx.snap +0 -134
- package/packages/daemon/src/tui/mirror/runtime/__snapshots__/application-shell-view-renderer.test.tsx.snap +0 -87
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/agent-terminal-canvas-renderer.test.tsx.snap +0 -348
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/application-shell-renderer.test.tsx.snap +0 -134
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/command-palette-surface-renderer.test.tsx.snap +0 -255
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/pane-frame-renderer.test.tsx.snap +0 -525
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/terminal-pane-header-polish-renderer.test.tsx.snap +0 -31
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/workbench-shell-renderer.test.tsx.snap +0 -134
- package/packages/daemon-client/src/application-shell-session.test.ts +0 -196
- package/packages/daemon-client/src/automation-client.test.ts +0 -214
- package/packages/daemon-client/src/bootstrap-coordinator.test.ts +0 -145
- package/packages/daemon-client/src/connection-supervisor.test.ts +0 -109
- package/packages/daemon-client/src/direct-application-shell-transport.test.ts +0 -941
- package/packages/daemon-client/src/first-latest-coordinator.test.ts +0 -175
- package/packages/daemon-client/src/fleet-dial-scheduler.test.ts +0 -114
- package/packages/daemon-client/src/fleet-environments.test.ts +0 -40
- package/packages/daemon-client/src/generation-bound-store-timers.test.ts +0 -74
- package/packages/daemon-client/src/owner-action-client.test.ts +0 -245
- package/packages/daemon-client/src/pane-stream-client.test.ts +0 -2841
- package/packages/daemon-client/src/pane-stream-clock-calibration.test.ts +0 -207
- package/packages/daemon-client/src/pane-stream-loopback-benchmark.test.ts +0 -51
- package/packages/daemon-client/src/push-resource-session.test.ts +0 -509
- package/packages/daemon-client/src/resource-replica.test.ts +0 -186
- package/packages/daemon-client/src/runtime-resource-ledger.test.ts +0 -18
- package/packages/daemon-client/src/scoped-tmux-server-transport.test.ts +0 -114
- package/packages/daemon-client/src/terminal-fast-lane.test.ts +0 -835
- package/packages/daemon-client/src/tmux-server-client.test.ts +0 -279
- package/packages/daemon-client/src/tmux-server-interaction-events.test.ts +0 -230
- package/packages/daemon-client/src/workspace-catalog-v2.test.ts +0 -109
- package/packages/daemon-client/src/workspace-client-boundaries.test.ts +0 -59
- package/packages/daemon-client/src/workspace-client-operations.test.ts +0 -96
- package/packages/daemon-client/src/workspace-client.test.ts +0 -2912
- package/packages/daemon-client/src/workspace-event-supervisor.test.ts +0 -1086
- package/packages/daemon-client/src/workspace-pane-client.test.ts +0 -80
- package/packages/presentation/src/presentation-contract.test.ts +0 -63
- package/packages/tmux-bridge/src/runner.test.ts +0 -614
- package/packages/tmux-bridge/src/targeting.test.ts +0 -107
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -7,185 +7,166 @@
|
|
|
7
7
|
|
|
8
8
|
<h1 align="center">tmux-ide</h1>
|
|
9
9
|
|
|
10
|
-
<p align="center"><strong>
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
|
27
28
|
```bash
|
|
28
|
-
curl -fsSL https://tmux.
|
|
29
|
+
curl -fsSL https://tmux-ide.com/install.sh | sh
|
|
29
30
|
tmux-ide app
|
|
30
31
|
```
|
|
31
32
|
|
|
32
|
-
|
|
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
|
|
36
|
+
npm install -g tmux-ide
|
|
37
|
+
tmux-ide app
|
|
41
38
|
```
|
|
42
39
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
48
|
-
tmux
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
89
|
-
layout, scaffold `.tmux-ide/workspace.yml`:
|
|
105
|
+
## Get exact Claude Code status
|
|
90
106
|
|
|
91
107
|
```bash
|
|
92
|
-
tmux-ide
|
|
93
|
-
tmux-ide start
|
|
108
|
+
tmux-ide integration install claude
|
|
94
109
|
```
|
|
95
110
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
114
|
-
`tmux-ide migrate --dry-run` before writing the current format.
|
|
119
|
+
## Optional workspace layout
|
|
115
120
|
|
|
116
|
-
|
|
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
|
-
```
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
-
|
|
128
|
-
|
|
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
|
-
##
|
|
133
|
+
## How it works
|
|
132
134
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
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
|
-
|
|
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
|
-
##
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
pnpm install --frozen-lockfile
|
|
144
|
-
pnpm release:opentui:check
|
|
145
|
-
pnpm docs:build
|
|
146
|
-
```
|
|
146
|
+
## Documentation
|
|
147
147
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|