Skip to main content

fmcli

Multi-account Fastmail CLI for email, calendar, contacts, and files.

Features

  • Email: list, search, read, send, reply
  • Mailbox: list, move, mark-read/spam
  • Masked Email: list, create, delete
  • Calendar: list events, create, delete
  • Contacts: list, search, create, delete
  • Files/Drive: list, download, upload, delete
  • Multi-account: configure multiple Fastmail accounts, switch with --account

Installation

git clone https://github.com/sussdorff/fmcli
cd fmcli
uv sync

Configuration

Create ~/.config/fmcli/config.toml:

[[accounts]]
name = "personal"
email = "user@fastmail.com"
token = "your-api-token"

[[accounts]]
name = "work"
email = "user@company.com"
token = "your-api-token"
app_password = "your-app-password"  # required for CalDAV/CardDAV/WebDAV

Get your API token from Fastmail Settings → Privacy & Security → API Tokens.

The app_password is only needed for calendar, contacts, and files commands. Create one at Fastmail Settings → Privacy & Security → App Passwords.

Select account:

  • --account <name> flag on any command
  • FMC_ACCOUNT=work fmcli email list
  • Default: first account in config file

Usage

# Account management
fmcli account list
fmcli account show personal

# Email
fmcli email list
fmcli email list --account work --limit 50
fmcli email search "invoice"
fmcli email read <email-id>
fmcli email send --to recipient@example.com --subject "Hello" --body "Hi there"
fmcli email reply <email-id> --body "Thanks!"

# Mailbox
fmcli mailbox list
fmcli mailbox move <email-id> <mailbox-id>
fmcli mailbox mark-read <email-id>
fmcli mailbox mark-read <email-id> --unread
fmcli mailbox mark-spam <email-id>

# Masked Email
fmcli masked-email list
fmcli masked-email create --for-domain shop.example.com --description "Online shopping"
fmcli masked-email delete <masked-email-id>

# Calendar
fmcli calendar list
fmcli calendar list --days 7
fmcli calendar create --title "Team meeting" --start 2024-02-01T10:00:00 --end 2024-02-01T11:00:00
fmcli calendar delete <event-uid>

# Contacts
fmcli contacts list
fmcli contacts search "Alice"
fmcli contacts create --name "Alice Smith" --email alice@example.com --phone "+1234567890"
fmcli contacts delete <contact-uid>

# Files/Drive
fmcli files list
fmcli files list --path /Documents
fmcli files download /report.pdf ./report.pdf
fmcli files upload ./local.txt /remote.txt
fmcli files delete /old-file.txt

Shell Completions

fmcli --install-completion

Development

uv sync
uv run pytest
uv run pytest --cov=fmcli --cov-report=term-missing

Stack

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fmcli-2026.4.0.tar.gz (119.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fmcli-2026.4.0-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file fmcli-2026.4.0.tar.gz.

File metadata

  • Download URL: fmcli-2026.4.0.tar.gz
  • Upload date:
  • Size: 119.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fmcli-2026.4.0.tar.gz
Algorithm Hash digest
SHA256 24f9bb2b8b7cc6d76e5bffbadd57b9bb934c78ca0fc22337a9f0ab284620afb6
MD5 3c02221da2c03a11eadb0bcd32abe9f3
BLAKE2b-256 9d877b6c9129333bfd7176bee9f00a9accf4d930e1816040cc6eeceea5d2fe61

See more details on using hashes here.

File details

Details for the file fmcli-2026.4.0-py3-none-any.whl.

File metadata

  • Download URL: fmcli-2026.4.0-py3-none-any.whl
  • Upload date:
  • Size: 24.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fmcli-2026.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 affddfa254d852459d34d2e444ceb10e3c4ed6055b25bd1706704d14375815f6
MD5 0115a7856dfc18ab9987949d53cc262b
BLAKE2b-256 d6895919d51609ed637cf0aae15aa645b76b7ef183be010f4c831f7f4c41f2ac

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.4.0 This release

2 files

2026.3.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page