Paw Mail CLI
The CLI is distributed as pre-built binaries via the paw-mail-cli repository. It must be installed before use.
Installation
# Nix (recommended)
nix profile install 'github:pawpair/paw-mail-cli?dir=nix#paw-mail'
# Homebrew (macOS / Linux)
brew tap pawpair/paw-mail-cli && brew install paw-mail
# Arch Linux (AUR)
yay -S paw-mail-bin
# Debian / Ubuntu — download .deb from latest release
# https://github.com/pawpair/paw-mail-cli/releases/latest
sudo dpkg -i paw-mail_*_amd64.deb
Binaries
| Binary | Description |
|---|---|
paw-mail | Unified CLI + TUI (recommended) |
paw-mail-tui | Terminal user interface only |
All examples below use paw-mail. The TUI can be launched with paw-mail-tui or paw-mail tui.
Global Flags
These flags go before the subcommand:
| Flag | Env Var | Description |
|---|---|---|
--server <url> | MAIL_SERVER | gRPC backend address |
--format <table|json> | — | Output format (default: table) |
--auth-backend <auto|keyring|file> | MAIL_AUTH_BACKEND | Token storage backend |
-v, --verbose | — | Enable debug logging |
Subcommands
Config
paw-mail config refresh # Fetch remote config and cache locally
paw-mail config show # Show current config values
Config is cached locally at ~/.local/pawpair/config.json (or ~/.pawpair/config.json). First run bootstraps automatically from the remote config service.
Auth
paw-mail auth login # OAuth device flow login
paw-mail auth status # Show auth state + backend
paw-mail auth logout # Clear stored tokens
Accounts
paw-mail accounts list
paw-mail accounts get --provider <google|microsoft>
paw-mail accounts add --email <e> --provider <google|microsoft> # Opens browser for OAuth
paw-mail accounts delete --provider <google|microsoft>
paw-mail accounts activate --id <uuid>
paw-mail accounts deactivate --id <uuid>
paw-mail accounts oauth-clients # List user OAuth clients
paw-mail accounts oauth-clients --system # List system OAuth clients
Emails
paw-mail emails folders --provider <p> --email <e>
paw-mail emails list --provider <p> --email <e> --folder INBOX [--limit 50]
paw-mail emails fetch --provider <p> --email <e> --folder INBOX --uid <n>
paw-mail emails body --provider <p> --email <e> --folder INBOX --uid <n>
paw-mail emails search --provider <p> --email <e> --folder INBOX --query <q>
paw-mail emails read --provider <p> --email <e> --folder INBOX --uid <n>
paw-mail emails unread --provider <p> --email <e> --folder INBOX --uid <n>
paw-mail emails flag --provider <p> --email <e> --folder INBOX --uid <n> [--unflag]
paw-mail emails move --provider <p> --email <e> --folder INBOX --uid <n> --destination Trash
paw-mail emails delete --provider <p> --email <e> --folder INBOX --uid <n>
Sync
paw-mail sync status --account-id <id>
paw-mail sync trigger --account-id <id>
paw-mail sync history --account-id <id>
Threads
paw-mail threads list --account-id <id>
paw-mail threads get --thread-id <id> --account-id <id>
Auth Backends
# Auto-detect (default) — tries keyring, falls back to file
paw-mail auth status
# Force file-based storage
paw-mail --auth-backend file auth status
# Force keyring (errors if unavailable)
paw-mail --auth-backend keyring auth status
# Verbose to see backend selection
paw-mail -v auth status
Common Issues
command not found: paw-mail— The CLI is not installed. See Installation above.Keyring write failed: locked collection— GNOME Keyring is locked. Use--auth-backend fileor unlock your keyring.Could not open browser— Headless/SSH session. Copy the printed URL manually.