Himalaya logo

Himalaya

Rust CLI for managing email across IMAP, SMTP, JMAP, Gmail, Microsoft Graph and Maildir backends, with multi-account TOML config and JSON output.

install

Himalaya is an email client for the command line, written in Rust. It exposes a shared API for mailboxes, envelopes, flags, messages and attachments, plus protocol-specific APIs that expose each backend's full surface. Commands such as himalaya envelope search -m archive ... and himalaya account list / himalaya account check operate on accounts declared in a configuration file, and every command has its own --help.

Backend support covers IMAP, SMTP, ManageSieve, JMAP, the Gmail REST API and Microsoft Graph (Outlook / Microsoft 365), along with local Maildir, m2dir and pimdir stores. Authentication options include SASL mechanisms (anonymous, login, plain, oauthbearer, xoauth2, scram-sha-256) for IMAP, SMTP and ManageSieve, and basic or bearer auth for JMAP. TLS is available through Rustls (ring or aws crypto) or native TLS, and SOCKS5 or HTTP proxies can be set per account or through $ALL_PROXY and $HTTPS_PROXY. Backends are gated behind cargo features, so you can build a binary with only IMAP and SMTP.

Configuration is a TOML file with multi-account support, loaded from $XDG_CONFIG_HOME/himalaya/config.toml, $HOME/.config/himalaya/config.toml or $HOME/.himalayarc. The same file is shared with the himalaya-tui TUI. On first run with no config, a wizard takes an email address and probes PACC, Thunderbird Autoconfiguration, RFC 6186 SRV records and RFC 8620 JMAP resolution in parallel, tests the connection, then prints the account TOML. The README provides example configs for Proton Mail (via Proton Bridge), Fastmail, Gmail, Outlook, Posteo and iCloud. Passwords and tokens can come from external commands such as pass or ortie. Output can be emitted as JSON with --json, which suits scripting.

It suits developers and terminal users who want to read, search and send mail from the shell or scripts, and who manage several accounts across different providers and protocols.

Installation

# via Homebrew
brew install himalaya
# via Cargo
cargo install --locked --git https://github.com/pimalaya/himalaya.git
# via Pre-built binary
curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh

Himalaya CLI screenshot

Alternatives & related tools

add a badge to your README

Maintain Himalaya? Show that it's featured on trmn. The badge links back to this page.

Featured on trmn
Markdown
[![Featured on trmn](https://www.trmn.sh/badge/himalaya.svg)](https://www.trmn.sh/tools/himalaya?utm_source=badge)
HTML
<a href="https://www.trmn.sh/tools/himalaya?utm_source=badge"><img src="https://www.trmn.sh/badge/himalaya.svg" alt="Featured on trmn" height="20"></a>