
Himalaya
- 3.6k installs
- 385k repo stars
- Updated August 3, 2026
- steipete/clawdis
himalaya is a CLI skill for IMAP/SMTP email list, read, search, compose, reply, forward, and folder operations via the Himalaya binary.
About
himalaya teaches agents to operate the Himalaya CLI for IMAP and SMTP email from the terminal. Setup verifies himalaya --version, runs himalaya account configure, and stores config at ~/.config/himalaya/config.toml with credentials kept in password managers rather than chat logs. Read and search commands cover folder list, envelope list, message read, and filtered envelope queries by sender or subject. Write workflows use message write, template write, template send from files, reply, and forward, with MML syntax documented in references/message-composition.md for attachments and rich messages. Organization commands copy, move, delete messages and add or remove flags such as seen. Safety rules require confirmation before sending, deleting, or bulk moves, --account when multiple accounts exist, and quoting exact message IDs in summaries. Reference files configuration.md and message-composition.md cover account auth, backend setup, and MML compose syntax. Install metadata supports Homebrew formula himalaya when the binary is missing.
- Covers IMAP read/search and SMTP compose, reply, forward via himalaya CLI commands.
- Config lives at ~/.config/himalaya/config.toml with password-manager credential guidance.
- MML composition for attachments and rich messages documented in message-composition reference.
- Organization supports copy, move, delete, and seen flag add/remove on message IDs.
- Safety rules require confirm-before-send/delete and --account for multi-account setups.
Himalaya by the numbers
- 3,647 all-time installs (skills.sh)
- +159 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #56 of 550 CLI & Terminal skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 3, 2026 (Skillselion catalog sync)
himalaya capabilities & compatibility
- Capabilities
- folder and envelope listing with filtered search · message read, compose, reply, and forward · mml based rich message and attachment compositio · copy, move, delete, and flag management · multi account handling with account flag
- Works with
- gmail
- Use cases
- email · orchestration
- Platforms
- macOS · Linux
What himalaya says it does
Prefer password managers/keyrings for credentials; do not paste secrets into chat/logs.
Confirm before sending, deleting, or moving many messages.
npx skills add https://github.com/steipete/clawdis --skill himalayaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3.6k |
|---|---|
| repo stars | ★ 385k |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 3, 2026 |
| Repository | steipete/clawdis ↗ |
How do agents read, search, compose, and organize email from the terminal with Himalaya safely?
Manage IMAP/SMTP email from the shell with Himalaya for list, read, search, compose, reply, forward, copy, move, and delete operations.
Who is it for?
Developers automating email triage, replies, and folder moves from shell-based agent sessions.
Skip if: Skip when the user needs a GUI mail client or OAuth webmail setup without terminal CLI access.
When should I use this skill?
User mentions Himalaya CLI, IMAP/SMTP mail from terminal, envelope search, or MML message composition.
What you get
Configured Himalaya account, executed mail commands, and organized messages with confirmation and correct message ID handling.
- configured mail account
- read or composed messages
- organized folders and flags
By the numbers
- Documents 9 mail operations: list, read, search, compose, reply, forward, copy, move, delete
Files
Himalaya
Use himalaya for IMAP/SMTP email from shell.
References
references/configuration.md: account config, auth, backend setup.references/message-composition.md: MML compose syntax.
Setup
himalaya --version
himalaya account configureConfig path: ~/.config/himalaya/config.toml.
Prefer password managers/keyrings for credentials; do not paste secrets into chat/logs.
Read/search
himalaya folder list
himalaya envelope list
himalaya message read <id>
himalaya envelope list from alice@example.com subject invoiceWrite
himalaya message write
himalaya template write
himalaya template send < /tmp/message.txt
himalaya message reply <id>
himalaya message forward <id>Use MML for attachments and rich messages; read references/message-composition.md first.
Organize
himalaya message copy <id> <folder>
himalaya message move <id> <folder>
himalaya message delete <id>
himalaya flag add <id> --flag seen
himalaya flag remove <id> --flag seenSafety
- Confirm before sending, deleting, or moving many messages.
- Use
--accountwhen multiple accounts exist. - Quote exact message IDs in summaries.
Himalaya Configuration Reference
Configuration file location: ~/.config/himalaya/config.toml
Minimal IMAP + SMTP Setup
[accounts.default]
email = "user@example.com"
display-name = "Your Name"
default = true
# IMAP backend for reading emails
backend.type = "imap"
backend.host = "imap.example.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "user@example.com"
backend.auth.type = "password"
backend.auth.raw = "your-password"
# SMTP backend for sending emails
message.send.backend.type = "smtp"
message.send.backend.host = "smtp.example.com"
message.send.backend.port = 587
message.send.backend.encryption.type = "start-tls"
message.send.backend.login = "user@example.com"
message.send.backend.auth.type = "password"
message.send.backend.auth.raw = "your-password"Password Options
Raw password (testing only, not recommended)
backend.auth.raw = "your-password"Password from command (recommended)
backend.auth.cmd = "pass show email/imap"
# backend.auth.cmd = "security find-generic-password -a user@example.com -s imap -w"System keyring (requires keyring feature)
backend.auth.keyring = "imap-example"Then run himalaya account configure <account> to store the password.
Gmail Configuration
[accounts.gmail]
email = "you@gmail.com"
display-name = "Your Name"
default = true
backend.type = "imap"
backend.host = "imap.gmail.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "you@gmail.com"
backend.auth.type = "password"
backend.auth.cmd = "pass show google/app-password"
message.send.backend.type = "smtp"
message.send.backend.host = "smtp.gmail.com"
message.send.backend.port = 587
message.send.backend.encryption.type = "start-tls"
message.send.backend.login = "you@gmail.com"
message.send.backend.auth.type = "password"
message.send.backend.auth.cmd = "pass show google/app-password"Note: Gmail requires an App Password if 2FA is enabled.
iCloud Configuration
[accounts.icloud]
email = "you@icloud.com"
display-name = "Your Name"
backend.type = "imap"
backend.host = "imap.mail.me.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "you@icloud.com"
backend.auth.type = "password"
backend.auth.cmd = "pass show icloud/app-password"
message.send.backend.type = "smtp"
message.send.backend.host = "smtp.mail.me.com"
message.send.backend.port = 587
message.send.backend.encryption.type = "start-tls"
message.send.backend.login = "you@icloud.com"
message.send.backend.auth.type = "password"
message.send.backend.auth.cmd = "pass show icloud/app-password"Note: Generate an app-specific password at appleid.apple.com
Folder Aliases
Map custom folder names:
[accounts.default.folder.alias]
inbox = "INBOX"
sent = "Sent"
drafts = "Drafts"
trash = "Trash"Multiple Accounts
[accounts.personal]
email = "personal@example.com"
default = true
# ... backend config ...
[accounts.work]
email = "work@company.com"
# ... backend config ...Switch accounts with --account:
himalaya --account work envelope listNotmuch Backend (local mail)
[accounts.local]
email = "user@example.com"
backend.type = "notmuch"
backend.db-path = "~/.mail/.notmuch"OAuth2 Authentication (for providers that support it)
backend.auth.type = "oauth2"
backend.auth.client-id = "your-client-id"
backend.auth.client-secret.cmd = "pass show oauth/client-secret"
backend.auth.access-token.cmd = "pass show oauth/access-token"
backend.auth.refresh-token.cmd = "pass show oauth/refresh-token"
backend.auth.auth-url = "https://provider.com/oauth/authorize"
backend.auth.token-url = "https://provider.com/oauth/token"Additional Options
Signature
[accounts.default]
signature = "Best regards,\nYour Name"
signature-delim = "-- \n"Downloads directory
[accounts.default]
downloads-dir = "~/Downloads/himalaya"Editor for composing
Set via environment variable:
export EDITOR="vim"Message Composition with MML (MIME Meta Language)
Himalaya uses MML for composing emails. MML is a simple XML-based syntax that compiles to MIME messages.
Basic Message Structure
An email message is a list of headers followed by a body, separated by a blank line:
From: sender@example.com
To: recipient@example.com
Subject: Hello World
This is the message body.Headers
Common headers:
From: Sender addressTo: Primary recipient(s)Cc: Carbon copy recipientsBcc: Blind carbon copy recipientsSubject: Message subjectReply-To: Address for replies (if different from From)In-Reply-To: Message ID being replied to
Address Formats
To: user@example.com
To: John Doe <john@example.com>
To: "John Doe" <john@example.com>
To: user1@example.com, user2@example.com, "Jane" <jane@example.com>Plain Text Body
Simple plain text email:
From: alice@localhost
To: bob@localhost
Subject: Plain Text Example
Hello, this is a plain text email.
No special formatting needed.
Best,
AliceMML for Rich Emails
Multipart Messages
Alternative text/html parts:
From: alice@localhost
To: bob@localhost
Subject: Multipart Example
<#multipart type=alternative>
This is the plain text version.
<#part type=text/html>
<html><body><h1>This is the HTML version</h1></body></html>
<#/multipart>Attachments
Attach a file:
From: alice@localhost
To: bob@localhost
Subject: With Attachment
Here is the document you requested.
<#part filename=/path/to/document.pdf><#/part>Attachment with custom name:
<#part filename=/path/to/file.pdf name=report.pdf><#/part>Multiple attachments:
<#part filename=/path/to/doc1.pdf><#/part>
<#part filename=/path/to/doc2.pdf><#/part>Inline Images
Embed an image inline:
From: alice@localhost
To: bob@localhost
Subject: Inline Image
<#multipart type=related>
<#part type=text/html>
<html><body>
<p>Check out this image:</p>
<img src="cid:image1">
</body></html>
<#part disposition=inline id=image1 filename=/path/to/image.png><#/part>
<#/multipart>Mixed Content (Text + Attachments)
From: alice@localhost
To: bob@localhost
Subject: Mixed Content
<#multipart type=mixed>
<#part type=text/plain>
Please find the attached files.
Best,
Alice
<#part filename=/path/to/file1.pdf><#/part>
<#part filename=/path/to/file2.zip><#/part>
<#/multipart>MML Tag Reference
<#multipart>
Groups multiple parts together.
type=alternative: Different representations of same contenttype=mixed: Independent parts (text + attachments)type=related: Parts that reference each other (HTML + images)
<#part>
Defines a message part.
type=<mime-type>: Content type (e.g.,text/html,application/pdf)filename=<path>: File to attachname=<name>: Display name for attachmentdisposition=inline: Display inline instead of as attachmentid=<cid>: Content ID for referencing in HTML
Composing from CLI
Interactive compose
Opens your $EDITOR:
himalaya message writeReply (opens editor with quoted message)
himalaya message reply 42
himalaya message reply 42 --all # reply-allForward
himalaya message forward 42Send from stdin
cat message.txt | himalaya template sendPrefill headers from CLI
himalaya message write \
-H "To:recipient@example.com" \
-H "Subject:Quick Message" \
"Message body here"Tips
- The editor opens with a template; fill in headers and body.
- Save and exit the editor to send; exit without saving to cancel.
- MML parts are compiled to proper MIME when sending.
- Use
himalaya message export --fullto inspect the raw MIME structure of received emails.
Related skills
Forks & variants (1)
Himalaya has 1 known copy in the catalog totaling 40 installs. They canonicalize to this original listing.
- smithery.ai - 40 installs
How it compares
Pick himalaya for terminal IMAP/SMTP control; pick email-ops when ECC evidence-first triage and Sent-folder proof on a live surface is required.
FAQ
Where is Himalaya configuration stored?
Account config lives at ~/.config/himalaya/config.toml after himalaya account configure.
How should agents handle attachments?
Use MML compose syntax and read references/message-composition.md before writing rich messages.
What safety checks are required?
Confirm before sending, deleting, or moving many messages and use --account when multiple accounts exist.