
Himalaya
- 6 installs
- 4 repo stars
- Updated March 24, 2026
- firecrawl/openclaw
This is a copy of himalaya by beita6969 - installs and ranking accrue to the original listing.
Helps with ai & agent building tasks.
About
himalaya is a Claude Code skill for ai & agent building. It helps you ship faster with AI-assisted development.
- himalaya
- AI & Agent Building
- AI-coding skill
Himalaya by the numbers
- 6 all-time installs (skills.sh)
- Data as of Jul 27, 2026 (Skillselion catalog sync)
npx skills add https://github.com/firecrawl/openclaw --skill himalayaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6 |
|---|---|
| repo stars | ★ 4 |
| Last updated | March 24, 2026 |
| Repository | firecrawl/openclaw ↗ |
What it does
Helps with ai & agent building tasks.
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.