Legal
Privacy, MUON
What MUON stores locally, what leaves your machine, and what this website collects.
MUON runs on your machine
MUON is local-first. Your mission history, memory, and activity are stored in a local database and settings files under your own user profile on your Mac. We do not run a server that syncs, backs up, or mirrors that local store off your machine. One narrow exception, described in full below, does send local content: while usage reporting is on, the tool calls your coding agents make to MUON's MCP server reach our analytics provider with their arguments and results, which can include memory notes, task briefs, and repository file paths. Turning usage reporting off stops it. Individual use requires no MUON web account; the optional dashboard is for identity, billing, named people, and coarse install registration only.
Usage reporting is on by default, and you can turn it off
MUON reports usage unless you turn it off. Turn it off in Settings, or run `muon telemetry off` from any terminal — one switch covers the app, the CLI, the TUI desk, the MCP server and the local brain on that machine, and it takes effect immediately. `muon telemetry status` shows exactly what is on and what has been recorded; `muon telemetry purge` deletes the local record. Earlier versions were opt-in; this page was revised in the same change that flipped the default, rather than after it.
What is reported
Sent to PostHog in the US: app launches, coarse crash codes, update checks, activation milestones, identity-gate outcomes, which CLI commands run and whether they succeed, which surfaces start, whether dispatches finish and on which vendor, which CLASS of governance rule refused something (never what it refused), and AI usage metadata such as provider and model family, token counts, latency and vendor-reported cost. Every one of those fields is an enum, a number or a boolean: prompts, outputs, repository names, paths, job ids, credentials and raw error text have no field through which they can travel. These bounded event fields are written to a local spool file you can inspect. Uploads add a random identifier, never your name, email, GitHub identity or machine identity.
The exception: MCP tool calls are captured in full
Calls your coding agents make to MUON's MCP server are captured with their arguments and results included. On that server those can contain memory notes, task briefs, messages between agents, and file paths from your repositories. These full MCP payloads are sent through PostHog's SDK and are not copied into the local spool; that spool contains only the separate bounded tool-call summary. This is the only part of MUON's reporting that is not structurally bounded, it is disclosed in the Settings panel beside the switch, and the same switch turns it off. If you use MUON on a repository whose contents may not leave your machine, turn usage reporting off before attaching an agent.
Your AI tool logins never touch MUON
Claude Code, Codex, Cursor, and OpenCode are your own accounts, authenticated through each tool's own login. MUON runs your already-installed copy of each one and never stores, reads, or forwards its login credential.
GitHub, only if you connect it
Connecting GitHub is optional. The installed app stores its credential in a settings file on your machine with permission 0600 and uses it for GitHub calls you initiate plus identity checks at MUON's install and entitlement registry. Clerk manages the production website browser session and connected GitHub account. When the dashboard needs to verify identity, MUON retrieves the connected GitHub OAuth token from Clerk server-side and sends it only to GitHub and MUON's registry for that account action. The token is not exposed to browser JavaScript or stored in a MUON-authored browser cookie on that path. A deployment explicitly running without Clerk may instead use MUON's legacy GitHub PKCE flow. Its sealed HttpOnly session expires after at most seven days, can expire earlier with the upstream GitHub token, and clears on sign-out.
What actually leaves your machine
Your AI coding tools communicate with their own vendors under your vendor accounts. If you register an install or use Linked Operation, MUON's registry receives your GitHub id and login plus install surface, version, platform, first-seen and last-seen times; billing relations add subscription id, purchased quantity, named-seat GitHub ids and logins, and verified webhook event metadata. It does not receive prompts, repository names, workspace paths, model tokens, or card data.
This website
getmuon.com uses Vercel Web Analytics and PostHog. PostHog receives page views, a closed set of named funnel and product events, and errors caught by the site's outermost error boundary — an error's own name, message and stack, never anything read off the page you were on. Autocapture, session replay, surveys and remotely-loaded SDK bundles are off. Heatmaps, dead-click capture and web-vitals capture are each pinned off at the call site, in the code that loads the SDK, so none of them can be switched on from a setting in our analytics account; the SDK's behaviour date is pinned as well, which is what holds page-view and browser-storage behaviour steady across a routine upgrade. Your browser is given a random anonymous id that persists between visits, so a returning visitor counts once rather than once per reload; while you are only browsing, that id carries no person profile and no name, email or account of any kind. If you sign in to the dashboard, the session is attached to your account id and a person profile is created carrying that id and, when Clerk has them, your name and email address. Signing out or switching accounts detaches that profile from the browser and starts a fresh anonymous id. Verified Clerk webhooks record only lifecycle event type, pseudonymous Clerk user or organization ids, organization role, deployment environment, delivery id, and two provenance fields MUON adds so a forged row can be told from a real one — a version number and a signature computed over the row itself; they are sent with person profiles and request IPs explicitly suppressed, and names, emails and profile fields are not included. The production dashboard relies on the Clerk-managed browser session described above; explicitly Clerk-absent deployments use the disclosed legacy session instead. Account and billing responses are marked no-store. We do not run an advertising pixel, and the dashboard does not turn local mission activity into cloud analytics.
Payments
Razorpay hosts checkout and handles payment credentials. MUON sends the server-selected plan, the number of named people, and a binding to the verified billing owner. MUON never receives or stores card or bank credentials. A browser success screen does not activate access; only a separately signed Razorpay webhook bound to the server-created subscription can change entitlement standing.
We do not sell data
We do not sell, rent, or trade any data, whether it is the local data on your machine or the limited traffic data described above.
What changed, and when
v0.1.2 shipped the uploader, off by default, with the exact field list published here — the promise this page made when there was no uploader at all. The change that made reporting on by default and added the MCP capture described above revised this page and the in-app disclosure in the same commit, not after it. The field list above stays complete, and turning the switch off still stops uploads immediately. That same change also revised what this page says about the website, and it took us longer than it should have to say so: the browser SDK was given an anonymous id that persists between visits and a person profile for signed-in accounts, and error reporting moved to an explicit call from the site's error boundary. The section above described the previous configuration until this revision; it now describes the one that ships, and a test reads both so the two cannot drift again.
Questions or a report
Contact [email protected] with privacy or security questions, including a request to understand what a specific build stores locally.