himalaya

Manage IMAP and SMTP email accounts from the terminal using the Himalaya CLI.

Updated Dec 7, 2025
One-click install
npx skills add https://github.com/harlanljones/dotfiles --skill himalaya-harlanljones
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: himalaya
Source: https://github.com/harlanljones/dotfiles/tree/main/dot_hermes/skills/email/himalaya
Command: npx skills add https://github.com/harlanljones/dotfiles --skill himalaya-harlanljones

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Reading, searching, composing, and organizing email typically requires a GUI client or web interface, which blocks terminal-based and agent-driven workflows. This Skill lets an agent operate a full mailbox through the Himalaya CLI using IMAP and SMTP backends. ## Core Features & Use Cases - Mailbox Operations: List folders and envelopes, search messages, read or export raw MIME, move, copy, delete, and manage flags across multiple accounts. - Non-Interactive Composition: Send, reply, and forward by piping MML templates via stdin, with support for HTML parts, attachments, and inline images. - Configuration Guidance: Set up IMAP/SMTP accounts for Gmail, iCloud, and generic providers with secure password handling via pass, keyring, or OAuth2, including the critical v1.2.0 folder.aliases syntax that prevents duplicate sends on Gmail. - Use Case: An agent monitors an inbox, searches for messages from a client, reads the latest thread, and sends a reply with an attached PDF report, all without leaving the terminal. ## Quick Start Ask the agent to list the ten most recent emails in your inbox using himalaya and summarize their subjects and senders.

Frequently Asked Questions about himalaya

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I send an email from the command line with himalaya?▼

Pipe a message with headers and body into himalaya template send via stdin, for example using a heredoc with From, To, and Subject headers. This non-interactive approach avoids opening an editor and works reliably in scripts and agent workflows.

How do I configure himalaya for Gmail IMAP and SMTP?▼

Create a config.toml account using imap.gmail.com:993 and smtp.gmail.com:587 with an app password, and set folder.aliases.sent to "[Gmail]/Sent Mail". Without the alias mapping, saving to Sent fails after SMTP delivery and retries cause duplicate emails.

Does himalaya support multiple email accounts?▼

Yes, define multiple [accounts.NAME] sections in config.toml and mark one as default. Switch between them at runtime with the --account flag, for example himalaya --account work envelope list.

Why does himalaya message send fail after the email was delivered?▼

This happens when folder aliases use the old singular [accounts.NAME.folder.alias] syntax, which v1.2.0 silently ignores. The save-to-Sent step then fails after SMTP succeeds, and retrying re-sends the message. Use the plural folder.aliases.X dotted keys instead.

Can himalaya handle attachments and HTML emails?▼

Yes, himalaya uses MML syntax for rich composition, supporting file attachments, multipart alternative HTML bodies, and inline images via content IDs. Received attachments can be saved with himalaya attachment download.