CLI
Changelog
Every release of the CLI, newest first.
0.0.1
The first release: the whole of OpenEmail from a terminal, with a browser sign-in for people and API keys for scripts.
- Sign-in:
openemail loginin the browser, returning to the terminal on its own on a desktop and through a pasted code over SSH or with--no-browser. API keys with--token,--with-token,OPENEMAIL_API_KEYor--api-key. Profiles withprofile list,use,currentandremove. - Access tokens renewed before they run out, one renewal at a time per profile, and refresh tokens that work once: an old one used more than 30 seconds after it was replaced makes the server revoke that sign-in.
- A saved sign-in only ever goes to the API it signed in to. Plain
httpis refused except onlocalhost,127.0.0.1and::1, and a request path that would leave the API origin stops withinvalid_path. - Verification codes before sensitive changes with a browser sign-in, asked for when a command needs one, or ahead of time with
openemail verify. They cover the REST API and the MCP tools that make the same changes. - Each sign-in can ask for 5 codes an hour and 20 a day. Ten wrong codes in 24 hours pause its verification, and the CLI says when it resumes and exits with code
4andstep_up_paused. whoami,status, andlogout, which revokes a browser sign-in on the server.- Sending with
send: text, HTML, a file, stdin or your editor, attachments of any size, scheduling, an undo window, translation, templates and tags. - The mailbox:
inbox,search,readandreply, andarchive,unarchive,trash,star,unstar,mark,snooze,unsnoozeandlabel. - Disposable inboxes with
temp new,list,read,watchanddelete, with no sign-in. - A resource command for every method of the SDK: 282 methods as 198 commands in 26 namespaces, with
securityleft out of the help becauseopenemail verifycovers it. Typed flags,--datafrom JSON, a file or stdin, paging with--all,--maxand--ndjson, downloads with--out, and a confirmation before anything destructive. - AI:
ai translate,ai languages,ai composeandai summarize. - MCP:
mcp configfor Claude Code, Claude Desktop, Cursor, VS Code, Windsurf and Codex,mcp serveas a local stdio bridge, andmcp toolsandmcp call, which asks for a verification code and calls the tool again when a tool needs one. docs ask,docs openanddocs read,openfor the pages of the web app, andapifor any REST call.- Scripting:
--jsonwith an error envelope on stderr, NDJSON streams, stable exit codes,--no-input, and CI detection. - Help for every command and group, suggestions for mistyped commands and flags, and completion for bash, zsh and fish.
- Sign-ins and inbox tokens in
~/.openemail, readable by you alone and changed under a lock file, and a damagedconfig.jsonkept asconfig.json.bakrather than read as signed out. - Text from the server is cleaned before it reaches the terminal, and output piped to a slow reader is written in full before the CLI exits.
- A daily update notice, which
OPENEMAIL_NO_UPDATE_CHECK=1turns off, andopenemail update. - One bundled file with no dependencies, on Node.js 20.12 or later.
Not in this release: billing, workspaces, account security, data export, calendar changes, forwarding, linking a DNS provider and the assistant chat stay in the web app for now, and openemail open takes you to each of them.
npm install -g @openemail/cliopenemail loginopenemail inbox