{"_id":"@danielishi/lmux","_rev":"2-63ef0cd641aba1121f5479d382244034","name":"@danielishi/lmux","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"name":"@danielishi/lmux","version":"0.1.1","keywords":["claude-code","tmux","ai-agents","terminal-multiplexer","cmux","wmux","agent-orchestration"],"author":{"name":"Daniel Bratschke"},"license":"MIT","_id":"@danielishi/lmux@0.1.1","maintainers":[{"name":"danielishi","email":"daniel.bratschke@gmail.com"}],"homepage":"https://github.com/DanielIshi/lmux#readme","bugs":{"url":"https://github.com/DanielIshi/lmux/issues"},"os":["linux","darwin"],"bin":{"lmux":"bin/lmux","lmux-grid":"bin/lmux-grid","lmux-read":"bin/lmux-read","lmux-send":"bin/lmux-send","lmux-send-key":"bin/lmux-send-key"},"dist":{"shasum":"1ea075517d6662749321c839bb9c2582bd4aadce","tarball":"https://registry.npmjs.org/@danielishi/lmux/-/lmux-0.1.1.tgz","fileCount":11,"integrity":"sha512-C2Gv2fYKEJQ++kUilA8Am0YNWS4vZgy0eOBAdpe6zwlpsG8620e99PtRHLua8xROmbIBI1bkArccT4OJouk9ZA==","signatures":[{"sig":"MEUCIDZpR/HMmj6UDNL2dCx6/0P5k7jxD8h6c7DsVyQGdyrSAiEAkPY5R22yG1w2x8FdKsOeuNvTNUfK45etUh9yqarB2Ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30328},"engines":{"node":">=14"},"gitHead":"ea4d55fbee56762feaecfddc56acb7c6ca4bc968","scripts":{"test":"echo 'Tests use bats — run: bats tests/'","postinstall":"node -e \"const { execSync } = require('child_process'); try { execSync('tmux -V', { stdio: 'ignore' }); } catch { console.warn('[lmux] WARNING: tmux not found on PATH. Install it (apt/dnf/brew install tmux) for lmux to work.'); }\""},"_npmUser":{"name":"danielishi","email":"daniel.bratschke@gmail.com"},"repository":{"url":"git+https://github.com/DanielIshi/lmux.git","type":"git"},"_npmVersion":"10.8.2","description":"Linux terminal multiplexer companion for Claude Code agents — drop-in API equivalent of cmux (macOS) and wmux (Windows)","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lmux_0.1.1_1780174485382_0.5075037933141451","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@danielishi/lmux","version":"0.1.2","description":"Linux terminal multiplexer companion for Claude Code agents — drop-in API equivalent of cmux (macOS) and wmux (Windows)","bin":{"lmux":"bin/lmux","lmux-send":"bin/lmux-send","lmux-read":"bin/lmux-read","lmux-send-key":"bin/lmux-send-key","lmux-grid":"bin/lmux-grid"},"scripts":{"postinstall":"node -e \"const { execSync } = require('child_process'); try { execSync('tmux -V', { stdio: 'ignore' }); } catch { console.warn('[lmux] WARNING: tmux not found on PATH. Install it (apt/dnf/brew install tmux) for lmux to work.'); }\"","test":"echo 'Tests use bats — run: bats tests/'"},"os":["linux","darwin"],"engines":{"node":">=14"},"keywords":["claude-code","tmux","ai-agents","terminal-multiplexer","cmux","wmux","agent-orchestration"],"author":{"name":"Daniel Bratschke"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/DanielIshi/lmux.git"},"homepage":"https://github.com/DanielIshi/lmux#readme","bugs":{"url":"https://github.com/DanielIshi/lmux/issues"},"_id":"@danielishi/lmux@0.1.2","gitHead":"bef8a0225e83130f8fcbbb3807d8ddebc0e956cd","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-6H/2T4B7wIR4gMMBHN+AdNUkYgHvKaG9AZJxMLS5YdlVrxDnJk2d2yLw3mWareiASbug7TMRhKb6GWu3zgdQhQ==","shasum":"2cd3bdd2c599e8a7fcf18e4aee9f5456f66fb7f8","tarball":"https://registry.npmjs.org/@danielishi/lmux/-/lmux-0.1.2.tgz","fileCount":11,"unpackedSize":30352,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDef1lFHpjJiTiLf2XA4mqS5/+sJ3lpjEtQhluCc0gixwIhAP06Sw9JRWq/y/e3/Vjnc75kguNYdxoSvC4eZ9nLQLfG"}]},"_npmUser":{"name":"danielishi","email":"daniel.bratschke@gmail.com"},"directories":{},"maintainers":[{"name":"danielishi","email":"daniel.bratschke@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lmux_0.1.2_1780174683933_0.22236861156954268"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T20:54:45.270Z","modified":"2026-05-30T20:58:04.206Z","0.1.1":"2026-05-30T20:54:45.517Z","0.1.2":"2026-05-30T20:58:04.102Z"},"bugs":{"url":"https://github.com/DanielIshi/lmux/issues"},"author":{"name":"Daniel Bratschke"},"license":"MIT","homepage":"https://github.com/DanielIshi/lmux#readme","keywords":["claude-code","tmux","ai-agents","terminal-multiplexer","cmux","wmux","agent-orchestration"],"repository":{"type":"git","url":"git+https://github.com/DanielIshi/lmux.git"},"description":"Linux terminal multiplexer companion for Claude Code agents — drop-in API equivalent of cmux (macOS) and wmux (Windows)","maintainers":[{"name":"danielishi","email":"daniel.bratschke@gmail.com"}],"readme":"# lmux\n\n**lmux — Linux terminal multiplexer for Claude Code agent orchestration. The Linux peer of cmux (macOS) and wmux (Windows).**\n\nlmux is a thin CLI wrapper around `tmux` that exposes a stable, scriptable interface for orchestrating multiple Claude Code agents in panes, splits, and workspaces. It mirrors the cmux API one-to-one so the same orchestration code, skills, and agent definitions work unchanged across all three platforms.\n\n## Platform ecosystem\n\n| Platform | Tool | Backend | Install |\n|---|---|---|---|\n| Windows | [wmux](https://github.com/openwong2kim/wmux) | Electron + ConPTY | Installer |\n| macOS | [cmux](https://github.com/manaflow-ai/cmux) | Swift / AppKit | Homebrew |\n| **Linux** | **lmux** | **tmux wrapper** | **curl \\| bash** |\n\nAll three expose the same CLI surface (`<x>mux send`, `read-screen`, `new-split`, `tree`, `identify`, ...), so an agent skill written against one runs against all of them.\n\n## Requirements\n\n- Linux (any distribution with bash)\n- `tmux` >= 3.0\n- `bash` >= 4.0\n\n## Install\n\nPreferred (npm):\n\n```bash\nnpm install -g @danielishi/lmux\n```\n\nAlternative (curl | bash):\n\n```bash\ncurl -sL https://raw.githubusercontent.com/DanielIshi/lmux/master/install.sh | bash\n```\n\nThe installer symlinks `lmux*` into `/usr/local/bin/` and verifies the install with `lmux identify`. The npm install registers the `lmux*` binaries on your `PATH` via npm's global bin directory.\n\n## Quick start\n\n```bash\ntmux new-session -d -s agents              # start a tmux session\nlmux new-split right                        # → surface:2\nlmux send --surface surface:1 \"claude\\n\"   # launch claude in left pane\nlmux send --surface surface:2 \"claude\\n\"   # launch claude in right pane\nlmux read-screen --surface surface:1        # read left pane output\n```\n\n## Command reference\n\n| Command | Flags | Description |\n|---|---|---|\n| `lmux send` | `--surface surface:N \"text\"` | Send text to pane (append `\\n` for Enter) |\n| `lmux send-key` | `--surface surface:N <key>` | Send key: `return`, `ctrl+c`, `ctrl+d`, etc. |\n| `lmux read-screen` | `--surface surface:N [--scrollback] [--lines N]` | Read pane output |\n| `lmux new-split` | `right\\|down` | Split pane, returns new `surface:N` |\n| `lmux close-surface` | `--surface surface:N` | Kill pane |\n| `lmux tree` | `--all --json` | JSON hierarchy of all panes |\n| `lmux identify` | — | Verify lmux (tmux) environment |\n| `lmux list-workspaces` | — | List workspaces (tmux windows) |\n| `lmux notify` | `--title T --body B` | Desktop notification |\n| `lmux-send` | `--surface surface:N \"text\"` | Wrapper: auto-resolves surface refs |\n| `lmux-read` | `--surface surface:N [--scrollback]` | Wrapper: auto-resolves surface refs |\n| `lmux-send-key` | `--surface surface:N <key>` | Wrapper: auto-resolves surface refs |\n| `lmux-grid` | `<rows> <cols>` | Build a rows×cols grid of panes; returns JSON array of new `surface:N` refs |\n\nSee [commands/lmux.md](commands/lmux.md) for full per-command documentation and tmux equivalents.\n\n## Wrapper scripts\n\n`lmux-send`, `lmux-read`, `lmux-send-key`, and `lmux-grid` are thin convenience wrappers around the core commands. They:\n\n- Auto-resolve surface references against the active workspace (no need to spell out the full tmux target).\n- Apply newline normalization automatically.\n- Are the recommended entrypoints for agent skills and orchestration loops — the bare `lmux <verb>` form is the lower-level primitive.\n\n`lmux-grid <rows> <cols>` builds a rows×cols pane grid in the current workspace and prints a JSON array of the new `surface:N` references — convenient for spawning a swarm of agents in one call.\n\n## Newline rules (critical)\n\nSame semantics as cmux — get this wrong and your agent will type its prompt without ever pressing Enter:\n\n- **`lmux send \"text\"`** — sends literal text. **No Enter is pressed.**\n- **`lmux send \"text\\n\"`** — sends text *and* Enter. Use this to submit a prompt.\n- **`lmux send-key return`** — presses Enter on its own (e.g. to dismiss a prompt).\n- Multi-line input: embed `\\n` between lines; the final `\\n` submits.\n- **Never** rely on a trailing space or shell behavior to submit — be explicit.\n\n## Claude Code integration\n\nlmux is designed to be driven by Claude Code agents. See the `using-lmux` skill at [`skills/using-lmux/SKILL.md`](skills/using-lmux/SKILL.md) for the canonical agent-side usage patterns, including the orchestration loop, polling cadence, and cleanup contract.\n\nFor multi-agent setups (lead + worker panes, cross-server SSH panes), see [commands/lmux-team.md](commands/lmux-team.md).\n\n## Uninstall\n\n```bash\nnpm rm -g @danielishi/lmux\n# or, if installed via curl|bash:\nsudo rm /usr/local/bin/lmux*\n```\n\n## Troubleshooting\n\n- **`lmux: command not found`** — the `lmux*` binaries are not on your `PATH`. For npm installs, check that npm's global bin directory (`npm config get prefix`/`bin`) is on `PATH`. For curl|bash installs, verify the symlinks landed in `/usr/local/bin/` and that this directory is on `PATH`.\n- **`lmux: not inside a tmux session (TMUX env var unset)`** — every lmux command (except `identify` reporting the error) must run inside a tmux session. Start one first: `tmux new -s agents`, then re-run your command from inside that session.\n- **`tmux >= 3.0 required`** — check your tmux version with `tmux -V`. Upgrade via your package manager (`apt install tmux`, `dnf install tmux`, `brew install tmux`). Distributions on older LTS lines (e.g. Ubuntu 18.04) ship 2.x and will not work — install from a backports repo or build from source.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}