Repository navigation
v2.15.0
New: Remote Console — your agents, from your phone (#254)
wmux can now serve a small web console for your phone: every agent on the machine in one list, the ones waiting on you first, answerable without walking back to the desk. No app to install — it is a web page wmux serves itself.
Off by default. Turn it on in Settings → Remote, then Pair a device and scan the QR code.
- Console — agents sorted Needs you → Done → Working → Idle. A blocked agent shows its declared choices as buttons right on the card: two taps to answer.
- Attach — the agent's live terminal, mirrored. Fit-to-width or a readable size with pan; momentum scrolling; your desktop pane is never resized.
- Composer — draft with your phone's keyboard, send once. While an agent is blocked it becomes Insert (text without Enter), so a message can never accidentally answer a permission prompt.
- Key bar — Esc, Tab, ⇧Tab, arrows, Enter, ^C, y/n and more. Keys that would interrupt an agent or answer a prompt need a second tap.
- Alerts — in-page notifications (and vibration where the browser has it) when an agent goes Blocked or Done, while the page is open.
- 18 languages, picked from the phone's own.
Reaching it from a phone
The console listens on this computer only (127.0.0.1:9790) unless you say otherwise. Settings shows copy-paste recipes for the two good ways out:
- Tailscale —
tailscale serve --bg --https=443 http://127.0.0.1:9790, then paste the resultinghttps://…ts.netaddress into Public URL. Encrypted, works anywhere. - SSH —
ssh -L 9790:127.0.0.1:9790 <host>.
A plain-HTTP local network bind exists too, behind a warning; devices paired that way are view-only unless you explicitly allow control.
Security model, in short
Typing into a terminal is code execution, so this was built and reviewed as such:
- Each phone gets its own revocable credential, paired by a one-time QR code that expires in two minutes. Settings lists every device and live connection, with Revoke.
- The console never uses wmux's pipe token and cannot spawn, kill or close anything — it can list agents, mirror a terminal, type, and press a choice the agent itself declared.
- A remote answer is tied to the exact prompt it was shown for; a stale or replayed tap is refused rather than landing on the next question.
- Strict Host/Origin checks on every request and WebSocket upgrade (DNS rebinding, cross-site WebSocket hijacking), a strict CSP, no secrets in URLs.
- Pairing and each device's first connection raise a desktop notification.
wmux remote status prints whether it is running and how many devices are paired.
Not in this release
Push notifications with the page closed, an installable PWA, attachments, starting or stopping agents from the phone. A native app is not planned — the point is that any phone with a browser works.
Thanks to @arnonuem for the request and for pointing at Heeler and paseo — ideas from both, no code.
Downloads — wmux-2.15.0-setup.exe (installer, auto-updates) or wmux-2.15.0-win-x64.zip (portable).
This build is unsigned (the signing service quota is exhausted for the year). Windows SmartScreen will warn; for the zip, right-click → Properties → Unblock before extracting.
Full Changelog: v2.14.0...v2.15.0