Proton doesn't have a CLI for all their web interfaces. There is one for Drive and one for Pass, but the other ones are not really there. There's no Mail CLI, Contacts or other CLIs. I wanted to have everything in one.
It does logins the way the Proton apps do, with SRP. It decrypts and encrypts on your machine with Proton's own Go libraries, go-srp and gopenpgp. Your password never leaves the machine. It talks to the same API as the Proton web apps. There is no bridge and no daemon. It runs one command and exits.
Some things it can do:
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 has the same shape: proton <app> <collection> <verb>. Every command can print JSON. Every command that changes something takes --dry-run.This CLI does things the web interfaces do, in those five apps. But some things need a browser and are not here: importing from Gmail, adding a Zoom link, registering a security key and so on. VPN, Wallet, Docs, Meet, Lumo and Authenticator are not covered.
Most of the code was written with LLMs as you can see. But I have an extensive test suite: 397 live tests against three real Proton accounts and a record of the 243 API endpoints they reach.
Install with curl, Homebrew, winget, APT, AUR, Nix, npm or take a binary from the releases page.
Feedback is more than welcome :)