Directory SKILL
SKILLbundledHermes Bundled Skills

Himalaya

Himalaya CLI: IMAP/SMTP email from terminal

EmailIMAPSMTPCLICommunicationBundledHermes skill
Last registry verification2026-08-18v1.1.0community
Plain meaning

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.

Use it when

Use it when your goal in communication and scheduling is clear and you can limit it to the data and actions it actually needs.

Skip it when

Do not add it merely to experiment when Hermes already has a simpler path, or when you cannot review its source and permissions.

Who is it for?

Best for users who want a repeatable way of working inside Hermes.

Safe first test

Use a test account or draft-only workflow and confirm actual sending requires explicit approval.

Original publisher description

Himalaya CLI: IMAP/SMTP email from terminal

Data source

This entry was indexed from Hermes Bundled Skills. Our explanation interprets the type and domain without inventing a capability not present upstream.

!
Security review

The source is official or editorially reviewed, but you still need to review permissions and version compatibility.

Safe setup path

Inspect, install, then test.

  1. 01
    Open the source

    Match the publisher, license, and description to your need. Check the real update history.

  2. 02
    Review permissions and secrets

    Never paste a secret value into this site. Use environment-variable names and grant the smallest scope.

  3. 03
    Copy setup only after review

    The controls below copy text. They do not execute commands on your device.

  4. 04
    Test with a non-sensitive task

    Inspect the visible tools, then exclude write or delete tools you do not need.

Setup method

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
The full skill definition

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.

SourceBundled (installed by default)
Pathskills/email/himalaya
Version1.1.0
Authorcommunity
LicenseMIT
Platformslinux, macos, windows
TagsEmail, 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.

  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)

Installation

Shell8 lines
# 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 --locked

Configuration Setup

Ordered, practical steps. Run one and confirm it worked before moving on.

Run the interactive wizard to set up an account:

Shell1 line
himalaya account configure

Or create ~/.config/himalaya/config.toml manually:

TOML29 lines
[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 (singular alias). 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, and himalaya message send exits 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 use folder.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 $EDITOR mode works with pty=true + background + process tool, but requires knowing the editor and its commands
  • Use --output json for structured output that's easier to parse programmatically
  • The himalaya account configure wizard 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

Shell1 line
himalaya folder list

List Emails

List emails in INBOX (default):

Shell1 line
himalaya envelope list

List emails in a specific folder:

Shell1 line
himalaya envelope list --folder "Sent"

List with pagination:

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

Search Emails

Shell1 line
himalaya envelope list from john@example.com subject meeting

Read an Email

Read email by ID (shows plain text):

Shell1 line
himalaya message read 42

Export raw MIME:

Shell1 line
himalaya message export 42 --full

Reply to an Email

To reply non-interactively from Hermes, read the original message, compose a reply, and pipe it:

Shell2 lines
# Get the reply template, edit it, and send
himalaya template reply 42 | sed 's/^$/\nYour reply text here\n/' | himalaya template send

Or build the reply manually:

Shell8 lines
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.
EOF

Reply-all (interactive — needs $EDITOR, use template approach above instead):

Shell1 line
himalaya message reply 42 --all

Forward an Email

Shell2 lines
# Get forward template and pipe with modifications
himalaya template forward 42 | sed 's/^To:.*/To: newrecipient@example.com/' | himalaya template send

Write a New Email

Non-interactive (use this from Hermes) — pipe the message via stdin:

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

Hello from Himalaya!
EOF

Or with headers flag:

Shell1 line
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):

Shell1 line
himalaya message move "Archive" 42

Copy to folder (target folder comes first, then the message ID):

Shell1 line
himalaya message copy "Important" 42

Delete an Email

Shell1 line
himalaya message delete 42

Manage Flags

Add flag:

Shell1 line
himalaya flag add 42 --flag seen

Remove flag:

Shell1 line
himalaya flag remove 42 --flag seen

Multiple Accounts

Explains the idea itself. Read it slowly; the later sections build on it.

List accounts:

Shell1 line
himalaya account list

Use a specific account:

Shell1 line
himalaya --account work envelope list

Attachments

Explains the idea itself. Read it slowly; the later sections build on it.

Save attachments from a message:

Shell1 line
himalaya attachment download 42

Save to specific directory:

Shell1 line
himalaya attachment download 42 --downloads-dir ~/Downloads

Output Formats

Explains the idea itself. Read it slowly; the later sections build on it.

Most commands support --output for structured output:

Shell2 lines
himalaya envelope list --output json
himalaya envelope list --output plain

Debugging

A troubleshooting section. Find the symptom that matches yours rather than reading it end to end.

Enable debug logging:

Shell1 line
RUST_LOG=debug himalaya envelope list

Full trace with backtrace:

Shell1 line
RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list

Tips

Explains the idea itself. Read it slowly; the later sections build on it.

  • 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.