
Himalaya
- 1 installs
- 5 repo stars
- Updated August 3, 2026
- ahkedia/lyra-ai
This is a copy of himalaya by letta-ai - installs and ranking accrue to the original listing.
himalaya is a Claude Code skill for the himalaya CLI email client that lists, reads, writes, replies to, and organizes emails from the terminal over IMAP/SMTP.
About
himalaya is a skill for the himalaya CLI email client, which manages email from the terminal over IMAP, SMTP, Notmuch, or Sendmail. A developer uses it to list, read, write, reply to, forward, search, and organize emails without leaving the terminal. It covers configuring accounts in config.toml, using multiple accounts, MML message composition, attachments, and structured JSON output.
- Wraps the himalaya CLI to manage email via IMAP/SMTP from the terminal
- Covers list, read, write, reply, forward, search, and folder organization
- Supports multiple accounts and MML message composition with attachments
Himalaya by the numbers
- 1 all-time installs (skills.sh)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
himalaya capabilities & compatibility
Free CLI; requires your own IMAP/SMTP email account credentials.
- Capabilities
- email management · email composition · email search
- Works with
- gmail · outlook
- Use cases
- Pricing
- Free
What himalaya says it does
Himalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal.
npx skills add https://github.com/ahkedia/lyra-ai --skill himalayaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 5 |
| Last updated | August 3, 2026 |
| Repository | ahkedia/lyra-ai ↗ |
What it does
Manage email from the terminal with the himalaya CLI over IMAP/SMTP, including compose and search.
Who is it for?
Reading, sending, searching, and organizing email from the terminal via the himalaya CLI.
Skip if: GUI email workflows or providers not reachable via IMAP, SMTP, Notmuch, or Sendmail.
When should I use this skill?
Managing emails from the terminal: list, read, write, reply, forward, search, or organize.
What you get
Emails listed, read, composed, searched, and organized from the terminal via himalaya.
- terminal email operations: list, read, compose, reply, search, organize
By the numbers
- 4 backends: IMAP, SMTP, Notmuch, Sendmail
- config at ~/.config/himalaya/config.toml
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.
{
"ownerId": "kn71t8cr12n54xdhz51fncgg0h7yr8dt",
"slug": "himalaya",
"version": "1.0.0",
"publishedAt": 1767954271328
}{
"version": 1,
"registry": "https://clawhub.ai",
"slug": "himalaya",
"installedVersion": "1.0.0",
"installedAt": 1772481635447
}
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
FAQ
What backends does himalaya support?
It supports IMAP, SMTP, Notmuch, and Sendmail backends for managing email from the terminal.
How are credentials configured?
Via ~/.config/himalaya/config.toml with passwords stored securely using pass, a system keyring, or a command that outputs the password.