Courier CLI

Courier is a command-line tool for managing email, calendar, contacts, and chat from your terminal. It connects to your existing providers through a unified interface — no switching between browser tabs to check your schedule, fire off a quick reply, or message a teammate.

Download v1.1.0

PlatformFile
Windows x64CourierCli.exe
Windows ARM64CourierCli.exe
Linux x64CourierCli
Linux ARM64CourierCli

On Linux/macOS, make the binary executable after downloading:

chmod +x CourierCli

What it does

  • Mail — List, search, read, send, reply, manage drafts, download attachments, trash or delete messages
  • Calendar — View today's agenda, this week's events, create/update/delete events, quick-add from natural language, set reminders
  • Contacts — Search people by name or email across providers
  • Chat — List chats, read and send messages, find or create 1:1 conversations, list spaces/channels, post to channels
  • Auth — Browser-based OAuth login, multi-account support with aliases, status check, logout

Usage examples

# Mail
courier mail list
courier mail list --from boss@work.com --since 3d
courier mail read <message-id>
courier mail send --to someone@example.com --subject "Hello" --body "Hi there"

# Calendar
courier cal today
courier cal week
courier cal create "Team Standup" --start "2026-03-01 09:00" --end "2026-03-01 09:30" --reminder 15
courier cal quick "Lunch with Alex tomorrow at noon"

# Contacts
courier contacts search "John Smith"

# Chat
courier chat list
courier chat send <chat-id> --body "Hello!"
courier chat spaces
courier chat post <space-id> --body "Update for the team"

Output formats

All commands support --output text, --output json, and --output jsonl for easy scripting and piping into other tools.

Provider support

Courier is built on a provider abstraction layer. Currently supported providers:

  • Google Workspace — Gmail, Google Calendar
  • Microsoft 365 — Outlook/Exchange mail, calendar, Teams chat, contacts/directory search

Multiple accounts from different providers can be used simultaneously. Read commands aggregate across all accounts by default.

Built with

.NET, System.CommandLine, Google APIs, Microsoft Graph SDK (MSAL)

Security & your credentials

Courier uses OAuth to connect to your mail, calendar, and chat providers — it never sees your password. After you authenticate, your OAuth tokens are stored locally at ~/.config/courier/ (Linux/macOS) or %APPDATA%/courier/ (Windows).

You are responsible for protecting that folder. Anyone with access to those files can read and send your email and access your calendar on your behalf. A few things worth knowing:

  • Do not share your courier config directory or its contents with anyone
  • On shared machines, make sure your home directory permissions are restricted (chmod 700 ~)
  • If you believe your tokens have been compromised, revoke access immediately via your Google account permissions or Microsoft account permissions and run courier auth logout
  • Courier does not transmit your tokens anywhere — all authentication data stays on your machine

Courier is provided as-is. Use it at your own risk and keep your local environment secure.

Changelog

[1.1.0] — 2026-03-05

Added

  • Contacts searchcourier contacts search <query> resolves people by name/email across providers (Microsoft People API with directory fallback)
  • Chat commands — provider-agnostic chat abstraction: chat list, chat read, chat send, chat find, chat spaces, chat space-messages, chat post

Changed

  • Breaking: courier teams command replaced by courier chat — Teams-specific operations are now behind the provider-agnostic chat interface

[1.0.3] — 2026-03-04

Fixed

  • Calendar view commands (cal events, cal today, cal week) now query all calendars instead of only the primary — events on secondary/shared calendars are included in results
  • Added --calendar option to calendar view commands to filter by a specific calendar ID

[1.0.2] — 2026-03-02

Added

  • Microsoft Graph provider — full Outlook/Exchange support for mail and calendar via courier auth login --as outlook --provider microsoft
  • --calendar option on cal create, cal update, cal delete, and cal quick to target a specific calendar by ID
  • --reminder / --no-reminder options on cal create and cal update
  • Headless auto-detection — both providers detect headless environments and fall back to device code auth

Fixed

  • Trimmed publish builds now preserve reflection metadata — fixes Property Get method was not found on Linux ARM64

[0.1.0] — 2026-02-28

  • Initial release with Google provider (Gmail + Google Calendar)
  • Multi-account support with aliases and default account
  • Mail commands: list, search, read, send, reply, labels, drafts, trash, delete, attachments
  • Calendar commands: today, week, events, list, create, update, delete, quick add
  • Output formats: text, json, jsonl
  • Self-contained single-file builds for win-x64, linux-x64, linux-arm64