vibe coding
in your hand
Mobile vibe coding: one command on your computer, scan a QR — and the same live session is in your hand. Pick up your build anywhere.
It drives your real tmux panes, so the agent keeps running and you pick up exactly where you left off. No app to install — open the link in your phone's browser and you're in. Works with Claude Code, Codex, aider, any shell — and it pings your phone the moment a pane needs you.
No mockup — a real phone browser driving real panes: a push pings you to approve a Claude Code prompt, read rendered docs aloud, review a git diff — all with your thumb.
Two things on your computer — and if you already use tmux, you're basically set. Your phone needs nothing but a browser.
# 1 · do you have the basics? (run on your computer) node -v # need Node ≥ 18 → nodejs.org tmux -V # need tmux ≥ 3.0 → brew install tmux / apt install tmux # 2 · install once, then run it npm i -g handmux handmux start # local / same wifi — nothing exposed # 3 · scan the QR it prints → you're on your phone, driving your real terminal # reach it from anywhere: handmux start --tunnel cloudflare → a public link
It drives any agent or TUI — and with Claude Code it goes furthest: it knows the moment a pane needs you.
Pinged when it needs you
A push the instant a pane hits a permission prompt, a plan approval, or finishes — even with the tab closed. No more babysitting a screen.
Every agent at a glance
An inbox of your Claude panes, each tagged working · needs you · done. Jump straight to the one that's blocked.
Approve with your thumb
Answer permission prompts and plan approvals right from the phone — it's driving the real keys, so a tap is a real keystroke.
Talk to it
Voice input to fire off the next prompt, hands-free, from wherever you are.
The competitors stop at a remote shell. handmux is a full mobile cockpit for your sessions — review code, preview your app, read docs and move files without leaving the couch.
Diffs in your hand
A VS Code-style git panel: changes, commit history, any branch — tap for a full-screen colored diff. Multi-repo tabs, read-only, never touches your tree.
See your dev server
Preview a static site from a folder, or a live service by port — your phone renders it with routing, API and HMR intact. Phone or desktop viewport.
Read & hear docs
Tap any path in the terminal to open it — Markdown rendered, font zoom, and read-aloud with sentence-by-sentence highlight.
Files both ways
Upload from the chat box (multi-select, path auto-filled), download with a tap, share straight into the app, copy any absolute path.
Ideas & commands
A per-window to-do list you can voice in and one-tap insert, plus a command palette with frequent/recent and slash shortcuts (/compact, /model…).
Built for flaky networks
Reconnect with backoff, a connection-lost banner, an offline page, polling that pauses when hidden — plus a reflow-safe cursor and drag-to-select copy.
Same session, two screens
Your phone drives the same live tmux as your desk — any TUI, any agent. Step away mid-build and continue from your thumb, exact same state.
Two commands
handmux start just runs it; handmux setup configures a tunnel and saves it. The server, the tunnel, the QR — handled.
Public or private
Cloudflare quick tunnel for zero-config reach, a named Cloudflare domain, or self-host on your own VPS — all wired up by handmux setup.
Token-secured
Every connection needs a token. The QR carries it for one-tap sign-in; the plain link stays token-free, safe to share.
Nothing to install
Just open the link in your phone's browser — no App Store, no client. Add to Home Screen for a full-screen PWA if you like; either way it survives flaky networks.
Starts at login
service install registers launchd / systemd so the whole thing comes back after reboot.
your phone ──https──▶ tunnel ──reverse──▶ your machine (cloudflare / your VPS) node :19999 ─▶ tmux
One outbound connection to Cloudflare's edge hands you a public https link. No ports to open, no IP, no certs. Great to start in seconds.
A reverse tunnel to your own VPS with your domain and TLS — stable, fully yours, and works where Cloudflare's edge is unreliable.
handmux start [flags] # run it — LAN-only by default, no config needed handmux setup # configure tunnel / name / notifications (saved; re-run to change) handmux stop · restart · status # control + see the live URL handmux logs [--follow] # tail the supervisor log handmux config # show effective config + where each value came from handmux service install # start at login # flags (one-run overrides): --tunnel none|cloudflare|cloudflare-named|ssh --port --token --config