Himalaya

CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).

MIT-0 · Free to use, modify, and redistribute. No attribution required.
50 · 28.4k · 1.1k current installs · 1.1k all-time installs
byAndré Lamelas@lamelas
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (CLI email client) matches the instructions: all commands are himalaya CLI invocations, configuration references (~/.config/himalaya/config.toml), and message composition with MML. The metadata's brew install entry is proportional to installing a CLI tool.
Instruction Scope
SKILL.md instructs the agent to run himalaya commands and to read/use the user's config file (~/.config/himalaya/config.toml). It also documents mechanisms for retrieving passwords via commands (backend.auth.cmd) and using local file paths for attachments. These are expected for an email client but are noteworthy because they mean the CLI (when invoked) may read local files and execute configured retrieval commands.
Install Mechanism
There is no aggressive install script in the registry; metadata suggests a brew formula (himalaya) which is a standard package distribution method. No downloads from arbitrary URLs or extracted archives are present in the skill bundle.
Credentials
The skill declares no required environment variables or credentials. However, the configuration examples show storing credentials in the config file (including raw passwords) or fetching them via commands like 'pass show ...' or keyring. Those are normal for an email client but mean the running CLI will access secrets supplied in the config or returned by configured commands—so credential access is proportional but sensitive.
Persistence & Privilege
always is false and the skill does not request persistent privileges or modify other skills/system-wide settings. Autonomous invocation is allowed by default (platform behavior) but not combined here with other red flags.
Assessment
This skill is an instruction-only helper for the Himalaya CLI and appears internally consistent. Before installing/using it: 1) Verify you trust the upstream Himalaya project and the brew formula source (homepage points to the GitHub repo). 2) Do not put raw passwords in ~/.config/himalaya/config.toml; prefer a system keyring or a password manager command (e.g., pass) and ensure any command you configure to emit passwords is trusted. 3) Be aware that composing messages with attachments or MML may cause the CLI to read arbitrary local file paths you specify—avoid allowing attachments that reference sensitive files. 4) Check file permissions on your config (it will contain credentials or commands to retrieve them). 5) If you want tighter control, run the CLI manually rather than granting an autonomous agent unrestricted ability to invoke it.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk972c3cy05pgq2pw4017bykcc57ywcwr

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

📧 Clawdis
Binshimalaya

Install

Install Himalaya (brew)
Bins: himalaya
brew install himalaya

SKILL.md

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 configure

Or 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 list

List Emails

List emails in INBOX (default):

himalaya envelope list

List emails in a specific folder:

himalaya envelope list --folder "Sent"

List with pagination:

himalaya envelope list --page 1 --page-size 20

Search Emails

himalaya envelope list from john@example.com subject meeting

Read an Email

Read email by ID (shows plain text):

himalaya message read 42

Export raw MIME:

himalaya message export 42 --full

Reply to an Email

Interactive reply (opens $EDITOR):

himalaya message reply 42

Reply-all:

himalaya message reply 42 --all

Forward an Email

himalaya message forward 42

Write a New Email

Interactive compose (opens $EDITOR):

himalaya message write

Send directly using template:

cat << 'EOF' | himalaya template send
From: you@example.com
To: recipient@example.com
Subject: Test Message

Hello from Himalaya!
EOF

Or 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 42

Manage Flags

Add flag:

himalaya flag add 42 --flag seen

Remove flag:

himalaya flag remove 42 --flag seen

Multiple Accounts

List accounts:

himalaya account list

Use a specific account:

himalaya --account work envelope list

Attachments

Save attachments from a message:

himalaya attachment download 42

Save to specific directory:

himalaya attachment download 42 --dir ~/Downloads

Output Formats

Most commands support --output for structured output:

himalaya envelope list --output json
himalaya envelope list --output plain

Debugging

Enable debug logging:

RUST_LOG=debug himalaya envelope list

Full trace with backtrace:

RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list

Tips

  • Use himalaya --help or himalaya <command> --help for 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.

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…