owa-bridge nkiyohara
winget install --id=nkiyohara.OWABridge -e Manage an authorized Outlook Web mail and calendar session through a guarded CLI or local MCP server without a Microsoft Graph application.
winget install --id=nkiyohara.OWABridge -e Manage an authorized Outlook Web mail and calendar session through a guarded CLI or local MCP server without a Microsoft Graph application.
Mail, calendars, and tasks. One local MCP server and CLI. Provider-neutral, local-first tooling for AI agents, scripts, and you.
Website · Getting started · Providers · Features · Safety · Privacy · Terms · Technical docs
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.
$ 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:00Z
Connect 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-code
Then 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.
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
annotated Google setup guide.
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.
Prefer a guided page? Follow getting started on the website.
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.
curl -LsSf https://corresync.org/install.sh | sh
corr --version
powershell -NoProfile -Command "irm https://corresync.org/install.ps1 | iex"
corr --version
Review 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/corresync
Direct 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
latest release.
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.
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 settings
The equivalent copy-paste commands for scripts are:
corr config set updates.channel preview
corr update
Switch 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 true
It 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.
corr setup
The 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 work
Scripts and advanced users retain the deterministic form:
corr setup you@example.com --alias personal
corr auth login --account personal
corr doctor --account personal
The 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 --help
For 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 only during the later
auth login; SSO, MFA, Conditional Access, and organization notices remain
inside the provider-owned flow.
corr mcp setup codex
Use 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.
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 - \
--approve
Approval 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.
off to local notification,
durable queueing, and finally one approved no-shell runner. Remote egress is
a separate consent.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.
The exact action matrix and typed provider degradations are in features.md.
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 adapters
The 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.
| 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.
Read CONTRIBUTING.md and AGENTS.md. Default tests and CI use only synthetic fixtures:
mise exec -- task verify
Please report vulnerabilities through GitHub private vulnerability reporting, never a public issue.