A terminal multiplexer for all your agent sessions, highly optimized for mobile use.
swe-mux runs your agent CLIs in real terminals on your own machine, with the same keys and controls in every agent, and your phone gets the whole workspace over your own Tailscale network: the terminals, approvals, diffs, project notes and your running dev server, with voice commands that work without looking at the screen.
I usually have several Claude Code and Codex sessions going across different projects. I found the phone experience and the project notes lacking in the tools I had tried, so I built swe-mux, and I use it from my phone constantly.
No account, relay or telemetry, and everything runs on your own machine.
uv tool install swe-mux
TRY THE INTERACTIVE DEMO
The real interface with simulated agent activity. No install, account or provider connection. Open demo to try the terminal keyboard on a phone.
The whole workspace on your phone
The phone runs the same application as the desktop, with the same features, not a companion app: the live terminal with a row of extra keys for the ones a phone keyboard lacks, approvals, diffs, files, project notes, a queue for your next prompt and your running dev server. It installs from the browser, with its own touch layout, and your desktop arrangement stays as you left it.
Select an image to view it at full size.

- The same sessions. Continue a conversation from either device. Input ownership keeps two devices from typing over each other.
- The tools you use at your desk. Terminals, Git review, notes, files, queued prompts and previews.
- Your dev server, on the phone. A server on the host's 127.0.0.1 opens in a Preview pane through swe-mux, hot reload and WebSockets included, without exposing another port. Tap a URL an agent printed to open it.
- Your own connection. Reach your machine over Tailscale. No app store, no swe-mux account and no relay.
Connect your phone. HTTPS enables microphone and clipboard APIs; push also needs browser permission.
The same controls in every agent
Every recognized agent CLI takes the same keys in its prompt, so moving from Codex to Claude Code to pi changes nothing about how you drive it. Shift+Enter inserts a new line, Ctrl+Backspace deletes a word, clicking places the cursor, and paste and text selection work the same way in each.


- Your keymapChoose swe-mux, tmux, VS Code, Vim or Emacs shortcuts for workspace navigation. Try a preset in the desktop demo toolbar.
- Image pastePaste a screenshot from your clipboard into an agent that supports image attachments. You can also attach a file.
- Shared clipboard historyReuse text copied inside swe-mux from desktop or phone. Pin entries and optionally retain history across restarts.
Workspace keymaps and agent text editing are separate features. Browser-reserved shortcuts and individual CLI capabilities still apply. Clipboard history records in-app text copies; it does not synchronize the system clipboard. Keyboard reference

Every agent CLI in one workspace
Claude Code, Codex, pi, oh-my-pi and opencode are recognized, and any other CLI or shell runs in a real terminal. Type claude or codex in any pane and it becomes a tracked session in place, same pane and same scrollback. Split agents, notes, files and previews into panes, with tabs inside each.

Resume any recognized agent, branch a Claude conversation from any message, and restart an agent onto the same conversation. Workspace guide
Run your projects and sessions by voice
Conversation mode listens hands-free on the desktop and the phone. A wake word followed by a command phrase sends or appends what you dictated, interrupts an agent, reads its last reply aloud, goes to a session or starts a new agent in a project, and those commands match a fixed grammar, so they never wait on a model call. I use it while jogging, without looking at the screen.

- DictationSpeak into a draft and send it to an agent or text surface. Speech recognition runs on your host machine.
- Read aloudListen to replies or spoken summaries. Choose which sessions generate speech and which device plays it.
- The assistantAsk about your sessions and navigate by name. Actions follow the trust settings you choose; consequential actions require confirmation.
Voice is optional. Speech models download when requested. The assistant uses a configured model endpoint and your budget; experimental Edge speech is a separate opt-in. Voice setup
Notes for every project
Each project has its own notes in a Markdown editor that renders as you type: headings, nested lists, checkboxes, tables, code blocks and an outline to jump through. Notes belong to the project rather than to whichever session was focused, they open on the phone the same way, and a selection can go to an agent, into a new session or onto a running session's queue.
The Scratchpad is one more note, outside every project and repository. Deleting a note moves it to the project's trash rather than unlinking it. Notes and files
Every project and session in one sidebar
The sidebar lists every project with its sessions under it, and each session says whether it is working, idle or waiting on you, read from the agent's own hooks, its transcript, the terminal and the process tree rather than the screen alone. Waiting always names its reason, whether that is an approval, a question, a rate limit or a login, and an agent that is idle with subagents or background tasks still running looks different from one that is done.
Alerts and push notifications name the session and the reason, and reach a locked phone. A "ready" alert waits two minutes, because 89 of 211 measured idle moments went back to working inside that window. Choose a sound per event, set quiet hours, and keep separate Desktop and Mobile preferences. Status and alerts
Quota for every account, and where it went
Each saved Claude and Codex account shows its 5-hour and weekly windows, read every 15 minutes, in the sidebar and on the phone's toolbar. Every window is split by where its usage came from, so a jump you did not cause shows up as one.
- Here or elsewhereWhat swe-mux sessions used, the rises those sessions do not explain, and the rises while this computer was not using the account at all, such as another device or the web app.
- HistoryEvery account's percentage over the last week, the time each reading was true, and when the window resets.
- Unexpected resetsA drop of 20 points or more to 10% or less, confirmed minutes later, can sound and push like any other alert.
- Named accountsSwitch the system-wide Claude or Codex login in one click, and give each account a name that replaces its email everywhere.
Readings come from the providers' own CLI endpoints, which are undocumented and can change. Switching is always explicit and meant for accounts you own. Usage and quota
See what each agent loaded and did
The Agent tab lists the tools, skills, MCP servers, plugins and hooks a Claude Code or Codex session can see, where each came from, and what changed after the CLI started. Read CLAUDE.md, AGENTS.md and Claude's memory in one place, follow the transcript, and search every agent's past conversations at once.

Resume from any search result. Optional evidence capture records observed tool activity and attributes commits to contributing sessions. The Agent tab is what the CLI can see, not proof that an MCP server connected; asking a server for its tools is a separate press. History and auditing
Find what your agents leave running
Every process and listening port is attributed to the session that started it. A process still running after its session ended, one that escaped the session's tree, or one using 90% of a core or 2 GiB of memory is flagged where you can see it.
- One press to end itInterrupt, terminate, or terminate the whole tree. Ownership is checked again right before acting, and nothing is ended automatically.
- Resources at a glanceThe sidebar shows live sessions, system CPU and RAM. Each process shows its CPU, memory and network, each session its totals, and a language server duplicated across sessions is named.
- Ghost windowsOn Windows, invisible headless-browser windows that agents leave over the screen are moved off it.
swe-mux reports what it observes and never guesses that a process is hung. Files, previews and processes
Let agents coordinate
Sessions can exchange messages, read each other's progress and request help within the permissions you set. See who asked, what they requested and where the response went.

Messages can wait in a session's queue until it is ready. Spawn and control requests require approval by default. Project permissions govern what agents can read and do. Queues and communication
Land finished branches behind your checks
A branch takes its turn in the queue, updates from master, and runs the checks you approved. Passed checks allow a fast-forward; a conflict or failed check stops the request.

A failed request returns to the agent that owns the branch. An agent cannot approve its own verification command. Enable the required Project permissions before allowing agents to request landing. Try the failed-check walkthrough · Git and landing

Keep your sessions through an app restart
A separate supervisor holds the terminals while the daemon restarts or the app updates, and a terminal gateway keeps your typing reaching them through the restart. Reconnect to the working sessions and their scrollback.
The supervisor cannot survive its own death or a power loss. Cold recovery restores affected sessions as readable, resumable records. Session recovery
- Local dataProjects, history and settings live on your machine. No swe-mux account or usage telemetry.
- Your providersAgent CLIs use your existing subscriptions. Optional model features use your endpoint and budget.
- Optional automationEvidence capture, attention analysis and agent control have explicit Project permissions. Start with the workspace and enable what you use.
The update check fetches a static version manifest and can be disabled. See what crosses the network.
Install
You need at least one agent CLI already installed and logged in. swe-mux does not install, manage, or proxy them. It runs the ones you already have, on the subscription you already pay for.
Get the installer or portable archive from GitHub Releases. Direct download details appear here when release metadata is available.
You can also use the Python install below for the same Windows window and tray.
Install with Python
Requires Python 3.12 or newer. The package includes the built interface; Node is not needed.
$ uv tool install swe-mux $ swe-mux # Windows desktop app
pipx install swe-mux is the alternative isolated install.
For a browser on Windows, Linux or macOS, run swemux start, then open 127.0.0.1:8765.
swemux doctor reports installation and runtime health.
The Windows app includes its tray and native window. First-run setup offers shortcuts. Linux and macOS use the daemon with a browser. All three platforms have required CI checks, including a source-daemon smoke test; that does not replace testing a published release on a clean machine.
Installation, source builds and upgrades · Start your first session · Troubleshooting

