roman-16/proton-cli

Your CLI for Proton Mail, Drive, Calendar, Pass and Contacts. One binary, end-to-end encrypted.

69

stars

192

commits

Go

primary language

Sep 13, 2026

updated

proton-cli.lerchster.dev

README

proton-cli

Your CLI for Proton Mail, Drive, Calendar, Pass and Contacts.

One binary, end-to-end encrypted. A community project, not affiliated with Proton AG.

Release Downloads Platforms License

proton-cli.lerchster.dev - the documentation, searchable.

Listing unread mail, uploading a file to Drive, previewing which files a cleanup would remove, and listing Pass items

Read your mail, move files in and out of Drive, manage calendars, passwords and contacts, all without opening a browser. proton logs in the way the Proton apps do and does the encryption on your machine, so your keys stay yours.

  • Real end-to-end encryption. SRP login and the full PGP key hierarchy, handled locally with Proton's own go-srp and gopenpgp. No bridge, no proxy, no browser in the middle.
  • Five apps, one binary. Mail, Drive, Calendar, Pass and Contacts, in a single static executable on Linux, macOS and Windows.
  • Built for pipes and cron. JSON and YAML with one envelope shape for every list, streaming stdin and stdout, exit codes that mean something, and --dry-run on everything that changes state.

Install

curl -fsSL https://raw.githubusercontent.com/roman-16/proton-cli/main/scripts/install.sh | sh
irm https://raw.githubusercontent.com/roman-16/proton-cli/main/scripts/install.ps1 | iex

Also on Homebrew, winget, APT, AUR, Nix, npm, and as plain signed binaries. See Install.

The command is proton, and proton-cli works too.

Sign in

$ proton account login
Email: you@proton.me
Password:
Two-factor code: 123456

✓ Signed in as you@proton.me.

That is the whole setup. Signing in saves the session and unlocks your keys, so your password is needed once on this machine and not again.

Try it

proton mail messages list --unread
proton mail messages get "Invoice #2291"
proton drive items upload ./report.pdf /Documents
proton calendar events list
proton pass items totp github.com

Every command reads the same way, proton <app> <collection> <verb>, and anywhere one wants an ID, a subject, name, path or address works too. With completion installed, Tab offers back whatever your last listing showed.

First commands · How a command is built

Documentation

Everything is at proton-cli.lerchster.dev and in docs/ beside the code.

If you want toRead
Get goingInstall · First commands
Do something in one appMail · Drive · Calendar · Pass · Contacts
Script itScripting · Output and exit codes
Let an AI agent use itAI agents - proton skill prints what it needs to know
Look up a commandAll commands
Know whether this is the right toolFAQ - including how it compares to Proton's own CLIs and to Bridge
Decide whether to trust it with your passwordSecurity
Fix a failing commandTroubleshooting

CHANGELOG.md records what each version changed, and proton changelog prints it. Already installed? proton update.

Contributing

Bug reports, ideas, and pull requests are all welcome. CONTRIBUTING.md covers the setup, and SECURITY.md has the private channel for security issues.

Disclaimer

proton-cli is an independent, community-built project. It is not endorsed by, affiliated with, or supported by Proton AG. Proton is a trademark of Proton AG. Use it at your own risk, and mind Proton's terms of service.

License

MIT

Contributors

roman-16

192 commits

roman-16/proton-cli

Your CLI for Proton Mail, Drive, Calendar, Pass and Contacts. One binary, end-to-end encrypted.

69

stars

192

commits

Go

primary language

Sep 13, 2026

updated

proton-cli.lerchster.dev

README

proton-cli

Your CLI for Proton Mail, Drive, Calendar, Pass and Contacts.

One binary, end-to-end encrypted. A community project, not affiliated with Proton AG.

Release Downloads Platforms License

proton-cli.lerchster.dev - the documentation, searchable.

Listing unread mail, uploading a file to Drive, previewing which files a cleanup would remove, and listing Pass items

Read your mail, move files in and out of Drive, manage calendars, passwords and contacts, all without opening a browser. proton logs in the way the Proton apps do and does the encryption on your machine, so your keys stay yours.

  • Real end-to-end encryption. SRP login and the full PGP key hierarchy, handled locally with Proton's own go-srp and gopenpgp. No bridge, no proxy, no browser in the middle.
  • Five apps, one binary. Mail, Drive, Calendar, Pass and Contacts, in a single static executable on Linux, macOS and Windows.
  • Built for pipes and cron. JSON and YAML with one envelope shape for every list, streaming stdin and stdout, exit codes that mean something, and --dry-run on everything that changes state.

Install

curl -fsSL https://raw.githubusercontent.com/roman-16/proton-cli/main/scripts/install.sh | sh
irm https://raw.githubusercontent.com/roman-16/proton-cli/main/scripts/install.ps1 | iex

Also on Homebrew, winget, APT, AUR, Nix, npm, and as plain signed binaries. See Install.

The command is proton, and proton-cli works too.

Sign in

$ proton account login
Email: you@proton.me
Password:
Two-factor code: 123456

✓ Signed in as you@proton.me.

That is the whole setup. Signing in saves the session and unlocks your keys, so your password is needed once on this machine and not again.

Try it

proton mail messages list --unread
proton mail messages get "Invoice #2291"
proton drive items upload ./report.pdf /Documents
proton calendar events list
proton pass items totp github.com

Every command reads the same way, proton <app> <collection> <verb>, and anywhere one wants an ID, a subject, name, path or address works too. With completion installed, Tab offers back whatever your last listing showed.

First commands · How a command is built

Documentation

Everything is at proton-cli.lerchster.dev and in docs/ beside the code.

If you want toRead
Get goingInstall · First commands
Do something in one appMail · Drive · Calendar · Pass · Contacts
Script itScripting · Output and exit codes
Let an AI agent use itAI agents - proton skill prints what it needs to know
Look up a commandAll commands
Know whether this is the right toolFAQ - including how it compares to Proton's own CLIs and to Bridge
Decide whether to trust it with your passwordSecurity
Fix a failing commandTroubleshooting

CHANGELOG.md records what each version changed, and proton changelog prints it. Already installed? proton update.

Contributing

Bug reports, ideas, and pull requests are all welcome. CONTRIBUTING.md covers the setup, and SECURITY.md has the private channel for security issues.

Disclaimer

proton-cli is an independent, community-built project. It is not endorsed by, affiliated with, or supported by Proton AG. Proton is a trademark of Proton AG. Use it at your own risk, and mind Proton's terms of service.

License

MIT

Contributors

roman-16

192 commits

Languages

Go

97.0%