Skip to content

Why mxr

Use mxr when you want email state on your own machine, with one local runtime behind the TUI, CLI, web app, scripts, and agent workflows.

Terminal window
mxr demo
mxr search "is:unread" --format json
mxr web

What you get: an isolated demo inbox, a machine-readable search result, and the browser UI served by the local bridge.

mxr is a local mail runtime. It syncs provider mail into SQLite, indexes it locally, and exposes the same daemon-backed state through human and machine interfaces.

Choose mxr when you want:

  • synced mail in SQLite on your machine
  • Gmail and IMAP receive paths, plus Gmail or SMTP send paths
  • Gmail-style local search over stored mail
  • dry-runnable batch mutations
  • structured CLI output for shell scripts and agents
  • a TUI, browser UI, and HTTP bridge on the same daemon contract

Check the surfaces in your checkout:

Terminal window
mxr --help
mxr status --format json
mxr web --print-url

What you get: the command surface, daemon health, and active local web URL.

mxr is not a hosted connector layer, managed auth service, remote workflow platform, or backend email API for a server product. It is also not a native desktop app; the GUI surface is the web app opened with mxr web.

Use something else when you need:

  • You want a hosted connector layer more than a local mail runtime.
  • You mainly want a terminal UI and do not care about a broad CLI or daemon.
  • You need a production backend email API, not a local user-facing workflow tool.
  • You need a hosted MCP endpoint or managed OAuth connector. mxr’s MCP server is local stdio and uses your local daemon.
AdapterSyncSendLabels / foldersMutationsNotes
GmailyesyeslabelsyesDirect Gmail API adapter.
IMAPyesnofoldersyesUsually paired with SMTP.
SMTPnoyesnonoSend-only adapter.
Outlook Personalyesyesfolders/categoriesyesMicrosoft consumer accounts.
Outlook Workyesyesfolders/categoriesyesMicrosoft 365 work/school accounts.
Fakeyesyesfixture labelsyesTests and mxr demo.

Verify provider setup:

Terminal window
mxr accounts --format json
mxr sync --status --format json

What you get: configured accounts and the latest sync state per account.

InterfaceStatusBest forNotes
CLIavailablescripting, batch work, agentsbroadest current shell surface
TUIavailabledaily reading and triagemailbox-focused interface
Daemon socketavailablecustom clientsJSON over Unix socket
HTTP bridgeavailablelocal web/custom clientsloopback bearer-token bridge
Agent skillavailablecoding-agent workflowsdocuments CLI patterns
MCP serveravailableMCP-native agentsmxr mcp serve, stdio, daemon profile gates

Start with the demo when you are evaluating fit:

Terminal window
mxr demo
mxr search "has:attachment" --format json
mxr reset --hard --dry-run

What you get: realistic local mail state and safe reset preview without touching your real profile.