Where data lives, and what leaves the machine
swe-mux runs on your machine and talks to no service this project operates. This page is the precise version of that sentence: where every file goes, and every request that can leave.
The data directory
Resolved in this order, and the order is the contract:
MUX_DATA_DIR, if it is set and not empty.~/.mux, if it already exists - on every host. An existing directory always wins, so a machine that has one keeps its data rather than silently starting from an empty one beside it.- Otherwise the platform convention:
~/.muxon Windows,~/Library/Application Support/swe-muxon macOS, and$XDG_DATA_HOME/swe-mux(else~/.local/share/swe-mux) on Linux.
What is in it
| Kind | What it holds |
|---|---|
| Configuration | config.toml (schema-versioned, with a pre-migration .bak), settings.json for per-device browser settings, keybindings.json, and the automation rule files. |
| Your content | notes/ for the global Scratchpad, prompts/ for the prompt library, and media/ for session attachments. |
| Databases | mux.db holds history, telemetry, the status timeline, the deterministic facts, the prompt queue, schedules, clipboard history, the code graph, and the durable session registry. land-queue.sqlite3 holds the land queue. |
| Credentials | Saved provider logins, the metered-API key store, and the web-push identity. On Windows the key values are encrypted for the current user; on macOS the Keychain and on Linux the secret service hold them instead. |
| Logs | daemon.log, access.log, the supervisor's own logs, and the lifecycle ledger. All of them rotate, so a noisy day cannot grow an unbounded file. |
| Regenerated per run | The agent launcher shims, per-harness hook and MCP registration files, per-session identity, process-discovery files, and certificate material. All safely deletable. |
| Media and capture | Synthesized speech clips (bounded, 200 MB by default), downloaded speech models, preview screenshots, and terminal recovery checkpoints (bounded per session, per age, and per count). |
Your Projects' content is not in here and is not swe-mux's to hold. A Project points at a directory you already own. .swe-mux/ inside a checkout is per-machine state, not something the repository carries.
The one request swe-mux makes on its own behalf
A daily GET of https://swemux.dev/version.json, to find out whether a newer release exists. Nothing downloads. The file is byte-identical for every install, and the request carries no query string, no custom header, no cookie, and no identifier of the machine or the install.
One switch turns it off, in Settings, Diagnostics, Software updates, and off means no request is made at all rather than a request that is discarded.
Installing an update is a separate act you take: mux update --install <version> downloads that release, checks its SHA-256 against the published manifest before anything is staged, and refuses rather than installs if the release would need a new terminal supervisor - which would end your live sessions.
Everything else that can reach the network
Each of these is a feature you turn on, or your own agent CLI talking to its own vendor. None of them is on by default.
- Your agent CLIsThey contact their vendors under your subscription. swe-mux is not in that path: it proxies nothing and resells nothing.
- Model-backed featuresSummarization, the assistant, and some control-plane features call an OpenRouter-compatible endpoint with your own key, and are off until you configure one.
- Web pushGoes through your browser vendor's push service, which is how web push works, and only after you subscribe a device.
- On-device speech modelsDownloaded once from the model host, pinned by revision and verified by SHA-256.
- Saved provider accountsPoll that vendor's own usage endpoint, with the credential you saved.
- Experimental Edge TTSReaches a Microsoft endpoint, and requires an explicit versioned acknowledgement before any text leaves the machine.
There is no analytics, no crash reporting, and no account. There is no swe-mux server for an account to exist on.
Backing it up
Stop the daemon first, or accept that the database's write-ahead log files are part of the copy - a data directory copied while a daemon is running leaves a log the restoring host has to recover.
mux.dbandland-queue.sqlite3, each with their-waland-shmsiblings if present.config.toml,settings.json,keybindings.json, and the automation rule files.prompts/,notes/,media/.- The provider accounts directory, the metered-key store, and the push identity. These are credentials - treat the backup as a secret.
Every log and everything regenerated per run is safely disposable. So is the synthesized speech cache, the downloaded models, and the recovery checkpoints, all of which cost only re-download or re-capture.
What an uninstall leaves
Uninstalling the package removes the three commands and the code. It does not touch the data directory, and it does not touch your agent CLIs' transcripts - swe-mux only ever read those where the vendor wrote them. Removing the data directory is a separate, deliberate act.