Open source, for Claude Code, Codex, pi, opencode and any shell

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

open demo ⤢
Try your keys Click a pane to try the keyboard. Browser shortcuts still apply.

The real interface with simulated agent activity. No install, account or provider connection. Open demo to try the terminal keyboard on a phone.

01

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.

A waiting agent question, editable prompt and touch controls for arrows, Ctrl+C and sending, cropped from the phone layout.
The question, the prompt and touch controls, within reach.
  • 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.

02

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.

An agent composer with the unsent draft Review the checkout code and an editable cursor position.
Your prompt stays editable.Shift+Enter new lineCtrl+Backspace delete word
An image reference for cart.png pasted into the agent prompt, followed by a question.
Paste an image. Attach the screenshot and add your question.
  • 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

Shared clipboard history with a full command expanded, Insert and Copy controls, and a pinned entry.
Keep useful text close. Read, insert, copy or pin a saved entry.
03

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.

Two pane stacks, with agent tabs on the left and shell and checkout preview tabs on the right.
Two panes, separate tab stacks. Keep the agent beside its running preview.

Resume any recognized agent, branch a Claude conversation from any message, and restart an agent onto the same conversation. Workspace guide

04

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.

Assistant chat with talk, chat and text-to-speech modes, a reply identifying a waiting agent, and a proposed message with Run now and Cancel controls.
Ask what needs you. Read the answer and review the proposed action.
  • 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

05

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

06

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.

Session rows with blue working, green idle and amber waiting indicators, model names and worktree branches.
Live status, context usage and branches in the session list.
  • Working
  • Needs you
  • Idle
An alert asks who should own cache invalidation, with Open session and Dismiss controls.
A reason to look. Read the decision, then jump to the session.

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

07

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

08

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.

Transcript search for test highlights matching messages in the recorded conversation.
Find the relevant exchange. Search the transcript and read the matching messages.

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

09

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

10

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.

The requesting agent queue holds replies from coupon readers and coupon writers, identifying who sent each message.
Replies return to the requester. Each queued message keeps its sender and result.

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

11

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.

Expanded landing queue shows the approved verification gate running for agent/coupon-table.
The check is the gate. See which branch is being verified and what happens next.

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

The branch owner receives a queued failure message: the coupon expiry test failed and landing stopped.
A failed check stops the landing. The reason returns to the agent that owns the branch.
12

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.

13

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.

Windows desktop app GitHub Releases

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