
Himalaya
- 16 installs
- 869 repo stars
- Updated June 8, 2026
- beita6969/scienceclaw
himalaya is a Claude skill that manages email from the terminal via the himalaya CLI over IMAP, SMTP, Notmuch, or Sendmail backends.
About
himalaya is a Claude skill that drives the himalaya CLI email client to manage email from the terminal over IMAP, SMTP, Notmuch, or Sendmail backends. A developer uses it to list, read, search, reply to, forward, move, and send emails, including across multiple accounts. It matters because it gives command-line and agent access to a full email workflow after a config file with IMAP/SMTP credentials is set up.
- Drives the himalaya CLI email client over IMAP/SMTP to list, read, write, reply, forward and search email
- Supports multiple accounts and MML MIME composition
- Requires a config.toml with IMAP/SMTP credentials
Himalaya by the numbers
- 16 all-time installs (skills.sh)
- Ranked #368 of 550 CLI & Terminal skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
himalaya capabilities & compatibility
Free; requires only IMAP/SMTP account credentials, no API keys.
- Capabilities
- email · email search · attachment download
- Works with
- gmail · outlook
- Use cases
- Pricing
- Free
What himalaya says it does
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal.
Himalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.
For composing rich emails with attachments, use MML syntax
npx skills add https://github.com/beita6969/scienceclaw --skill himalayaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 16 |
|---|---|
| repo stars | ★ 869 |
| Last updated | June 8, 2026 |
| Repository | beita6969/scienceclaw ↗ |
What it does
Manage email (list, read, write, reply, forward, search, organize) from the terminal via the himalaya IMAP/SMTP CLI.
Who is it for?
Terminal-based email management across multiple accounts using IMAP/SMTP.
Skip if: Providers or workflows without IMAP/SMTP access, since a config file with those credentials is required.
When should I use this skill?
The user wants to list, read, search, reply to, forward, or send email from the terminal.
What you get
- Listed/read emails
- Sent, replied, or forwarded messages
- Downloaded attachments
By the numbers
- 4 supported backends (IMAP, SMTP, Notmuch, Sendmail)
- 2 bundled reference docs (configuration.md, message-composition.md)
Files
Himalaya Email CLI
Himalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.
References
references/configuration.md(config file setup + IMAP/SMTP authentication)references/message-composition.md(MML syntax for composing emails)
Prerequisites
1. Himalaya CLI installed (himalaya --version to verify) 2. A configuration file at ~/.config/himalaya/config.toml 3. IMAP/SMTP credentials configured (password stored securely)
Configuration Setup
Run the interactive wizard to set up an account:
himalaya account configureOr create ~/.config/himalaya/config.toml manually:
[accounts.personal]
email = "you@example.com"
display-name = "Your Name"
default = true
backend.type = "imap"
backend.host = "imap.example.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "you@example.com"
backend.auth.type = "password"
backend.auth.cmd = "pass show email/imap" # or use keyring
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 = "you@example.com"
message.send.backend.auth.type = "password"
message.send.backend.auth.cmd = "pass show email/smtp"Common Operations
List Folders
himalaya folder listList Emails
List emails in INBOX (default):
himalaya envelope listList emails in a specific folder:
himalaya envelope list --folder "Sent"List with pagination:
himalaya envelope list --page 1 --page-size 20Search Emails
himalaya envelope list from john@example.com subject meetingRead an Email
Read email by ID (shows plain text):
himalaya message read 42Export raw MIME:
himalaya message export 42 --fullReply to an Email
Interactive reply (opens $EDITOR):
himalaya message reply 42Reply-all:
himalaya message reply 42 --allForward an Email
himalaya message forward 42Write a New Email
Interactive compose (opens $EDITOR):
himalaya message writeSend directly using template:
cat << 'EOF' | himalaya template send
From: you@example.com
To: recipient@example.com
Subject: Test Message
Hello from Himalaya!
EOFOr with headers flag:
himalaya message write -H "To:recipient@example.com" -H "Subject:Test" "Message body here"Move/Copy Emails
Move to folder:
himalaya message move 42 "Archive"Copy to folder:
himalaya message copy 42 "Important"Delete an Email
himalaya message delete 42Manage Flags
Add flag:
himalaya flag add 42 --flag seenRemove flag:
himalaya flag remove 42 --flag seenMultiple Accounts
List accounts:
himalaya account listUse a specific account:
himalaya --account work envelope listAttachments
Save attachments from a message:
himalaya attachment download 42Save to specific directory:
himalaya attachment download 42 --dir ~/DownloadsOutput Formats
Most commands support --output for structured output:
himalaya envelope list --output json
himalaya envelope list --output plainDebugging
Enable debug logging:
RUST_LOG=debug himalaya envelope listFull trace with backtrace:
RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope listTips
- Use
himalaya --helporhimalaya <command> --helpfor detailed usage. - Message IDs are relative to the current folder; re-list after folder changes.
- For composing rich emails with attachments, use MML syntax (see
references/message-composition.md). - Store passwords securely using
pass, system keyring, or a command that outputs the password.
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 6 installs. They canonicalize to this original listing.
- firecrawl - 6 installs
FAQ
What backends does himalaya support?
The docs state it manages emails using IMAP, SMTP, Notmuch, or Sendmail backends.
What is required before using it?
The himalaya CLI installed, a config file at ~/.config/himalaya/config.toml, and IMAP/SMTP credentials stored securely.