Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "sidemux",
"description": "Delegate commands to tmux sidecar panes — token-efficient run/wait/read for AI coding agents.",
"description": "Delegate token-heavy commands to live tmux panes: an efficient run/wait/read loop for AI coding agents.",
"owner": {
"name": "Tom Ford",
"email": "me@tomfordweb.net"
},
"plugins": [
{
"name": "sidemux",
"description": "Delegate long-running commands to tmux panes: blocking waits, incremental reads, exit-code detection.",
"description": "Delegate token-heavy commands to live tmux panes: an efficient run/wait/read loop for AI coding agents.",
"source": "./",
"category": "productivity"
}
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sidemux",
"description": "Delegate commands to tmux sidecar panes. run/wait/read tools that replace token-burning polling loops with one blocking call and incremental output reads.",
"description": "Delegate token-heavy commands to live tmux panes: an efficient run/wait/read loop for AI coding agents.",
"author": {
"name": "Tom Ford",
"email": "me@tomfordweb.net"
Expand Down
14 changes: 8 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@

Run these through the sidemux **`run`** MCP tool, not the Bash tool — long output stays in a tmux pane and you get an incremental tail:

- `pnpm test` → `run { command: "pnpm test" }`
- `pnpm lint` → `run { command: "pnpm lint" }`
- `pnpm typecheck` → `run { command: "pnpm typecheck" }`
- `pnpm build` → `run { command: "pnpm build" }`
- `pnpm dev` → `run { command: "pnpm dev", background: true }` then `wait { until: "pattern", … }`
- `pnpm test` → `run { command: "pnpm test", description: "<why>" }`
- `pnpm lint` → `run { command: "pnpm lint", description: "<why>" }`
- `pnpm typecheck` → `run { command: "pnpm typecheck", description: "<why>" }`
- `pnpm build` → `run { command: "pnpm build", description: "<why>" }`
- `pnpm dev` → `run { command: "pnpm dev", description: "<why>", background: true }` then `wait { until: "pattern", … }`

Any other heavy or long-output command — full test suites, linters, type checkers, builds, e2e runs, dev servers — should also go through `run`, even when it isn't listed above (`background: true` for servers/watchers you keep alive).

Prefer the current visible tmux session/window when one is available. If the tool can target an existing pane there, reuse it instead of creating a fresh pane. Panes are reused across runs — rerun a command and it lands back in the same pane (its header shows the command and pane id). `background: true` is for servers/watchers you keep alive and later `kill`; add `close: true` only when you truly want the pane gone afterward.
Every `run` requires a `description` — one line of context for the human watching the panes: "<stage> due to <reason>" (e.g. "typecheck gate before release", "run scripts at user request"). It shows in the pane header and dashboard.

Panes are reused across runs — rerun a command and it lands back in the same pane (its header shows the command and pane id). `background: true` is for servers/watchers you keep alive and later `kill`; add `close: true` only when you truly want the pane gone afterward.

<!-- END sidemux-delegate -->