corresync
Local-first MCP server and CLI for email and calendars across Outlook, Gmail, Microsoft 365, JMAP, IMAP/SMTP, and CalDAV. Preview-before-commit writes; no hosted relay.
Documentation
Corresync
Mail, calendars, and tasks. One local MCP server and CLI.
Provider-neutral, local-first tooling for AI agents, scripts, and you.
·
·
·
·
·
·
·
`corr` brings isolated mail, calendar, and task accounts into one terminal—and
one local
Model Context Protocol server.
Gmail, Google Calendar, and Google Tasks are available through a Desktop OAuth
client in a Google Cloud project you control. Corresync-managed Google OAuth
remains dormant. The canonical task tools also include explicit Microsoft To
Do, Todoist, TickTick, and CalDAV VTODO routes; remaining task-provider adapters
stay unavailable until their contracts are implemented.
- Search mail and build one agenda across accounts without collapsing their
identity or provider provenance.
- Use one stable, provenance-preserving task model as provider adapters become
available.
- Save private account-local mail searches and relative calendar windows, then
run them live without creating a shadow mailbox or calendar cache.
- Use the same typed operations from a human-friendly CLI, stable JSON, or an
AI agent.
- Keep sign-in in a visible browser, an explicit public-client OAuth flow, or
an approved local credential store.
- Review consequential effects before they happen. Unknown remote outcomes
stop for reconciliation instead of being retried automatically.
What it feels like
$ corr mail search --all-accounts \
--query 'subject:"Quarterly plan"' --limit 3
● work · microsoft-owa Ana Ruiz Plan review
· personal · jmap Finance Plan receipt
$ corr agenda list --all-accounts \
--start 2026-07-29T00:00:00Z \
--end 2026-07-30T00:00:00ZConnect an agent to the same local core:
corr integrations detect
corr integrations plan codex claude-code
corr integrations setup codex claude-code
# Phase A also includes github-copilot, gemini-cli, qwen-code, qoder, kimi-codeThen ask naturally:
Check my inboxes, calendars, and task lists and summarize what needs attention today.One failed provider becomes an explicit partial failure. Successful results
remain available, and writes still require one exact account.
Choose the route that fits
Mail, calendar, and task routes are selected independently. For example, an
account can pair IMAP/SMTP mail with a CalDAV calendar; its task route remains a
separate explicit choice.
| Route | Calendar | Tasks | Authentication | |
|---|---|---|---|---|
| Outlook Web | Typed reads and writes | Selectable calendars; provider-supported Teams link | — | Dedicated visible browser profile |
| Google (your OAuth client) | Gmail API reads and writes; no permanent delete | Selectable calendars; Google Meet when advertised | Google Tasks through a separate task-only grant | Your Desktop OAuth client; client credential and grants in the OS keyring |
| Microsoft Graph | Typed reads and writes | Selectable calendars; typed Teams-link creation | Microsoft To Do | Your authorized public OAuth client; OS-keyring grant |
| Todoist | — | — | Typed Todoist operations | Your authorized public OAuth client; OS-keyring grant |
| TickTick | — | — | Typed TickTick operations | Your authorized confidential OAuth client; external secret handle and OS-keyring grant |
| JMAP | Typed mail operations | — | — | OS keyring or approved credential helper |
| IMAP / SMTP | IMAP read/manage and SMTP draft/send | — | — | OS keyring or approved credential helper |
| CalDAV | — | Typed calendar operations and conditional scheduling | VTODO lists, search, sync, and reviewed writes | OS keyring or approved credential helper |
Discovery gathers DNS, well-known, and provider metadata without credentials.
It never authenticates or adds an account. Microsoft Graph and user-owned
Google authorization remain explicit choices and are never automatic
fallbacks. Google discovery can offer guided Desktop-client setup, but no
Google sign-in starts until a later explicit `corr auth login`. See the
iCloud has a first-class guided preset over the same provider-neutral
IMAP/SMTP and CalDAV adapters. `corr setup` recognizes documented iCloud Mail
address families or the complete verified Apple SRV endpoint set, reviews both
routes as one account, and uses one external credential handle by default.
After the account is added, an explicit handoff can open Apple's app-password
page and the OS-owned credential prompt; the `corr` process never reads the
app-specific password.
Every available v0.9 route above has synthetic provider-contract and
application coverage. The user-owned Google API route is available but
live-unobserved. Other provider and platform implementations remain
live-unobserved until an authorized, content-free observation is bound to
the exact commit. See compatibility evidence before
connecting a sensitive account.
From install to a first read
Prefer a guided page? Follow
getting started on the website.
1. Install
The official standalone installers are the shortest path on every platform.
They select the latest stable release, verify its archive and candidate binary,
install for the current user without elevation, and leave account setup untouched.
macOS and Linux
curl -LsSf https://corresync.org/install.sh | sh
corr --versionWindows PowerShell
powershell -NoProfile -Command "irm https://corresync.org/install.ps1 | iex"
corr --versionReview `install.sh` or
`install.ps1` before running it if you
prefer. Package managers remain fully supported alternatives:
# Homebrew · macOS or Linux
brew install nkiyohara/corresync/corresync
# WinGet · Windows
winget install --id nkiyohara.Corresync --exact
# Scoop · Windows
scoop bucket add corresync https://github.com/nkiyohara/scoop-corresync
scoop install corresync/corresyncDirect archives, native Linux packages, version pinning, checksums, and
Sigstore provenance are in the installation guide. The
guided website keeps
the same copy-paste choices visible for people who do not use GitHub regularly.
Claude Desktop users can also install the platform-universal `.mcpb` from the
The bundle runs the same verified `corr mcp serve` binary locally over stdio;
it does not deploy Corresync or relay mailbox data. Install the CLI first for
the explicit account setup and sign-in steps below, then open or drag the
`.mcpb` into Claude Desktop.
Stay current
Interactive commands make a quiet, cached release check at startup. If an
update exists, Corresync shows the exact command for your installation:
`corr update` for the standalone build, or the matching Homebrew, Scoop, or
WinGet command. Package-managed files are never changed by Corresync.
Stable releases are selected by default. Standalone users who want signed
release candidates can choose the preview channel interactively:
corr settingsThe equivalent copy-paste commands for scripts are:
corr config set updates.channel preview
corr updateSwitch back with `corr config set updates.channel stable`; Corresync never
downgrades the running binary. Preview releases do not enter package-manager
catalogs.
Standalone users can opt in to verified automatic installation:
corr config set updates.auto_install trueIt never runs during MCP tool calls, configuration changes, daemon work, JSON
output, pipes, or other non-interactive paths. The current command continues
normally and the new binary is active on the next `corr` start.
2. Add and sign in to your account
corr setupThe guided setup derives a resumable preflight from current local state,
optionally installs shell completion at a displayed user-local path, and then
performs credential-free account discovery. It previews the selected
mail/calendar/task routes and adds an account only after confirmation.
Authentication or external-credential access remains a separate choice. The
same run can add more accounts, select several detected agent hosts, preview
their independent local integration plans, apply only one confirmed plan, and
verify each result. Re-running `corr setup` skips healthy work and offers the
missing or repairable steps.
After choosing a connection route, the wizard presents a service checklist.
For a Microsoft account, Outlook Mail and Calendar are preselected and can be
changed independently; Microsoft To Do is an optional, explicit Graph
authorization. Teams messaging is shown as coming soon while the v0.9 release
gate is closed and cannot be selected, persisted, or opened. Discovery is only
route evidence: it never proves that any checked service is enabled for the
account, and it never triggers a Graph fallback.
Run `corr settings` to open the same account wizard; sign in to, rename,
select, or remove accounts; and manage updates, safety, and browser sign-in
from an arrow-key form. Its Setup guide entry resumes the complete coordinator
instead of maintaining another implementation. The
top-level Accounts category contains Add account and the configured account
list; selecting an account opens only actions for that account. Removal
previews the local data it deletes and asks for confirmation; removing the
default first asks which remaining account should replace it. Each choice also
displays the equivalent command, so the interactive flow teaches the direct
CLI.
Set `CORRESYNC_ACCESSIBLE=true` for line-oriented screen-reader prompts; type
`:cancel` to leave an input step safely. The direct rename form remains:
corr account rename personal workScripts and advanced users retain the deterministic form:
corr setup you@example.com --alias personal
corr auth login --account personal
corr doctor --account personalThe direct `setup ADDRESS` form creates the same provider-neutral, secret-free
local configuration, performs credential-free discovery, and adds only an
automatically selectable first-party route. It never opens a sign-in page.
Authentication is a separate, account-specific action.
If no route can be selected safely—or if you want an API or standards route—
inspect the evidence and choose the exact provider settings:
corr account discover reader@example.invalid
corr account add reader@example.invalid --helpFor Gmail, Google Calendar, and Google Tasks, create a Desktop OAuth client in
a Google Cloud project you control. Guided setup validates the downloaded
client JSON and places its generated credential in the OS keyring; account
addition still does not authenticate. Follow the
Google OAuth setup guide for current Cloud
Console screens, audience choices, exact APIs, scopes, import, and login.
Before installing, the optional
provider compatibility checker
can classify public evidence for an address. The browser sends only the domain
after the `@` in a request body; it never sends the local part, persists the
address, or starts sign-in. The public service uses only a fixed DNS resolver
and returns no raw DNS record. Skip it whenever you prefer and run `corr account
discover ADDRESS` locally.
Account addition does not authenticate. OAuth routes require a client
registration you are authorized to use. Google additionally requires a
separate external handle for its generated Desktop client credential.
Standards routes use a keyring entry
or explicitly approved helper reference. Passwords and tokens never enter
`config.toml`. See account and provider configuration.
The Outlook Web route opens a dedicated visible profile during the later
`auth login`; that window remains the browser-owned session until account
logout or daemon shutdown. SSO, MFA, Conditional Access, and organization
notices remain inside the provider-owned flow.
3. Connect an agent
corr mcp setup codexUse `corr mcp --help` for Claude Code, GitHub Copilot CLI, Gemini CLI, Qwen
Code, Qoder, Kimi Code CLI, and generic stdio clients. Corresync exposes 45
narrow tools and two read-only monitor resources; there is no HTTP, SSE,
remote MCP endpoint, or hosted relay.
Nothing sends on the first attempt
Consequential writes use a server-enforced `preview -> commit` protocol. The
first command shows the normalized account, provider, target, recipients,
content digest, and version preconditions without performing the effect.
printf 'Synthetic body.\n' | \
corr mail send \
--account work \
--to reader@example.invalid \
--subject 'Review example' \
--body-file -After reviewing every field, repeat the exact command with approval:
printf 'Synthetic body.\n' | \
corr mail send \
--account work \
--to reader@example.invalid \
--subject 'Review example' \
--body-file - \
--approveApproval is short-lived, single-use, and bound to the caller, account,
provider, target, payload, and effect. Changing any reviewed field invalidates
it. MCP keeps preview and commit as separate typed tools.
See the complete safety model.
Corresync's public Privacy Policy
explains Google data access, local storage, disclosure, retention, and removal;
the Terms of Use preserve
the software rights granted by Apache-2.0.
More than one inbox
- Cross-account views: bounded mail search and agenda projections retain
original account, provider, calendar, time-zone, and partial-failure
provenance.
- Read-only import staging: inspect an explicitly approved local archive,
Maildir tree, or supported export without uploading or mutating the source.
- Opt-in monitoring: move deliberately from `off` to local notification,
durable queueing, and finally one approved no-shell runner. Remote egress is
a separate consent.
- Privacy-preserving feedback: generate an allowlisted report locally,
review it, then explicitly copy, save, or open a prefilled GitHub page. A
separate default-off setting can submit an even smaller allowlist-only public
issue through your authenticated `gh` client after an interactive failure.
Mailbox, calendar, import, and event-queue values are private, untrusted
external data. Their content is never authority to run a command or start an
agent.
Honest edges
- Gmail, Google Calendar, and Google Tasks require a user-owned Google Desktop
OAuth client. Corresync-managed Google OAuth stays disabled; the user-owned
route is synthetic-contract covered and live-unobserved.
- Microsoft Graph requires your own authorized public-client registration.
Corresync ships no token relay.
- Windows desktop notification setup is unavailable because Corresync does
not install an AppUserModelID; queue and approved runner modes remain
available.
- Provider meeting links are requested only when the selected calendar route
reports native support.
- Cross-compilation and synthetic fixtures do not prove native browser,
keyring, IPC, provider, package-manager, Gatekeeper, or SmartScreen behavior.
- Teams chat, channels, calls, recordings, and meeting lifecycle management;
tenant-wide access; unattended login; TLS interception; arbitrary provider
actions; automatic telemetry; and raw crash upload are outside scope.
The exact action matrix and typed provider degradations are in
One local safety boundary
AI agents ───────── MCP over stdio ─┐
├── typed use cases + effect policy
Humans and scripts ──────── corr ───┘ │
│ authenticated local IPC
session owner
├── browser-owned sessions
├── explicit OAuth + keyring
└── standards adaptersThe session owner exposes no TCP listener. On Unix, clients authenticate and
pin the environment-independent private runtime directory, singleton lock,
socket, and peer UID before the local bearer can be sent. On Windows, clients
verify the protected named pipe, owner, DACL, server process, and SID first.
Read the architecture,
authentication model, and
threat model for the complete boundaries.
Documentation
| I want to… | Start here |
|---|---|
| Install and verify a release | Installation |
| Add accounts and choose routes | Configuration |
| Understand browser, OAuth, and standards sign-in | Authentication |
| Learn CLI commands | CLI guide |
| Connect an AI client | MCP guide |
| Compare provider actions and degradations | Feature matrix |
| Consume stable machine output | JSON contract |
| Integrate versioned public/local contracts | Versioning policy |
| Verify compatibility claims | Evidence matrix |
| Review privacy and Google data handling | Privacy Policy |
| Review use and open-source license terms | Terms of Use |
| Connect Google with your own Desktop client | Google OAuth setup |
| Review the dormant managed-client plan | Google verification runbook |
| Review every guide | Documentation map |
Users upgrading from versions before v0.7 can follow the
historical migration guide. `corr` is the primary
command. The product, package, repository, configuration roots, plugin, and MCP
server remain named Corresync.
Contributing and security
Read CONTRIBUTING.md and AGENTS.md. Default
tests and CI use only synthetic fixtures:
mise exec -- task verifyPlease report vulnerabilities through
GitHub private vulnerability reporting, never a public issue.
Frequently asked questions
What is corresync?
corresync is Local-first MCP server and CLI for email and calendars across Outlook, Gmail, Microsoft 365, JMAP, IMAP/SMTP, and CalDAV. Preview-before-commit writes; no hosted relay.
How do I install corresync?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is corresync open source?
Yes — it is hosted on GitHub at https://github.com/nkiyohara/corresync and has 1 stars.
Related MCP tools
The missing open-source Kubernetes UI with a built-in MCP server for AI agents. See what's broken, why, and what changed. Issues, Topology, event timeline, Helm, GitOps, live service traffic, and cluster audits - all in one Go binary.
One place to manage & connect to all your MCP servers
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
Open-source coding agent memory. Records issues, attempts, fixes and decisions, then warns your agent before it repeats an approach that already failed. Native MCP server for Claude Code, Cursor, Antigravity and Codex. 100% local, no cloud, no telemetry. MIT.
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnostics.
AI Skills, MCP Tools, and CLI for Unity Engine. Full AI develop and test loop. Use cli for quick setup. Efficient token usage, advanced tools. Any C# method may be turned into a tool by a single line. Works with Claude Code, Gemini, Copilot, Cursor and any other absolutely for free.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP