Use it when your goal in communication and scheduling is clear and you can limit it to the data and actions it actually needs.
Himalaya
Himalaya CLI: IMAP/SMTP email from terminal
What does it add to Hermes?
Himalaya CLI: IMAP/SMTP email from terminal
Himalaya is a skill related to communication and scheduling. It connects the agent to a communication channel or calendar. The important distinction is whether it only reads or can also send and modify.
This plain-language explanation is based on the publisher description. The original text remains visible for verification.
Do not add it merely to experiment when Hermes already has a simpler path, or when you cannot review its source and permissions.
Best for users who want a repeatable way of working inside Hermes.
Use a test account or draft-only workflow and confirm actual sending requires explicit approval.
Himalaya CLI: IMAP/SMTP email from terminal
This entry was indexed from Hermes Bundled Skills. Our explanation interprets the type and domain without inventing a capability not present upstream.
The source is official or editorially reviewed, but you still need to review permissions and version compatibility.
Inspect, install, then test.
- 01Open the source
Match the publisher, license, and description to your need. Check the real update history.
- 02Review permissions and secrets
Never paste a secret value into this site. Use environment-variable names and grant the smallest scope.
- 03Copy setup only after review
The controls below copy text. They do not execute commands on your device.
- 04Test with a non-sensitive task
Inspect the visible tools, then exclude write or delete tools you do not need.
Already installed with Hermes.
This skill ships with Hermes and loads when the agent decides it is relevant. There is nothing to install; read the definition below so you know what it will do.
Open the official page ↗Exactly what Hermes loads when this skill runs.
Reproduced from the official documentation. Read it before enabling the skill: this text becomes the agent's instructions.
Himalaya CLI: IMAP/SMTP email from terminal.
Skill metadata
A lookup table. Do not read it all; find the row that applies to you.
| Source | Bundled (installed by default) |
| Path | skills/email/himalaya |
| Version | 1.1.0 |
| Author | community |
| License | MIT |
| Platforms | linux, macos, windows |
| Tags | Email, IMAP, SMTP, CLI, Communication |
Reference: full SKILL.md
Explains the idea itself. Read it slowly; the later sections build on it.
Himalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.
This skill is separate from the Hermes Email gateway adapter. The gateway
adapter lets people email the agent and uses Hermes' built-in IMAP/SMTP
adapter; this skill lets the agent operate a mailbox from terminal tools and
requires the external himalaya CLI.
References
Explains the idea itself. Read it slowly; the later sections build on it.
references/configuration.md(config file setup + IMAP/SMTP authentication)references/message-composition.md(MML syntax for composing emails)
Prerequisites
Explains the idea itself. Read it slowly; the later sections build on it.
- Himalaya CLI installed (
himalaya --versionto verify) - A configuration file at
~/.config/himalaya/config.toml - IMAP/SMTP credentials configured (password stored securely)
Installation
# Pre-built binary (Linux/macOS — recommended)
curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh
# macOS via Homebrew
brew install himalaya
# Or via cargo (any platform with Rust)
cargo install himalaya --lockedConfiguration Setup
Ordered, practical steps. Run one and confirm it worked before moving on.
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"
# Folder aliases (himalaya v1.2.0+ syntax). Required whenever the
# server's folder names don't match himalaya's canonical names
# (inbox/sent/drafts/trash). Gmail is the common case — see
# `references/configuration.md` for the `[Gmail]/Sent Mail` mapping.
folder.aliases.inbox = "INBOX"
folder.aliases.sent = "Sent"
folder.aliases.drafts = "Drafts"
folder.aliases.trash = "Trash"Heads up on the alias syntax. Pre-v1.2.0 docs used a[accounts.NAME.folder.alias]sub-section (singularalias). v1.2.0 silently ignores that form — TOML parses fine, but the alias resolver never reads it, so every lookup falls through to the canonical name. On Gmail this means save-to-Sent fails after SMTP delivery succeeds, andhimalaya message sendexits non-zero. Any caller (agent, script, user) that retries on that exit code will re-run the entire send — including SMTP — producing duplicate emails to recipients. Always usefolder.aliases.X(plural, dotted keys, directly under[accounts.NAME]).
Hermes Integration Notes
Explains the idea itself. Read it slowly; the later sections build on it.
- Reading, listing, searching, moving, deleting all work directly through the terminal tool
- Composing/replying/forwarding — piped input (
cat << EOF | himalaya template send) is recommended for reliability. Interactive$EDITORmode works withpty=true+ background + process tool, but requires knowing the editor and its commands - Use
--output jsonfor structured output that's easier to parse programmatically - The
himalaya account configurewizard requires interactive input — use PTY mode:terminal(command="himalaya account configure", pty=true)
Common Operations
Explains the idea itself. Read it slowly; the later sections build on it.
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
To reply non-interactively from Hermes, read the original message, compose a reply, and pipe it:
# Get the reply template, edit it, and send
himalaya template reply 42 | sed 's/^$/\nYour reply text here\n/' | himalaya template sendOr build the reply manually:
cat << 'EOF' | himalaya template send
From: you@example.com
To: sender@example.com
Subject: Re: Original Subject
In-Reply-To: <original-message-id>
Your reply here.
EOFReply-all (interactive — needs $EDITOR, use template approach above instead):
himalaya message reply 42 --allForward an Email
# Get forward template and pipe with modifications
himalaya template forward 42 | sed 's/^To:.*/To: newrecipient@example.com/' | himalaya template sendWrite a New Email
Non-interactive (use this from Hermes) — pipe the message via stdin:
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"Note: himalaya message write without piped input opens $EDITOR. This works with pty=true + background mode, but piping is simpler and more reliable.
Move/Copy Emails
Move to folder (target folder comes first, then the message ID):
himalaya message move "Archive" 42Copy to folder (target folder comes first, then the message ID):
himalaya message copy "Important" 42Delete an Email
himalaya message delete 42Manage Flags
Add flag:
himalaya flag add 42 --flag seenRemove flag:
himalaya flag remove 42 --flag seenMultiple Accounts
Explains the idea itself. Read it slowly; the later sections build on it.
List accounts:
himalaya account listUse a specific account:
himalaya --account work envelope listAttachments
Explains the idea itself. Read it slowly; the later sections build on it.
Save attachments from a message:
himalaya attachment download 42Save to specific directory:
himalaya attachment download 42 --downloads-dir ~/DownloadsOutput Formats
Explains the idea itself. Read it slowly; the later sections build on it.
Most commands support --output for structured output:
himalaya envelope list --output json
himalaya envelope list --output plainDebugging
A troubleshooting section. Find the symptom that matches yours rather than reading it end to end.
Enable debug logging:
RUST_LOG=debug himalaya envelope listFull trace with backtrace:
RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope listTips
Explains the idea itself. Read it slowly; the later sections build on it.
- 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.