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.
Files changed (267) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +121 -140
  3. package/bin/cli.js +2457 -727
  4. package/package.json +23 -8
  5. package/packages/contracts/src/desktop-host.ts +3 -0
  6. package/packages/contracts/src/saved-machines.ts +19 -0
  7. package/packages/contracts/src/terminal-replica.ts +1 -1
  8. package/packages/core/package.json +3 -2
  9. package/packages/core/src/terminal-delivery.ts +51 -3
  10. package/packages/core/src/terminal-fnv64-wasm.ts +4 -3
  11. package/packages/core/src/terminal-replica-hash-cache.ts +129 -31
  12. package/packages/core/src/terminal-replica-owned-row.ts +27 -0
  13. package/packages/core/src/terminal-replica.ts +13 -28
  14. package/packages/daemon/dist/command-center/daemon-fleet-facts-observer.js +96 -10
  15. package/packages/daemon/dist/command-center/resources/saved-machine-route.js +40 -1
  16. package/packages/daemon/dist/command-center/ws-events.js +5 -24
  17. package/packages/daemon/dist/lib/canonical-daemon-bootstrap.js +8 -0
  18. package/packages/daemon/dist/lib/canonical-daemon.js +28 -2
  19. package/packages/daemon/dist/lib/daemon-embed.js +1 -1
  20. package/packages/daemon/dist/lib/daemon-service-manager.js +122 -0
  21. package/packages/daemon/dist/lib/daemon-service-plan.js +127 -0
  22. package/packages/daemon/dist/lib/daemon-service.js +259 -0
  23. package/packages/daemon/dist/lib/install-origin.js +2 -0
  24. package/packages/daemon/dist/lib/local-fleet-request.js +9 -3
  25. package/packages/daemon/dist/lib/log.js +6 -10
  26. package/packages/daemon/dist/lib/managed-installer-update.js +67 -0
  27. package/packages/daemon/dist/lib/{tui-download-lock.js → private-operation-lock.js} +11 -11
  28. package/packages/daemon/dist/lib/remote-daemon-info.js +3 -2
  29. package/packages/daemon/dist/lib/remote-daemon-lifecycle.js +4 -4
  30. package/packages/daemon/dist/lib/remote-tmux-command.js +10 -0
  31. package/packages/daemon/dist/lib/runtime-namespace.js +28 -16
  32. package/packages/daemon/dist/lib/saved-machines.js +40 -2
  33. package/packages/daemon/dist/lib/ssh-daemon-transport.js +24 -9
  34. package/packages/daemon/dist/lib/tmux-server-owner.js +1 -1
  35. package/packages/daemon/dist/lib/tmux-server-registration.js +21 -3
  36. package/packages/daemon/dist/lib/tui-binary.js +2 -2
  37. package/packages/daemon/dist/lib/update.js +18 -0
  38. package/packages/daemon/dist/lib/workspace-multiplexer-verbs.js +24 -1
  39. package/packages/daemon/dist/machines.js +40 -4
  40. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Info.plist +2 -2
  41. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/MacOS/tmux-ide-notifier +0 -0
  42. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Resources/Assets.car +0 -0
  43. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/_CodeSignature/CodeResources +2 -2
  44. package/packages/daemon/dist/terminal/attachments/direct-websocket.js +4 -1
  45. package/packages/daemon/dist/terminal/attachments/native-runtime.js +22 -13
  46. package/packages/daemon/dist/terminal/mirror/mirror-service.js +101 -3
  47. package/packages/daemon/dist/terminal/mirror/registered-window-guard.js +62 -0
  48. package/packages/daemon/dist/terminal/mirror/session-channel.js +75 -4
  49. package/packages/daemon/dist/terminal/mirror/shared-window-index.js +45 -0
  50. package/packages/daemon/dist/terminal/pane-stream/pane-stream-websocket.js +11 -1
  51. package/packages/daemon/dist/terminal/session-runtime/multiplexer-backend.js +1 -0
  52. package/packages/daemon/dist/terminal/session-runtime/registry.js +56 -7
  53. package/packages/daemon/dist/terminal/session-runtime/semantic-mutation-executor.js +3 -1
  54. package/packages/daemon/dist/tui/integrations/claude-agent-teams.js +264 -0
  55. package/packages/daemon/dist/tui/mirror/dialog-model.js +2 -35
  56. package/packages/daemon/dist/tui/mirror/runtime/application-daemon-authority-owner.js +8 -0
  57. package/packages/daemon/dist/tui/mirror/runtime/application-home-fleet.js +20 -2
  58. package/packages/daemon/dist/tui/mirror/runtime/application-machine-agents.js +7 -1
  59. package/packages/daemon/dist/tui/mirror/runtime/application-machine-authority.js +59 -9
  60. package/packages/daemon/dist/tui/mirror/runtime/application-machine-navigation.js +27 -19
  61. package/packages/daemon/dist/tui/mirror/runtime/application-machine-sidebar.jsx +23 -18
  62. package/packages/daemon/dist/tui/mirror/runtime/application-machine-startup.js +31 -2
  63. package/packages/daemon/dist/tui/mirror/runtime/application-palette-search-owner.js +7 -3
  64. package/packages/daemon/dist/tui/mirror/runtime/application-performance-log.js +3 -0
  65. package/packages/daemon/dist/tui/mirror/runtime/application-terminal-input-ingress.js +146 -2
  66. package/packages/daemon/dist/tui/mirror/runtime/application-terminal-interaction-controller.js +201 -50
  67. package/packages/daemon/dist/tui/mirror/runtime/bounded-performance-record-writer.js +50 -10
  68. package/packages/daemon/dist/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.js +6 -5
  69. package/packages/daemon/dist/tui/mirror/runtime/terminal-pane-input-router.js +3 -0
  70. package/packages/daemon/dist/tui/mirror/runtime/workspace-terminal-fast-lane.js +8 -2
  71. package/packages/daemon/dist/tui/mirror/terminal-text.js +35 -0
  72. package/packages/daemon/dist/tui/mirror/workspace/connection-feedback.js +5 -3
  73. package/packages/daemon/src/command-center/daemon-fleet-facts-observer.ts +100 -10
  74. package/packages/daemon/src/command-center/resources/saved-machine-route.ts +48 -1
  75. package/packages/daemon/src/command-center/ws-events.ts +5 -25
  76. package/packages/daemon/src/lib/canonical-daemon-bootstrap.ts +12 -0
  77. package/packages/daemon/src/lib/canonical-daemon.ts +44 -2
  78. package/packages/daemon/src/lib/daemon-embed.ts +1 -0
  79. package/packages/daemon/src/lib/daemon-service-manager.ts +152 -0
  80. package/packages/daemon/src/lib/daemon-service-plan.ts +153 -0
  81. package/packages/daemon/src/lib/daemon-service.ts +301 -0
  82. package/packages/daemon/src/lib/install-origin.ts +5 -0
  83. package/packages/daemon/src/lib/local-fleet-request.ts +19 -3
  84. package/packages/daemon/src/lib/log.ts +13 -9
  85. package/packages/daemon/src/lib/managed-installer-update.ts +79 -0
  86. package/packages/daemon/src/lib/{tui-download-lock.ts → private-operation-lock.ts} +15 -11
  87. package/packages/daemon/src/lib/remote-daemon-info.ts +3 -3
  88. package/packages/daemon/src/lib/remote-daemon-lifecycle.ts +4 -4
  89. package/packages/daemon/src/lib/remote-tmux-command.ts +12 -0
  90. package/packages/daemon/src/lib/runtime-namespace.ts +27 -18
  91. package/packages/daemon/src/lib/saved-machines.ts +40 -1
  92. package/packages/daemon/src/lib/ssh-daemon-transport.ts +25 -7
  93. package/packages/daemon/src/lib/tmux-server-owner.ts +1 -0
  94. package/packages/daemon/src/lib/tmux-server-registration.ts +21 -3
  95. package/packages/daemon/src/lib/tui-binary.ts +2 -2
  96. package/packages/daemon/src/lib/update.ts +24 -0
  97. package/packages/daemon/src/lib/workspace-multiplexer-verbs.ts +22 -0
  98. package/packages/daemon/src/machines.ts +53 -5
  99. package/packages/daemon/src/terminal/attachments/direct-websocket.ts +8 -2
  100. package/packages/daemon/src/terminal/attachments/native-runtime.ts +28 -13
  101. package/packages/daemon/src/terminal/mirror/mirror-service.ts +105 -3
  102. package/packages/daemon/src/terminal/mirror/registered-window-guard.ts +66 -0
  103. package/packages/daemon/src/terminal/mirror/session-channel.ts +92 -4
  104. package/packages/daemon/src/terminal/mirror/shared-window-index.ts +42 -0
  105. package/packages/daemon/src/terminal/pane-stream/pane-stream-websocket.ts +12 -1
  106. package/packages/daemon/src/terminal/session-runtime/multiplexer-backend.ts +2 -0
  107. package/packages/daemon/src/terminal/session-runtime/registry.ts +70 -8
  108. package/packages/daemon/src/terminal/session-runtime/semantic-mutation-executor.ts +3 -1
  109. package/packages/daemon/src/tui/integrations/claude-agent-teams.ts +334 -0
  110. package/packages/daemon/src/tui/mirror/dialog-model.ts +2 -32
  111. package/packages/daemon/src/tui/mirror/runtime/application-daemon-authority-owner.ts +8 -0
  112. package/packages/daemon/src/tui/mirror/runtime/application-home-fleet.ts +19 -2
  113. package/packages/daemon/src/tui/mirror/runtime/application-machine-agents.ts +6 -1
  114. package/packages/daemon/src/tui/mirror/runtime/application-machine-authority.ts +60 -11
  115. package/packages/daemon/src/tui/mirror/runtime/application-machine-navigation.ts +39 -33
  116. package/packages/daemon/src/tui/mirror/runtime/application-machine-sidebar.tsx +31 -23
  117. package/packages/daemon/src/tui/mirror/runtime/application-machine-startup.ts +38 -2
  118. package/packages/daemon/src/tui/mirror/runtime/application-palette-search-owner.ts +7 -4
  119. package/packages/daemon/src/tui/mirror/runtime/application-performance-log.ts +3 -0
  120. package/packages/daemon/src/tui/mirror/runtime/application-root-v2.tsx +1 -1
  121. package/packages/daemon/src/tui/mirror/runtime/application-shell-view.tsx +47 -46
  122. package/packages/daemon/src/tui/mirror/runtime/application-terminal-input-ingress.ts +165 -2
  123. package/packages/daemon/src/tui/mirror/runtime/application-terminal-interaction-controller.ts +207 -53
  124. package/packages/daemon/src/tui/mirror/runtime/bounded-performance-record-writer.ts +49 -9
  125. package/packages/daemon/src/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.ts +6 -5
  126. package/packages/daemon/src/tui/mirror/runtime/terminal-pane-input-router.ts +4 -0
  127. package/packages/daemon/src/tui/mirror/runtime/workspace-terminal-fast-lane.ts +8 -3
  128. package/packages/daemon/src/tui/mirror/terminal-text.ts +32 -0
  129. package/packages/daemon/src/tui/mirror/workspace/connection-feedback.ts +6 -3
  130. package/packages/daemon-client/src/fleet-connection-status.ts +10 -1
  131. package/packages/daemon-client/src/workspace-client.ts +4 -1
  132. package/skill/SKILL.md +30 -30
  133. package/packages/contracts/src/__tests__/actions-contract.test.ts +0 -119
  134. package/packages/contracts/src/__tests__/agent-graph-overlay.test.ts +0 -428
  135. package/packages/contracts/src/__tests__/app-window-mutation.test.ts +0 -51
  136. package/packages/contracts/src/__tests__/app-window-state.test.ts +0 -34
  137. package/packages/contracts/src/__tests__/application-shell.test.ts +0 -645
  138. package/packages/contracts/src/__tests__/automation-operations.test.ts +0 -78
  139. package/packages/contracts/src/__tests__/causal-cell.test.ts +0 -47
  140. package/packages/contracts/src/__tests__/client-view-state.test.ts +0 -115
  141. package/packages/contracts/src/__tests__/cohesion-fixture.test.ts +0 -106
  142. package/packages/contracts/src/__tests__/commands.test.ts +0 -86
  143. package/packages/contracts/src/__tests__/control.test.ts +0 -154
  144. package/packages/contracts/src/__tests__/daemon-events.test.ts +0 -405
  145. package/packages/contracts/src/__tests__/daemon-resources.test.ts +0 -143
  146. package/packages/contracts/src/__tests__/daemon-wire.test.ts +0 -149
  147. package/packages/contracts/src/__tests__/desktop-host.test.ts +0 -269
  148. package/packages/contracts/src/__tests__/desktop-missions.test.ts +0 -215
  149. package/packages/contracts/src/__tests__/experience-conformance.test.ts +0 -153
  150. package/packages/contracts/src/__tests__/experience-kernel-boundary.test.ts +0 -113
  151. package/packages/contracts/src/__tests__/experience-shell.test.ts +0 -65
  152. package/packages/contracts/src/__tests__/fixtures/daemon-wire-v2.json +0 -35
  153. package/packages/contracts/src/__tests__/fixtures/daemon-wire-v3.json +0 -35
  154. package/packages/contracts/src/__tests__/fixtures/daemon-wire-v4.json +0 -35
  155. package/packages/contracts/src/__tests__/fixtures/scoped-receipt.ts +0 -62
  156. package/packages/contracts/src/__tests__/fleet-agent-graph.test.ts +0 -231
  157. package/packages/contracts/src/__tests__/fleet-catalog.test.ts +0 -270
  158. package/packages/contracts/src/__tests__/fleet-lifecycle.test.ts +0 -62
  159. package/packages/contracts/src/__tests__/focus-overlay.test.ts +0 -110
  160. package/packages/contracts/src/__tests__/ide-config.test.ts +0 -64
  161. package/packages/contracts/src/__tests__/interaction-evidence.test.ts +0 -288
  162. package/packages/contracts/src/__tests__/interaction-receipt-v2.test.ts +0 -72
  163. package/packages/contracts/src/__tests__/issue-error.test.ts +0 -78
  164. package/packages/contracts/src/__tests__/mission-projections.test.ts +0 -186
  165. package/packages/contracts/src/__tests__/missions.test.ts +0 -272
  166. package/packages/contracts/src/__tests__/multiplexer-verbs.test.ts +0 -242
  167. package/packages/contracts/src/__tests__/pane-appearance.test.ts +0 -146
  168. package/packages/contracts/src/__tests__/pane-read-result.test.ts +0 -55
  169. package/packages/contracts/src/__tests__/pane-stream.test.ts +0 -536
  170. package/packages/contracts/src/__tests__/pane-widget-marker.test.ts +0 -327
  171. package/packages/contracts/src/__tests__/performance-metrics.test.ts +0 -73
  172. package/packages/contracts/src/__tests__/performance-qualification.test.ts +0 -137
  173. package/packages/contracts/src/__tests__/rich-card-widget.test.ts +0 -29
  174. package/packages/contracts/src/__tests__/session-runtime.test.ts +0 -512
  175. package/packages/contracts/src/__tests__/startup-readiness.test.ts +0 -409
  176. package/packages/contracts/src/__tests__/terminal-attachment-stream.test.ts +0 -72
  177. package/packages/contracts/src/__tests__/terminal-attachments.test.ts +0 -329
  178. package/packages/contracts/src/__tests__/terminal-delivery.test.ts +0 -88
  179. package/packages/contracts/src/__tests__/terminal-runtime-inventory.test.ts +0 -68
  180. package/packages/contracts/src/__tests__/terminals.test.ts +0 -87
  181. package/packages/contracts/src/__tests__/tmux-server-scope.test.ts +0 -166
  182. package/packages/contracts/src/__tests__/transport-contract-loading.test.ts +0 -91
  183. package/packages/contracts/src/__tests__/visual-tokens.test.ts +0 -224
  184. package/packages/contracts/src/__tests__/window-links.test.ts +0 -243
  185. package/packages/contracts/src/__tests__/workspace-changes-resource.test.ts +0 -317
  186. package/packages/contracts/src/__tests__/workspace-changes-view.test.ts +0 -122
  187. package/packages/contracts/src/__tests__/workspace-config.test.ts +0 -294
  188. package/packages/contracts/src/__tests__/workspace-files-resource.test.ts +0 -261
  189. package/packages/contracts/src/__tests__/workspace-files-tree.test.ts +0 -147
  190. package/packages/contracts/src/__tests__/workspace-pane-creation.test.ts +0 -249
  191. package/packages/contracts/src/__tests__/workspace-promotion.test.ts +0 -94
  192. package/packages/contracts/src/__tests__/workspace-resource-identity.test.ts +0 -90
  193. package/packages/contracts/src/daemon-resource-request.test.ts +0 -192
  194. package/packages/contracts/src/native-operation-identity.test.ts +0 -23
  195. package/packages/contracts/src/workspace-admission.test.ts +0 -21
  196. package/packages/contracts/src/workspace-catalog-resource.test.ts +0 -146
  197. package/packages/core/src/agent-provisioning.test.ts +0 -42
  198. package/packages/core/src/application-shell-session.test.ts +0 -105
  199. package/packages/core/src/interaction-evidence.test.ts +0 -134
  200. package/packages/core/src/interaction-flow.test.ts +0 -66
  201. package/packages/core/src/interaction-receipts.test.ts +0 -671
  202. package/packages/core/src/navigator.test.ts +0 -34
  203. package/packages/core/src/optimistic-projection-conformance.test.ts +0 -75
  204. package/packages/core/src/optimistic-projection.test.ts +0 -118
  205. package/packages/core/src/performance-metrics.test.ts +0 -121
  206. package/packages/core/src/performance-qualification.test.ts +0 -283
  207. package/packages/core/src/saved-machines.test.ts +0 -80
  208. package/packages/core/src/terminal-compact-cold.test.ts +0 -87
  209. package/packages/core/src/terminal-conformance.test.ts +0 -48
  210. package/packages/core/src/terminal-delivery-cache-lifetime.test.ts +0 -167
  211. package/packages/core/src/terminal-delivery-encode-cooperative.test.ts +0 -140
  212. package/packages/core/src/terminal-delivery-representation-hash.test.ts +0 -77
  213. package/packages/core/src/terminal-delivery.test.ts +0 -1471
  214. package/packages/core/src/terminal-fnv64-wasm.test.ts +0 -61
  215. package/packages/core/src/terminal-replica-cold.test.ts +0 -31
  216. package/packages/core/src/terminal-replica-cooperative.test.ts +0 -170
  217. package/packages/core/src/terminal-replica-hash-cache.test.ts +0 -283
  218. package/packages/core/src/terminal-replica.test.ts +0 -347
  219. package/packages/core/src/workspace-selection.test.ts +0 -63
  220. package/packages/daemon/dist/__tests__/support.js +0 -33
  221. package/packages/daemon/dist/lib/__tests__/fixtures/workspace-state-writer.js +0 -58
  222. package/packages/daemon/dist/lib/__tests__/installed-recovery-fixture.js +0 -400
  223. package/packages/daemon/dist/terminal/__tests__/MockPtyAdapter.js +0 -182
  224. package/packages/daemon/dist/terminal/mirror/__tests__/scripted-channel.js +0 -98
  225. package/packages/daemon/dist/terminal/mirror/__tests__/simulated-channel.js +0 -156
  226. package/packages/daemon/src/tui/mirror/__snapshots__/activity-surface-renderer.test.tsx.snap +0 -42
  227. package/packages/daemon/src/tui/mirror/__snapshots__/changes-terminal-surface-renderer.test.tsx.snap +0 -267
  228. package/packages/daemon/src/tui/mirror/__snapshots__/home-files-surface-renderer.test.tsx.snap +0 -267
  229. package/packages/daemon/src/tui/mirror/__snapshots__/missions-surface-renderer.test.tsx.snap +0 -134
  230. package/packages/daemon/src/tui/mirror/__snapshots__/recipes-gallery-renderer.test.tsx.snap +0 -141
  231. package/packages/daemon/src/tui/mirror/__snapshots__/shell-chrome-renderer.test.tsx.snap +0 -134
  232. package/packages/daemon/src/tui/mirror/runtime/__snapshots__/application-shell-view-renderer.test.tsx.snap +0 -87
  233. package/packages/daemon/src/tui/mirror/workspace/__snapshots__/agent-terminal-canvas-renderer.test.tsx.snap +0 -348
  234. package/packages/daemon/src/tui/mirror/workspace/__snapshots__/application-shell-renderer.test.tsx.snap +0 -134
  235. package/packages/daemon/src/tui/mirror/workspace/__snapshots__/command-palette-surface-renderer.test.tsx.snap +0 -255
  236. package/packages/daemon/src/tui/mirror/workspace/__snapshots__/pane-frame-renderer.test.tsx.snap +0 -525
  237. package/packages/daemon/src/tui/mirror/workspace/__snapshots__/terminal-pane-header-polish-renderer.test.tsx.snap +0 -31
  238. package/packages/daemon/src/tui/mirror/workspace/__snapshots__/workbench-shell-renderer.test.tsx.snap +0 -134
  239. package/packages/daemon-client/src/application-shell-session.test.ts +0 -196
  240. package/packages/daemon-client/src/automation-client.test.ts +0 -214
  241. package/packages/daemon-client/src/bootstrap-coordinator.test.ts +0 -145
  242. package/packages/daemon-client/src/connection-supervisor.test.ts +0 -109
  243. package/packages/daemon-client/src/direct-application-shell-transport.test.ts +0 -941
  244. package/packages/daemon-client/src/first-latest-coordinator.test.ts +0 -175
  245. package/packages/daemon-client/src/fleet-dial-scheduler.test.ts +0 -114
  246. package/packages/daemon-client/src/fleet-environments.test.ts +0 -40
  247. package/packages/daemon-client/src/generation-bound-store-timers.test.ts +0 -74
  248. package/packages/daemon-client/src/owner-action-client.test.ts +0 -245
  249. package/packages/daemon-client/src/pane-stream-client.test.ts +0 -2841
  250. package/packages/daemon-client/src/pane-stream-clock-calibration.test.ts +0 -207
  251. package/packages/daemon-client/src/pane-stream-loopback-benchmark.test.ts +0 -51
  252. package/packages/daemon-client/src/push-resource-session.test.ts +0 -509
  253. package/packages/daemon-client/src/resource-replica.test.ts +0 -186
  254. package/packages/daemon-client/src/runtime-resource-ledger.test.ts +0 -18
  255. package/packages/daemon-client/src/scoped-tmux-server-transport.test.ts +0 -114
  256. package/packages/daemon-client/src/terminal-fast-lane.test.ts +0 -835
  257. package/packages/daemon-client/src/tmux-server-client.test.ts +0 -279
  258. package/packages/daemon-client/src/tmux-server-interaction-events.test.ts +0 -230
  259. package/packages/daemon-client/src/workspace-catalog-v2.test.ts +0 -109
  260. package/packages/daemon-client/src/workspace-client-boundaries.test.ts +0 -59
  261. package/packages/daemon-client/src/workspace-client-operations.test.ts +0 -96
  262. package/packages/daemon-client/src/workspace-client.test.ts +0 -2912
  263. package/packages/daemon-client/src/workspace-event-supervisor.test.ts +0 -1086
  264. package/packages/daemon-client/src/workspace-pane-client.test.ts +0 -80
  265. package/packages/presentation/src/presentation-contract.test.ts +0 -63
  266. package/packages/tmux-bridge/src/runner.test.ts +0 -614
  267. package/packages/tmux-bridge/src/targeting.test.ts +0 -107
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,185 +7,166 @@
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
 
27
28
  ```bash
28
- curl -fsSL https://tmux.thijsverreck.com/install.sh | sh
29
+ 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