AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
작고 가벼운 lmux 하나로 cmux 작업창과 herdr 지속성을 제공, 터미널·브라우저·에이전트를 Mac과 서버에서 계속 실행합니다
lmux, the lean mux: cmux's workspace window and herdr's persistence in one small app. Terminals, browsers and agents keep running on your Mac and your servers.
개발 도구Rust · SwiftGitHub @lintware온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기lmux, the lean mux: cmux's window and herdr's persistence in one lean app. Terminals, browsers and agents that live on your hosts.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
cmux + herdr + tmux, with the paid and annoying parts taken out.
lmux is a workspace app for running coding agents across your own machines. Terminals, browsers and Claude sessions live on the host they run on and keep running when your laptop sleeps. The window on your laptop shows them all in one sidebar.
The same workload in both apps on one MacBook Air: each workspace has a terminal printing about 20 lines a second plus an idle split. The figures are what each app added on top of its idle state (deploy/bench/stress.py).README 전문 보기 ↗cmux + herdr + tmux, with the paid and annoying parts taken out.
lmux is a workspace app for running coding agents across your own machines. Terminals, browsers and Claude sessions live on the host they run on and keep running when your laptop sleeps. The window on your laptop shows them all in one sidebar.
Download for Mac · macOS 12 or later · Apple silicon · MIT licensed
| From | lmux keeps | lmux drops |
|---|---|---|
| cmux | The window: folders and workspaces in a sidebar, splits, tabs, browser panes, notifications, and the agent-control CLI with the same command names | Its cloud VM service, team features, vault and checkpoints, recordings, the iOS simulator, and the ~25 background helpers |
| herdr | Persistence: quit, close the lid, lose the network or reboot, and every pane comes back with its directory, scrollback and Claude session | — |
| tmux | Every terminal lives in tmux on its host, so it keeps running with no window attached | Having to remember tmux |
The same workload in each app on one MacBook Air: each workspace has a terminal printing about 20 lines a second plus an idle split. The figures are what each app added on top of its idle state (deploy/bench/stress.py).
| cmux | herdr | lmux | |
|---|---|---|---|
| App on disk | 744 MB | 20 MB | 29 MB |
| Memory, 40 workspaces | +698 MB | +208 MB | about +100 MB |
| CPU, 40 workspaces | 15.5% | 5.5% | 10% (the app itself 1.7%) |
| Each command an agent runs | ~170 ms | ~25 ms | ~3 ms |
| Creating 40 workspaces | 11.5 s | 1.8 s | 0.3 s |
| Most tested | 40 workspaces | 40 workspaces | 200 workspaces, 400 live terminals |
herdr is terminals only (no browser panes) and was measured with its TUI client attached, in its own session, with the same script (deploy/bench/stress.py herdr 5 10 20 40).
The app draws only the pane on screen. With 400 terminals open and 200 of them printing, its own CPU stayed at 1.9%, the same as idle. macOS's limit of 511 terminals (shared by every app) is reached before lmux's.
send, read-screen and wait-for; browser snapshot, click, type, fill and eval; and notify and set-status. Claude Code hooks keep each card's status and summary current.claude --resume <id>.lmux import-cmux --move:
On your Mac: download lmux.dmg from lmux.lintlabs.org or the latest release and drag lmux to Applications. tmux is inside the app. Each release also has a tarball with just the lmux CLI and daemon, and checksums.
From source:
deploy/macos/bundle.sh # builds and installs /Applications/lmux.app and ~/.local/bin/lmux
open -a lmux
On a server (Linux or macOS, with tmux and a Rust toolchain):
deploy/install-remote.sh <ssh-host>
You can also do this from the app: right-click the sidebar and choose Add Remote Host…. The installer builds lmux there, runs the daemon as a user service (systemd or launchd) and adds the Claude Code hooks.
lmux new-workspace --name api --cwd ~/code/api
lmux new-split right
lmux send "npm test\n"
lmux wait-for --text "passing"
lmux read-screen --lines 20
lmux browser open https://example.com
lmux browser snapshot -i # accessibility tree with refs e1, e2, ...
lmux browser click e7
lmux import-cmux --dry-run # what would come over from cmux
lmux import-cmux --move
lmux --help # everything else
Inside a pane, LMUX_WORKSPACE_ID and LMUX_SURFACE_ID are set, so an agent can address its own workspace or the pane next to it.
Refs belong to one daemon. Use lmux list-hosts, lmux --host lint-hqc-01 tree,
and lmux --json tree --all-hosts to discover and query sessions on other hosts.
Host routing uses SSH and supports aliases backed by Tailscale. See
host-aware CLI access for target safety and discovery limits.
For Grok automation, lmux --json harness-status --surface S reports per-surface
lifecycle, queue, and message-delivery evidence. harness-config queries observed
model/effort and reports unsupported live-control requests explicitly. See
Grok delivery and configuration for opt-in
hooks, usage, evidence limits, and safe handling of queued input.
lmux.app (laptop) ── one websocket per host, over SSH ──▶ lmux server (each host)
egui + wgpu UI session tree, RPC, persistence
local panes: a PTY on tmux tmux in control mode
browser panes: WebKit WebKit helper for the host's pages
| Path | What it is |
|---|---|
crates/lmux-proto | Wire types shared by the daemon, CLI and app, and the cmux export reader |
crates/lmux-core | The daemon: session tree, tmux backend, RPC, persistence, browsers |
crates/lmux | The binary: lmux server runs the daemon; every other subcommand is a client |
app/ | The native client (Rust, egui) |
helpers/webkit-mac, helpers/webkit-linux | Run browser pages on a host |
deploy/ | App bundle, remote installer, service units, cloud box scripts, stress bench |
docs/ | Design notes and reviews |
PLAN.md has the design and milestones.
cargo test --workspace # daemon, CLI and protocol (needs tmux)
(cd app && cargo test) # the app, including UI tests
Work happens on dev, and main follows it once it's stable.
Working:
Next:
Later: a mobile app for the same hosts, to watch and steer agents from your phone.
Issues and pull requests are welcome. CONTRIBUTING.md covers how to set up, run a build beside your real lmux, test, and send a change. The short version: branch from dev, run both test suites above, and keep the app lean, so a feature costs the laptop nothing when it isn't on screen.
Releases are listed on the releases page, with notes in CHANGELOG.md.
MIT © 2026 Lint Technologies Pte. Ltd. (LintLabs)