How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/pawpair/paw-mail-cli --skill paw-mail-usageBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
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.debBinaries
| 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 valuesConfig 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 tokensAccounts
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 clientsEmails
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 statusCommon 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.

