mcpField
H
himalaya

himalaya

github.com/nousresearch生産性258.5k396 回インストール今日更新
リポジトリ

himalaya について

himalaya は、外部の Himalaya CLI を使って IMAP、SMTP、Notmuch、Sendmail 経由でメールを管理する、エージェントやスクリプト向けのターミナルメールクライアントスキルです。

主な機能

  1. 01メールの一覧表示・検索・閲覧
  2. 02メールの作成・返信・転送
  3. 03メールの移動・コピー・削除とフラグ管理
  4. 04複数アカウントとフォルダーの管理
  5. 05添付ファイルのダウンロードと構造化出力

活用シーン

  1. 01送信者や件名でメールを検索
  2. 02ターミナルツールから返信を作成して送信
  3. 03メールをアーカイブまたは削除し、フラグを更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nousresearch/hermes-agent --skill himalaya

インストール後、Claude Code で/himalayaを入力して読み込まれたか確認します。

同梱ファイルreferences/configuration.mdreferences/message-composition.md

詳細

Himalaya メール CLI

Himalaya は、IMAP、SMTP、Notmuch、または Sendmail バックエンドを使用して、ターミナルからメールを管理できる CLI メールクライアントです。

このスキルは Hermes Email ゲートウェイアダプターとは別のものです。ゲートウェイアダプターを使うと、ユーザーはエージェントにメールを送信でき、Hermes に組み込まれた IMAP/SMTP アダプターが使用されます。一方、このスキルではエージェントがターミナルツールからメールボックスを操作でき、外部の himalaya CLI が必要です。

参考資料

  • references/configuration.md(設定ファイルのセットアップと IMAP/SMTP 認証)
  • references/message-composition.md(メール作成用の MML 構文)

前提条件

  1. Himalaya CLI がインストールされていること(himalaya --version で確認)
  2. ~/.config/himalaya/config.toml に設定ファイルがあること
  3. IMAP/SMTP の認証情報が設定されていること(パスワードは安全に保存)
インストール
# 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

設定のセットアップ

対話型ウィザードを実行してアカウントを設定します。

himalaya account configure

または、~/.config/himalaya/config.toml を手動で作成します。

[accounts.personal]
email = "[email protected]"
display-name = "Your Name"
default = true

backend.type = "imap"
backend.host = "imap.example.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "[email protected]"
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 = "[email protected]"
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"

エイリアス構文に関する注意。 v1.2.0 より前のドキュメントでは、 [accounts.NAME.folder.alias] サブセクション(単数形の alias)を使用していました。 v1.2.0 ではこの形式は警告なしに無視されます。TOML の解析自体は問題なく行われますが、 エイリアスリゾルバーがこの設定を読み取らないため、すべての検索が 正規名にフォールバックします。Gmail では、SMTP 配信が成功した後に 送信済みフォルダーへの保存が失敗し、himalaya message send が 0 以外の終了コードで終了します。 エージェント、スクリプト、ユーザーなど、終了コードを受けて再試行する呼び出し元は SMTP 送信を含む送信処理全体を再実行するため、宛先にメールが重複して届きます。 必ず [accounts.NAME] の直下に folder.aliases.X(複数形の aliases、ドット区切りの キー)を使用してください。

Hermes との連携に関するメモ

  • 読み取り、一覧表示、検索、移動、削除は、すべてターミナルツールから直接実行できます。
  • 作成、返信、転送には、パイプ入力(cat << EOF | himalaya template send)を推奨します。対話型の $EDITOR モードは pty=true、バックグラウンド実行、プロセスツールを組み合わせて使用できますが、使用するエディターとそのコマンドを把握している必要があります。
  • プログラムから解析しやすい構造化出力には、--output json を使用します。
  • himalaya account configure ウィザードには対話型入力が必要です。PTY モードを使用してください:terminal(command="himalaya account configure", pty=true)

よく使う操作

フォルダーの一覧表示
himalaya folder list
メールの一覧表示

INBOX のメールを一覧表示します(デフォルト)。

himalaya envelope list

特定のフォルダーのメールを一覧表示します。

himalaya envelope list --folder "Sent"

ページネーションを使用して一覧表示します。

himalaya envelope list --page 1 --page-size 20
メールの検索
himalaya envelope list from [email protected] subject meeting
メールを読む

ID を指定してメールを読み取ります(プレーンテキストを表示)。

himalaya message read 42

生の MIME をエクスポートします。

himalaya message export 42 --full
メールに返信する

Hermes から対話型操作なしで返信するには、元のメッセージを読み取り、返信を作成してパイプで渡します。

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

または、返信を手動で作成します。

cat << 'EOF' | himalaya template send
From: [email protected]
To: [email protected]
Subject: Re: Original Subject
In-Reply-To: <original-message-id>

Your reply here.
EOF

全員に返信(対話型。$EDITOR が必要です。代わりに上記のテンプレート方式を使用してください)。

himalaya message reply 42 --all
メールを転送する
# Get forward template and pipe with modifications
himalaya template forward 42 | sed 's/^To:.*/To: [email protected]/' | himalaya template send
新しいメールを作成する

対話型操作なし(Hermes からはこちらを使用) — 標準入力からメッセージをパイプで渡します。

cat << 'EOF' | himalaya template send
From: [email protected]
To: [email protected]
Subject: Test Message

Hello from Himalaya!
EOF

または、ヘッダーフラグを指定します。

himalaya message write -H "To:[email protected]" -H "Subject:Test" "Message body here"

注:himalaya message write をパイプ入力なしで実行すると、$EDITOR が開きます。これは pty=true とバックグラウンドモードを組み合わせて使用できますが、パイプ入力のほうが簡単で信頼性も高いです。

メールの移動/コピー

フォルダーに移動します(先に移動先のフォルダーを指定し、次にメッセージ ID を指定します)。

himalaya message move "Archive" 42

フォルダーにコピーします(先にコピー先のフォルダーを指定し、次にメッセージ ID を指定します)。

himalaya message copy "Important" 42
メールを削除する
himalaya message delete 42
フラグを管理する

フラグを追加します。

himalaya flag add 42 --flag seen

フラグを削除します。

himalaya flag remove 42 --flag seen

複数のアカウント

アカウントを一覧表示します。

himalaya account list

特定のアカウントを使用します。

himalaya --account work envelope list

添付ファイル

メッセージから添付ファイルを保存します。

himalaya attachment download 42

特定のディレクトリに保存します。

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

出力形式

ほとんどのコマンドは、構造化出力用の --output に対応しています。

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

デバッグ

デバッグログを有効にします。

RUST_LOG=debug himalaya envelope list

バックトレース付きの完全なトレースを出力します。

RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list

ヒント

  • 詳しい使い方は、himalaya --help または himalaya <command> --help を使用してください。
  • メッセージ ID は現在のフォルダーを基準とします。フォルダーを変更した後は、一覧を再表示してください。
  • 添付ファイル付きのリッチメールを作成する場合は、MML 構文を使用してください(references/message-composition.md を参照)。
  • パスワードは pass、システムのキーリング、またはパスワードを出力するコマンドを使用して安全に保存してください。

コメント