what leaves your machine, and what does not

Privacy

swe-mux is a program that runs on your own computer. There is no swe-mux account, no swe-mux server, and no service this project operates that your install talks to. Everything it records is written to a directory on your own disk and stays there.

That makes most of a privacy policy inapplicable, so this page says the two things that are actually true: exactly which requests the software makes, and what this website sees. Last revised 2026-08-28.

The one request the software makes on its own

Once a day the daemon fetches https://swemux.dev/version.json to find out whether a newer release exists. If that does not answer, it falls back to the public GitHub Releases API for this repository. It downloads nothing either way, and it shows a dismissible banner if a newer version is out.

  • The request carries no query string, no custom header, no cookie, and no identifier of the machine or the install. It is a plain GET of a static file that is byte-identical for every copy of swe-mux, so it conveys nothing beyond the fact that some address asked for a public file.
  • It is off with one switch. Settings, Diagnostics, Software updates, or update_check_enabled in your config file. Off means no request is made at all, rather than a request that is ignored.
  • Installing an update is a separate act you take. Nothing downloads automatically. mux update --install <version> fetches that release from GitHub and verifies its SHA-256 against the published manifest before anything is staged.
  • The mechanism and every one of these constraints are in src/swe_mux/update_check.py, and the test suite proves the disabled case by counting requests rather than by reading the promise.

There is no analytics, no crash reporting, no usage ping, no licence check, and no first-run registration. That is the complete list of unprompted outbound traffic: one file, once a day, or nothing.

What reaches a third party only if you turn it on

Each of these is off until you configure it, and each one talks to a service you already have a relationship with rather than to this project.

  • Your agent CLIsClaude Code, Codex, opencode and the rest contact their own vendors under your own subscription, exactly as they do outside swe-mux. swe-mux proxies nothing, resells nothing, and is not in the path of those requests.
  • Summaries and the assistantRead-aloud summaries, the Mux assistant, the scan timeline, automation observers, and attention narration call an OpenRouter-compatible endpoint with your key. The text being summarized or asked about goes to that endpoint. Each of these is separately switchable and separately budgeted.
  • Web pushNotifications to a phone go through your browser vendor's push service, and only after you subscribe that device. The payload is what the notification says.
  • Saved provider accountsSubscription-window polling calls that vendor's own usage endpoint with the credential you saved. Credentials stay on your machine and go nowhere but the provider they belong to.
  • On-device speechThe local speech models download once from Hugging Face, pinned by revision and verified per file by SHA-256. After that, dictation and speech run entirely on your machine.
  • Experimental Edge TTSReaches a Microsoft endpoint and is the one integration that requires an explicit acknowledgement before any text leaves the machine, because it uses a consumer endpoint with no third-party service contract. Its client is installed from PyPI into an isolated environment and is never bundled.
  • TailscaleReaching your machine from a phone uses your own tailnet. Tailscale operates that coordination service under your agreement with them; swe-mux adds no relay and no broker of its own.

What the software stores, and where

All of it is on your own disk, in one directory, and none of it is transmitted anywhere.

  • The data directory is ~/.mux on Windows, $XDG_DATA_HOME/swe-mux (else ~/.local/share/swe-mux) on Linux, and ~/Library/Application Support/swe-mux on macOS. An existing ~/.mux wins on every host and MUX_DATA_DIR overrides all of it.
  • It holds your configuration, the session registry and terminal checkpoints, SQLite databases for history and telemetry, the daemon log, generated speech clips, and the clipboard-history ring. Terminal output is in there, which means anything an agent printed is in there.
  • Agent transcripts are read in place and never moved, rewritten, or deleted. They stay wherever the vendor's own CLI put them.
  • Deleting that directory deletes everything swe-mux has recorded. There is no second copy and nothing to request from anyone.

Two things worth knowing rather than discovering. The diagnostics bundle (mux doctor --export) is built for sharing and deliberately contains no terminal bytes and no message content, but it does contain a sanitized configuration, so read it before attaching it to anything. And anyone your tailnet admits to the daemon's listener has terminal and code-execution authority on the host: Tailscale policy is the entire access boundary, because there is no swe-mux login to add one.

This website

swemux.dev is static files served by GitHub Pages from the site/ directory of the public repository.

  • No analytics, no tracking pixels, no cookies set by this site, and no third-party requests of any kind. No external fonts, no CDN, no embedded video. Every page is one HTML file with its CSS and its handful of lines of JavaScript inline. You can read the whole thing with view-source.
  • One value is stored in your browser: localStorage under the key swemux-theme, holding dark or light. It is what stops the colour scheme flashing on load, it is never read by anything else, and it never leaves your browser.
  • GitHub serves these pages and therefore sees the requests, the way any web host does. That is covered by GitHub's own privacy statement. This project has no access log for the site and collects nothing from it.
  • Links from here to GitHub, PyPI, or another project's site are ordinary links. Following one is a request to that host, under that host's terms.

Rights, and who to ask

There is no account to delete, no export to request, and no profile held anywhere, because the project holds nothing about you. Data protection rights are exercised against whoever holds data, and for swe-mux that is you, on your own machine.

If you believe a sentence on this page is wrong, open an issue. A privacy claim that turns out to be false is a bug in this page and will be corrected rather than defended. Security reports go through the security policy instead, privately.

This page describes how the software behaves. It is not legal advice and it is not a contract; what you are permitted to do with swe-mux is the licence.