Hermes Agent Wiki 非公式・日本語wiki

CLI コマンド早見表

目次

このページでは、シェルから打つターミナルのコマンドをまとめています。

チャットの中で使うスラッシュコマンドは スラッシュコマンド早見表 を参照してください。

全体の入口

hermes [global-options] <command> [subcommand/options]

全体に効くオプション

オプション 説明
--version-V 版を表示して終了します。
--profile <name>-p <name> この実行で使う Hermes のプロファイルを選びます。hermes profile use で決めた既定より優先されます。
--resume <session>-r <session> 以前のセッションを ID か名前で再開します。latest と書くといちばん新しいセッションを再開します(ワークスペース単位で、-c と同じ探し方です)。
--continue [name]-c [name] いちばん新しいセッション、または名前が一致するいちばん新しいセッションを再開します。
--in <dir> 起動や再開の前に <dir> へ移動します。--resume latest-c の探索をそのディレクトリのワークスペースに絞り、セッションもそこに留めます(記録された作業ディレクトリへ戻しません)。
--worktree-w 複数のエージェントを並行して動かすために、独立した git のワークツリーで始めます。
--yolo 危険なコマンドの承認を省きます。
--pass-session-id エージェントのシステム プロンプトにセッション ID を含めます。
--ignore-user-config ~/.hermes/config.yaml を読まず、組み込みの既定値を使います。.env の認証情報は読み込まれます。
--ignore-rules AGENTS.mdSOUL.md.cursorrules、記憶、あらかじめ読み込むスキルの自動注入をやめます。
--tui 従来型の CLI ではなく TUI を起動します。HERMES_TUI=1 と同じです。つねに display.interface より優先されます。
--cli 従来型の prompt_toolkit の対話画面を強制します。display.interface: tui をその 1 回だけ打ち消したいときに使います。
--dev --tui と一緒に使うと、できあがった束ではなく TypeScript のソースを tsx で直接動かします(TUI に手を入れる人向け)。

主なコマンド

コマンド 用途
hermes chat エージェントと対話する、または 1 回だけやり取りします。
hermes model 既定のプロバイダーとモデルを対話的に選びます。
hermes moa モデル選択画面から選べる、名前を付けた Mixture of Agents のプリセットを設定します。
hermes fallback 主なモデルがエラーになったときに試す、代替のプロバイダーを管理します。
hermes gateway メッセージングのゲートウェイのサービスを動かす・管理します。
hermes proxy OAuth のプロバイダーの認証情報を付ける、手元の OpenAI 互換プロキシです。サブスクリプション プロキシ を参照してください。
hermes egress 離れた場所のターミナルのサンドボックス向けに、送信時に認証情報を差し込むファイアウォール(iron-proxy)です。既定では無効です。送信プロキシ を参照してください。
hermes lsp Language Server Protocol の連携を管理します(write_file と patch のための意味的な診断)。
hermes setup 設定の全体、または一部を対話的に用意するウィザードです。
hermes whatsapp WhatsApp の橋渡しを設定し、端末を紐づけます。
hermes whatsapp-cloud Meta 公式の WhatsApp Business Cloud API のアダプターを設定します(ビジネス アカウントと公開の webhook が必要です)。hermes whatsapp(Baileys による個人アカウントの橋渡し)とは別ものです。
hermes slack Slack 向けの補助です(現時点では、すべてのコマンドをネイティブのスラッシュとして登録するアプリのマニフェストを生成します)。
hermes auth 認証情報を管理します(追加、一覧、削除、初期化、状態、ログアウト)。Codex / Nous / Anthropic の OAuth のやり取りも扱います。
hermes login / logout 非推奨 — 代わりに hermes auth を使ってください。
hermes send 設定済みのメッセージング プラットフォーム(Telegram、Discord、Slack、Signal、SMS、…)へ 1 回だけメッセージを送ります。シェルのスクリプト、cron の作業、CI のフック、監視の常駐プロセスから便利に使えます。エージェントも LLM も動きません。
hermes peer ほかの端末にある Hermes のゲートウェイを相手として登録し、そのエージェントの標準の Bot Chat に直接話しかけます(hermes peer dm <peer>[/<agent>] "…")。端末をまたぐボット同士のやり取りを支える経路です。
hermes secrets 外部の秘密の保管先(現時点では Bitwarden Secrets Manager)を管理し、~/.hermes/.env の代わりにプロセスの起動時に API キーを取ってきます。
hermes migrate config.yaml を調べ、必要なら書き換えて、廃止されたモデルや非推奨の設定への参照を置き換えます(たとえば migrate xai)。
hermes status エージェント、認証、プラットフォームの状態を表示します。
hermes cron cron のスケジューラーを確認し、実行させます。
hermes kanban 複数プロファイルの共同作業ボード(作業、依存関係、ディスパッチャー)です。
hermes project 名前を付けた、複数フォルダーにまたがるワークスペース(プロジェクト)を管理します。デスクトップでのセッションのまとまりの土台になり、かんばんのボードと結び付けると、作業に決まった形のワークツリーとブランチが割り当てられます。状態はプロファイルごとに持ちます。
hermes webhook 出来事をきっかけに動かすための、動的な webhook の登録を管理します。
hermes hooks config.yaml に書いたシェル スクリプトのフックを確認、承認、削除します。
hermes doctor 設定や依存関係の問題を調べます。
hermes security audit 仮想環境、プラグインの依存、固定した MCP サーバーについて、供給網の点検(OSV.dev)をその場で行います。
hermes approvals 承認まわりの道具です。承認の履歴を掘って、許可リストの案を作ります。
hermes dump サポートや調査のために、貼り付けられる形で設定の要約を出します。
hermes prompt-size システム プロンプトとツールのスキーマ(スキルの索引、記憶、利用者像)のバイト数の内訳を表示します。ネットにつながずに動きます。
hermes debug 調査用の道具です。ログとシステム情報をサポート向けに送ります。
hermes backup Hermes のホーム ディレクトリを zip ファイルに保存します。
hermes checkpoints ~/.hermes/checkpoints//rollback が使う裏の保管場所)を確認・整理・消去します。引数なしで実行すると全体の状態が出ます。
hermes import zip ファイルから Hermes のバックアップを復元します。
hermes logs エージェント、ゲートウェイ、エラーのログを見る・追う・絞り込みます。
hermes config 設定ファイルを表示、編集、移行、問い合わせします。
hermes skin 表示のスキンを一覧、切り替え、調整します。
hermes console 安全な Hermes のコマンド コンソールを開きます。
hermes pairing メッセージングの紐づけコードを承認・取り消しします。
hermes skills スキルを閲覧、導入、公開、点検、設定します。
hermes bundles 複数のスキルを 1 つの /<name> スラッシュコマンドにまとめます。スキル束 を参照してください。
hermes curator スキルをバックグラウンドで手入れします(状態、実行、一時停止、固定)。キュレーター を参照してください。
hermes journey(別名 learningmemory-graph 覚えたスキルと記憶の移り変わりを時系列で表示します。
hermes memory 外部の記憶の提供元を設定します。提供元ごとのサブコマンド(たとえば hermes honcho)は、その提供元が有効なときに自動で登録されます。
hermes acp エディター連携のために、Hermes を ACP のサーバーとして動かします。
hermes mcp MCP サーバーの設定を管理し、Hermes を MCP サーバーとして動かします。
hermes plugins Hermes Agent のプラグインを管理します(導入、有効化、無効化、削除)。
hermes portal Nous Portal の状態、契約へのリンク、Tool Gateway の経路を表示します。Tool Gateway を参照してください。
hermes tools プラットフォームごとに使うツールを設定します。
hermes computer-use Computer Use(cua-driver)のバックエンドを導入・確認します(macOS / Windows / Linux)。
hermes pets CLI、TUI、デスクトップ アプリに出てくる petdex のペットを閲覧、導入、選択します。サブコマンドは listinstallselectshowoffscaleremovedoctor です。
hermes sessions セッションを閲覧、書き出し、整理、改名、削除します。
hermes insights トークン、費用、活動の統計を表示します。
hermes claw OpenClaw からの移行を助けます。
hermes import-agent Claude Code(~/.claude)や Codex CLI(~/.codex)の設定を取り込みます。
hermes dashboard 設定、API キー、セッションを管理するウェブ ダッシュボードを起動します。
hermes serve Hermes のバックエンド サーバーを起動します(画面なし。デスクトップ アプリと離れた場所のバックエンドを支えます)。
hermes desktop(別名 gui ネイティブの Electron のデスクトップ アプリを組み立てて起動します。
hermes profile プロファイル(互いに独立した複数の Hermes)を管理します。
hermes completion シェルの補完スクリプトを出力します(bash / zsh / fish)。
hermes --version 版の情報を表示します。
hermes update 最新のコードを取得して依存関係を入れ直します。--check は導入せずに下見をし、--backup は取得の前に HERMES_HOME のスナップショットを取ります。
hermes uninstall Hermes をシステムから取り除きます。

hermes chat

hermes chat [options]

よく使うオプション:

オプション 説明
-q--query "..." セッションの最初にプロンプトを渡します。本物の端末では、その文章がそのままふつうの対話セッションの最初のターンとして送られ(スラッシュコマンドや ! によるシェルの呼び出しとしては解釈されません)、セッションはそのまま続きます。OS のランチャーやデスクトップ連携に向いています。--oneshot-Q、あるいは端末でない入出力のときは、答えて終了します。
--query-file PATH 質問をファイルから読みます(- は標準入力)。シェルの解釈がまったく入らないので、引用符や $(...)、バッククォートもそのまま届きます。プログラムから渡す本文や、信頼できない本文にはこちらを使ってください(ボット モードの仲間同士のやり取りもこれを使います)。-q とは同時に使えません。
--oneshot -q--query-file と一緒に使うと、対話セッションを始めずに答えて終了します(0.21 より前の 1 回だけの動きです)。端末でない入出力のときと -Q のときは自動でこうなります。
-m--model <model> この実行のモデルを上書きします。
-t--toolsets <csv> カンマ区切りで指定したツールセットを有効にします。
--provider <provider> プロバイダーを指定します。autoopenrouternousopenai-codexcopilot-acpcopilotanthropicgeminihuggingfacenovita(別名 novita-ainovitaai)、openai-apizaikimi-codingkimi-coding-cnminimaxminimax-cnminimax-oauthkilocodexiaomiarceegmiupstage(別名 solar)、alibabaalibaba-coding-plan(別名 alibaba_coding)、deepseeknvidiaollama-cloudxai(別名 grok)、xai-oauth(別名 grok-oauth)、qwen-oauthbedrockopencode-zenopencode-goopencode-free(別名 freeopencode_free。キー不要)、commandcodecommandcode-anthropicai-gatewayazure-foundrylmstudiostepfuntencent-tokenhub(別名 tencenttokenhub)、router(別名 ramp-routerramp)、nebius-token-factory(別名 nebiusnebius-tftokenfactory)、tencent-tokenplan(別名 tokenplantencent-lkeap)。
-s--skills <name> このセッションであらかじめ読み込むスキルを指定します(繰り返しでも、カンマ区切りでも書けます)。
-v--verbose 詳しく表示します。
-Q--quiet プログラム向けのモード。見出し、待機表示、ツールの下見を出しません。
--image <path> 1 回の質問に、手元の画像を添えます。
--resume <session> / --continue [name] chat から直接セッションを再開します。
--worktree この実行のために、独立した git のワークツリーを作ります。
--checkpoints ファイルを壊す変更の前に、ファイルのチェックポイントを取ります。
--yolo 承認の確認を省きます。
--pass-session-id セッション ID をシステム プロンプトに渡します。
--ignore-user-config ~/.hermes/config.yaml を読まず、組み込みの既定値を使います。.env の認証情報は読み込まれます。独立した CI の実行、再現性のある不具合報告、他社との連携に向いています。
--ignore-rules AGENTS.mdSOUL.md.cursorrules、残っている記憶、あらかじめ読み込むスキルの自動注入をやめます。--ignore-user-config と組み合わせると、完全に独立した実行になります。
--safe-mode 不具合を調べるためのモード。ユーザーの設定、ルールと記憶の注入、プラグイン、シェルのフック、MCP サーバーといったカスタマイズをすべて無効にします(--ignore-user-config--ignore-rules を含みます)。問題が自分の環境のものか Hermes 自体のものかを切り分けるのに使います。
--source <tag> 絞り込み用のセッションの出どころの札(既定: cli)。ユーザーのセッション一覧に出したくない他社との連携には tool を使ってください。
--max-turns <N> 会話の 1 ターンでツールを呼ぶ回数の上限(既定は 500、または設定の agent.max_turns)。

例:

hermes
hermes chat -q "Summarize the latest PRs"          # seeds an interactive session
hermes chat --oneshot -q "Summarize the latest PRs"  # answer and exit
hermes chat --provider openrouter --model anthropic/claude-sonnet-4.6
hermes chat --toolsets web,terminal,skills
hermes chat --quiet -q "Return only JSON"
hermes chat --worktree -q "Review this repo and open a PR"
hermes chat --ignore-user-config --ignore-rules -q "Repro without my personal setup"
hermes chat --safe-mode -q "Is this bug mine or Hermes'?"

hermes -z <prompt> — スクリプトからの 1 回きりの実行

プログラムから呼ぶとき(シェルのスクリプト、CI、cron、プロンプトを流し込む親プロセス)、hermes -z がいちばん素直な 1 回きりの入口です。プロンプトを 1 つ渡すと、最後の返答の文章だけが返り、標準出力にも標準エラーにもほかは何も出ません。 見出しも、待機表示も、ツールの下見も、Session: の行もなく、エージェントの最終的な返事だけが素の文字として出ます。

hermes -z "What's the capital of France?"
# → Paris.

# Parent scripts can cleanly capture the response:
answer=$(hermes -z "summarize this" < /path/to/file.txt)

その実行だけの上書き(~/.hermes/config.yaml は変わりません):

オプション 対応する環境変数 用途
-m / --model <model> HERMES_INFERENCE_MODEL この実行のモデルを上書きします
--provider <provider> _(なし)_ この実行のプロバイダーを上書きします
--usage-file <path> _(なし)_ 実行のあとに JSON の利用状況の報告を書き出します(下記参照)
hermes -z "…" --provider openrouter --model openai/gpt-5.5
# or:
HERMES_INFERENCE_MODEL=anthropic/claude-sonnet-4.6 hermes -z "…"

エージェントもツールもスキルも同じで、対話や見た目のための層をすべて剥がしただけです。記録にツールの出力も残したいなら hermes chat --oneshot -q を使ってください。-z は「最終的な答えだけほしい」という用途のためのものです。

--usage-file — パイプライン向けの JSON の利用状況報告

hermes -z "…" --usage-file /path/report.json と書くと、実行のあとに機械が読める利用状況の報告を書き出します。estimated_cost_usdinput_tokens / output_tokens / cache_read_tokens / cache_write_tokens / reasoning_tokens / total_tokensapi_callsmodelprovidersession_idservice_tier、それに completed / failed の印が入ります。実行が失敗したときも書き出されるので、まとめて処理するパイプラインでもつねに費用を把握できます。-z--oneshot の外では何も起きず、報告の書き出しに失敗しても、実行そのものの結果が覆い隠されることはありません。

hermes -z "summarize this repo" --usage-file /tmp/usage.json
jq .estimated_cost_usd /tmp/usage.json

hermes model

対話的にプロバイダーとモデルを選ぶコマンドです。新しいプロバイダーの追加、API キーの設定、OAuth のやり取りはこのコマンドで行います。 動いている Hermes のチャット セッションの中ではなく、ターミナルから実行してください。

hermes model

次のようなときに使います。

  • 新しいプロバイダーを足す(OpenRouter、Anthropic、Copilot、DeepSeek、独自のものなど)
  • OAuth を使うプロバイダーにログインする(Anthropic、Copilot、Codex、Nous Portal)
  • API キーを入力・更新する
  • プロバイダーごとのモデル一覧から選ぶ
  • 独自や自前のエンドポイントを設定する
  • 新しい既定値を設定に保存する

/model スラッシュコマンド(セッションの途中)

セッションを抜けずに、設定済みのモデルを切り替えます。

/model                              # Show current model and available options
/model claude-sonnet-4              # Switch model (auto-detects provider)
/model zai:glm-5                    # Switch provider and model
/model custom:qwen-2.5              # Use model on your custom endpoint
/model custom                       # Auto-detect model from custom endpoint
/model custom:local:qwen-2.5        # Use a named custom provider
/model openrouter:anthropic/claude-sonnet-4  # Switch back to cloud

既定では、/model の変更はいまのセッションだけに効きます。--global を足すと config.yaml に保存されます(model.persist_switch_by_default: true にすれば、すべての切り替えが保存されます)。

/model claude-sonnet-4 --global     # Switch and save as new default

--global で切り替えると、モデルと一緒にプロバイダーとベース URL の変更も config.yaml に保存されます。独自のエンドポイントから離れるときは、古いベース URL がほかのプロバイダーに漏れないように消されます。

hermes gateway

hermes gateway <subcommand>

サブコマンド:

サブコマンド 説明
run ゲートウェイを前面で動かします。WSL、Docker、Termux ではこちらをおすすめします。
start 導入済みの systemd / launchd のバックグラウンドのサービスを起動します。
stop サービス(または前面のプロセス)を止めます。
restart サービスを再起動します。
status サービスの状態を表示します。
list すべてのプロファイルと、それぞれのゲートウェイが動いているかどうかを一覧します(分かる場合は PID も出ます)。複数のプロファイルを並べて動かしていて、まとめて見たいときに便利です。
install systemd(Linux)か launchd(macOS)のバックグラウンドのサービスとして導入します。
uninstall 導入したサービスを取り除きます。
setup メッセージング プラットフォームを対話的に設定します。
migrate-legacy 名前を変える前の導入で残った、古い hermes.service のユニットを取り除きます。プロファイルのユニット(hermes-gateway-<profile>.service)や無関係なサービスには決して触れません。オプションは --dry-run-y/--yes
enroll 実験的な機能です。このゲートウェイをリレーのコネクターに登録し、コネクター経由のプラットフォーム向けにリレーの認証情報を保存します。Hermes リレー を参照してください。

オプション:

オプション 説明
--all start / restart / stop のときに、いま使っている HERMES_HOME だけでなくすべてのプロファイルのゲートウェイを操作します。複数のプロファイルを並べて動かしていて、hermes update のあとにまとめて再起動したいときに便利です。
--no-supervise run のときに、s6-overlay の Docker イメージの中で自動監視をやめ、s6 より前の前面実行の動きにします。ゲートウェイがコンテナーの主プロセスになり、自動再起動はしません。s6 のイメージの外では何も起きません。HERMES_GATEWAY_NO_SUPERVISE=1 と同じです。
--external-supervisor run のときに、外側の仕組みが用意したプロセス管理が前面のゲートウェイを受け持つと宣言します。sudoenv -i などの外側の仕組みが launchd や systemd の環境の印を落としてしまうときに使います。チャットからの再起動や更新は、別プロセスを切り離して立てるのではなく、その管理側へ戻る形で終了します。

--external-supervisor は再起動の取り決めです。チャットからの再起動や、サービスの 再起動を伴う更新は終了コード 75 で終わるので、外側の仕組みの監視役が、その 0 でない終了のあとにゲートウェイを立て直す必要があります。systemd なら Restart=on-failureRestart=always を使い、RestartPreventExitStatus75 を入れないでください。launchd なら、うまくいかなかった終了のあとに立て直すよう KeepAlive を設定します。この取り決めがないと、再起動を頼んでもゲートウェイは 止まったままになります。

hermes gateway enroll--token--connector-url--gateway-id--wake-url を受け付けます。登録用のトークンをコネクターと交換し、返ってきた GATEWAY_RELAY_IDGATEWAY_RELAY_SECRETGATEWAY_RELAY_DELIVERY_KEY、必要なら GATEWAY_RELAY_URL、そして(--wake-url を渡した場合は)GATEWAY_RELAY_WAKE_URL の値を、使っているプロファイルの .env に書きます。

hermes lsp

hermes lsp <subcommand>

Language Server Protocol の連携を管理します。LSP は本物の 言語サーバー(pyright、gopls、rust-analyzer、…)をバックグラウンドで 動かし、その診断結果を write_filepatch のあとの 確認に流し込みます。git のワークスペースを見つけたときだけ働きます。 作業ディレクトリか編集するファイルが git のワークツリーの中に あるときにしか LSP は動きません。

サブコマンド:

サブコマンド 説明
status サービスの状態、設定済みのサーバー、導入の状況を表示します。
list 対応しているサーバーの一覧を表示します。--installed-only を付けると、入っていないものを飛ばします。
install <id> 1 つのサーバーの実行ファイルを先に導入します。
install-all 自動導入の手順が分かっているサーバーをすべて導入します。
restart 動いているクライアントを畳んで、次の編集で立ち上げ直させます。
which <id> 1 つのサーバーについて、実際に使う実行ファイルのパスを表示します。

対応言語や設定のつまみを含めたひととおりの説明は LSP — 意味的な診断 にあります。

hermes setup

hermes setup [model|tts|terminal|gateway|tools|agent] [--non-interactive] [--reset] [--quick] [--reconfigure] [--portal]

いちばん手軽な道: hermes setup --portal — Nous Portal に OAuth でログインし、Tool Gateway を一度に有効にします。

初回: 初めての人向けのウィザードが立ち上がります。

すでに設定済みの場合: そのまま全項目を見直すウィザードに入ります。どの質問にも今の値が既定として出るので、Enter でそのまま、変えたいときだけ入力します。メニューは出ません。

ウィザード全体ではなく、一部だけを直したいとき:

説明
model プロバイダーとモデルの設定。
terminal ターミナルのバックエンドとサンドボックスの設定。
gateway メッセージング プラットフォームの設定。
tools プラットフォームごとのツールの有効・無効。
agent エージェントの振る舞いの設定。

オプション:

オプション 説明
--quick すでに設定済みの人が実行したときに、まだ決まっていない項目だけを尋ねます。設定済みの項目は飛ばします。
--non-interactive 尋ねずに、既定値や環境の値を使います。
--reset 設定を既定値に戻してから始めます。
--reconfigure 互換のために残された別名です。すでに導入済みの環境では、素の hermes setup が既定でこの動きをします。
--portal Nous Portal を一度に用意します。OAuth でログインし、推論のプロバイダーを Nous にして、Tool Gateway を有効にします。ウィザードの残りは飛ばします。

hermes portal

hermes portal [status|open|tools]

Nous Portal の認証と Tool Gateway の経路を確認し、契約のページを開きます。サブコマンドなしで実行すると status になります。

サブコマンド 説明
status(既定) ポータルの認証の状態と、ツールごとの Tool Gateway の経路のまとめ。サブコマンドなしのときもこれが出ます。
open 既定のブラウザーで portal.nousresearch.com/manage-subscription を開きます。
tools Tool Gateway の提携先(Firecrawl、FAL、OpenAI TTS、Browser Use、Modal)を並べ、どれが Nous を経由しているかを表示します。

ゲートウェイそのものの設定は Tool Gateway を参照してください。一度に用意する道は、上の hermes setup --portal です。

hermes whatsapp

hermes whatsapp

WhatsApp の紐づけと設定の流れを実行します。動かし方の選択と QR コードでの紐づけも含みます。

hermes slack

hermes slack manifest              # print manifest to stdout
hermes slack manifest --write      # write to ~/.hermes/slack-manifest.json
hermes slack manifest --long-description-file AGENTS.md --write
hermes slack manifest --slashes-only  # just the features.slash_commands array

COMMAND_REGISTRY にあるゲートウェイのコマンド(/btw/stop/model、…)を すべて、Slack の正式なスラッシュコマンドとして登録するアプリの マニフェストを作ります。Discord や Telegram と同じ使い心地になります。出力を Slack のアプリの設定 (https://api.slack.com/apps → 自分のアプリ → Features → App Manifest → Edit)に貼り付けて Save します。権限や スラッシュコマンドが変わった場合、Slack は入れ直しを求めてきます。

オプション 既定 用途
--write [PATH] 標準出力 標準出力ではなくファイルに書きます。--write だけなら $HERMES_HOME/slack-manifest.json に書きます。
--name NAME Hermes Slack でのボットの表示名。
--description DESC 既定の紹介文 Slack のアプリ一覧に出るボットの説明。
--long-description TEXT 未設定 display_information.long_description をその場で指定します(175〜4,000 文字)。--slashes-only とは併用できません。
--long-description-file PATH 未設定 UTF-8 のテキスト ファイルから長い説明を読み、中身をそのまま使います。--long-description とは同時に使えず、--slashes-only とも併用できません。
--slashes-only オフ 手で管理しているマニフェストに混ぜられるよう、features.slash_commands だけを出力します。

hermes update のあとにもう一度 hermes slack manifest --write を実行すると、 新しいコマンドを取り込めます。

hermes send

hermes send --to <target> "message text"
hermes send --to <target> --file <path>
echo "message" | hermes send --to <target>
hermes send --list [platform]

エージェントやゲートウェイの処理を立ち上げずに、設定済みのメッセージング プラットフォームへ 1 回だけメッセージを送ります。ゲートウェイがすでに持っている認証情報(~/.hermes/.env~/.hermes/config.yaml)を使い回すので、運用のスクリプト、cron の作業、CI のフック、監視の常駐プロセスから、プラットフォームごとの REST クライアントを書き直さずに状況を知らせられます。

ボットのトークンで動くプラットフォーム(Telegram、Discord、Slack、Signal、SMS、WhatsApp Cloud API)では、ゲートウェイが動いている必要はありません。hermes send がプラットフォームの REST のエンドポイントに直接話しかけます。常駐のアダプターが要るプラグイン型のプラットフォームでは、動いているゲートウェイが必要です。

オプション 説明
-t--to <TARGET> 送り先。書き方は platform(ホーム チャンネルを使います)、platform:chat_idplatform:chat_id:thread_idplatform:#channel-name です。例: telegramtelegram:-1001234567890discord:#opsslack:C0123ABCDsignal:+15551234567
-f--file <PATH> メッセージの本文を PATH から読みます(テキスト ファイルのみ。ログ、報告、マークダウンなど)。- を渡すと標準入力から読みます。画像などのバイナリを送るときは MEDIA:<path> を使ってください(後述)。
-s--subject <LINE> 本文の前に見出しの行を足します。
-l--list [platform] すべてのプラットフォーム(または指定したプラットフォーム)の送り先を一覧します。
-q--quiet 成功時の標準出力を抑えます。スクリプトの中で終了コードだけを見たいときに便利です。
--json 人が読む形ではなく、素の JSON の結果を出します。

message の引数も --file も渡さなかった場合、hermes send は標準入力が端末でないときにそこから読みます。終了コードは、成功なら 0、配信やバックエンドの失敗なら 1、使い方の誤りなら 2 です。

画像などの添付を送る

--file は*テキスト*の本文専用です。画像、書類、動画、音声をプラットフォームの添付として届けるには、メッセージの文章の中で MEDIA:<local_path> と書いて指し示します。

hermes send --to telegram "MEDIA:/tmp/screenshot.png"
hermes send --to telegram "Build chart for today MEDIA:/tmp/chart.png"   # with caption
hermes send --to discord:#ops "MEDIA:/tmp/report.pdf"

既定では、画像ファイルは写真として送られます(Telegram などはこれを圧縮し直します)。メッセージに [[as_document]] を足すと、圧縮されないファイルの添付として届きます。

hermes send --to telegram "[[as_document]] MEDIA:/tmp/screenshot.png"

例:

hermes send --to telegram "deploy finished"
echo "RAM 92%" | hermes send --to telegram:-1001234567890
hermes send --to discord:#ops --file /tmp/report.md
hermes send --to slack:#eng --subject "[CI]" --file build.log
hermes send --list                  # all platforms
hermes send --list telegram         # filter by platform

hermes peer

hermes peer add <name> --url http://host:port --key <API_SERVER_KEY>
hermes peer list
hermes peer dm <peer>[/<agent>] "message"
hermes peer remove <name>

端末をまたいだボット同士のやり取りです。別の Hermes のゲートウェイ(api_server のプラットフォームを動かしている端末なら何でも)を*相手*として登録し、そこのエージェントに 話しかけます。hermes peer dm は相手の API サーバー越しにそのエージェントの標準の Bot Chat のセッションを見つけ、そこでエージェントのターンを 1 回動かし、返事を 標準出力に出します。手元での hermes -p <bot> chat --in ~ -c "Bot Chat" … によるボットへの呼びかけの、端末をまたぐ版です。

<peer> だけなら相手のゲートウェイの主となるエージェントに、 <peer>/<agent> なら多重化した相手の中の名前付きプロファイルに届きます(その /p/<profile>/ の写しを経由します)。

サブコマンド 説明
add <name> --url <URL> [--key <KEY>] [--note TEXT] 相手を登録・更新します。URL は config.yamlbot_peers)に入り、キーは ~/.hermes/.envHERMES_PEER_<NAME>_KEY として保存されます。
list 相手の一覧と、それぞれキーが設定されているかを表示します。
dm <peer>[/<agent>] [message] 相手のエージェントの標準の Bot Chat に話しかけ、返事を表示します(機械が読む形にするなら --json。メッセージを省くと標準入力から読みます)。
remove <name> 相手を登録から外します(.env のキーはそのまま残ります)。

相手を 1 つでも登録すると、標準の Bot Chat すべてに教えられるボット モードのやり取りの決まり (agent.bot_mode_protocol)に、相手の一覧と hermes peer dm の書き方が自動で 含まれます。SOUL を書き換えなくても、エージェントは端末をまたいだ仲間を 見つけられます。 ボット モード を参照してください。

終了コードは、成功なら 0、配信や相手側の失敗なら 1、使い方の誤りなら 2 です。

hermes secrets

hermes secrets bitwarden <subcommand>
hermes secrets bw <subcommand>          # short alias

API キーを ~/.hermes/.env に置く代わりに、プロセスの起動時に外部の秘密の保管先から取ってきます。いまのところ Bitwarden Secrets Manager に対応しています。ひととおりの説明は Bitwarden 連携 にあります。

bitwarden(別名 bw)のサブコマンド:

サブコマンド 説明
setup 対話的なウィザードです。固定した bws の実行ファイルを導入し、アクセス トークンを保存し、プロジェクトを選びます。尋ねずに済ませたいときは --project-id--access-token--server-url を渡せます。
status いまの設定、実行ファイルのパスと版、トークンの検証の結果を表示します。
token アクセス トークンを入れ替えます。.env に保存する前に Bitwarden で新しいトークンを検証します(弾かれたトークンでは何も変わりません)。尋ねずに済ませたいときは --access-token、検証を飛ばすなら --no-verify を渡せます。
sync いますぐ秘密を取ってきて、何が変わったかを報告します。--apply を足すと、実際にいまのシェルの環境へ書き出します(既定は下見だけです)。
install 固定した bws の実行ファイルを取得して検証します。--force を付けると、すでにあっても取り直します。
disable Bitwarden の連携をやめます。

hermes migrate

hermes migrate <type>

使っている config.yaml を調べ、必要なら書き換えて、廃止されたモデルや非推奨の設定への参照を置き換えます。書き換えの前には、元の config.yaml の控えが日時付きで取られます(--no-backup で省けます)。

サブコマンド 説明
xai 2026 年 5 月 15 日に廃止予定の xAI のモデルへの参照を config.yaml から探し、(--apply を付けると)xAI の移行案内どおりの正式な置き換え先へその場で書き換えます。既定では下見だけです。

移行のサブコマンドで共通のオプション:

オプション 説明
--apply config.yaml をその場で書き換えます(既定は下見だけで、書き込みません)。
--no-backup 適用するときに、config.yaml の日時付きの控えを取りません。

> hermes claw migrate(OpenClaw の設定を Hermes に一度だけ取り込むもの)とは別ものです。hermes migrate は設定を書き換えるための最上位のコマンドです。

hermes proxy

hermes proxy <subcommand>

OAuth で認証した上流のプロバイダー(Nous Portal、xAI など)へ要求を転送する、OpenAI 互換の HTTP サーバーを手元で動かします。外部のアプリはどんなベアラー トークンでもこのプロキシを指すことができ、プロキシが送り出すときに本物の OAuth の認証情報を付けます。ひととおりの説明は サブスクリプション プロキシ にあります。

サブコマンド 説明
start プロキシを前面で動かします。オプションは `--provider <nous\ xai>(既定 nous)、--host <addr>(既定 127.0.0.1。LAN に出すなら 0.0.0.0)、--port <int>(既定 8645`)。
status どの上流が使える状態か(認証情報があり、OAuth が有効か)を表示します。
providers 使える上流のプロバイダーを一覧します。

hermes security

hermes security <subcommand>

OSV.dev に照らして脆弱性をその場で調べます。Hermes の仮想環境(入っている PyPI の配布物)、~/.hermes/plugins/ の下のプラグインが宣言した Python の依存、config.yaml で固定した npx / uvx の MCP サーバーが対象です。システム全体に入れたパッケージや、エディター・ブラウザーの拡張は対象外です。

サブコマンド 説明
audit 供給網の点検を 1 回だけ行います。

audit のオプション:

オプション 既定 説明
--json オフ 人が読む文章ではなく、機械が読む JSON を出します。
--fail-on <level> critical この深刻度に達する指摘が 1 つでもあれば、0 でない終了コードで終わります(lowmoderatehighcritical)。
--skip-venv オフ Hermes の Python の仮想環境を調べません。
--skip-plugins オフ プラグインの依存のファイルを調べません。
--skip-mcp オフ config.yaml で固定した MCP サーバーを調べません。

hermes login / hermes logout *(非推奨)*

hermes auth

同じプロバイダーの中でキーを回すための、認証情報のまとまりを管理します。詳しい説明は 認証情報のまとまり にあります。

hermes auth                                              # Interactive wizard
hermes auth list                                         # Show all pools
hermes auth list openrouter                              # Show specific provider
hermes auth add openrouter --api-key sk-or-v1-xxx        # Add API key
hermes auth add anthropic --type oauth                   # Add OAuth credential
hermes auth remove openrouter 2                          # Remove by index
hermes auth reset openrouter                             # Clear cooldowns
hermes auth status anthropic                             # Show auth status for a provider
hermes auth logout anthropic                             # Log out and clear stored auth state
hermes auth spotify                                      # Authenticate Hermes with Spotify via PKCE

サブコマンドは addlistremoveresetstatuslogoutspotify です。サブコマンドなしで実行すると、対話的な管理のウィザードが立ち上がります。

hermes status

hermes status [--all] [--deep]
オプション 説明
--all すべての詳細を、そのまま人に見せられる伏せ字入りの形で表示します。
--deep 時間はかかりますが、より深く調べます。

hermes cron

hermes cron <list|create|edit|pause|resume|run|remove|status|tick>
サブコマンド 説明
list 予定した作業を一覧します。
create / add プロンプトから予定の作業を作ります。--skill を繰り返せば、スキルを 1 つ以上つけられます。`--reasoning-effort <none\ minimal\ low\ medium\ high\ xhigh\ max\ ultra>` で作業ごとに推論の深さを固定できます。
edit 作業の予定、プロンプト、名前、届け先、繰り返し回数、つけたスキルを変えます。--clear-skills--add-skill--remove-skill と、--reasoning-effort(空文字で固定を解除)が使えます。
pause 作業を消さずに止めます。
resume 止めていた作業を再開し、次の実行時刻を計算します。
run 次のスケジューラーの巡回で作業を動かします。
remove 予定した作業を削除します。
status cron のスケジューラーが動いているかを確認します。
tick 実行時刻を過ぎた作業を 1 回動かして終了します。

cron のきっかけcron.provider の設定キーで差し替えられます。空 (既定)なら、プロセスに内蔵された時計を使います。chronos(規模を 0 まで落とせる ホスト型ゲートウェイ向けの NAS 管理の提供元)にすると、cron.chronos.* のキー (portal_urlcallback_urlexpected_audiencenas_jwks_url)で設定します。 あるいは plugins/cron/<name>/$HERMES_HOME/plugins/<name>/ に置いた独自の 提供元の名前を書きます。分からない提供元や使えない提供元を指定した場合は内蔵のものに 戻るので、cron がきっかけを失うことはありません。 cron の内部 も参照してください。

hermes kanban

hermes kanban [--board <slug>] <action> [options]

複数プロファイル・複数プロジェクトの共同作業ボードです。1 つの導入でいくつものボードを持てます(プロジェクト、リポジトリ、領域ごとに 1 つ)。それぞれのボードは、自分の SQLite のデータベースとディスパッチャーの担当範囲を持つ独立した待ち行列です。新しく導入すると default という 1 つのボードから始まり、そのデータベースは以前との互換のため ~/.hermes/kanban.db になります。追加のボードは ~/.hermes/kanban/boards/<slug>/kanban.db に置かれます。ゲートウェイに組み込まれたディスパッチャーは、1 回の巡回ですべてのボードを見ます。

全体に効くオプション(以下のすべての操作に適用されます):

オプション 用途
--board <slug> 指定したボードを操作します。省くと、いま選んでいるボード(hermes kanban boards switchHERMES_KANBAN_BOARD 環境変数、または default)になります。

これは人が使う・スクリプトから使うための入口です。 ディスパッチャーが起こすエージェントのワーカーは、hermes kanban をシェルから呼ぶのではなく、専用の kanban_* ツールセットkanban_showkanban_completekanban_request_reviewkanban_request_changeskanban_blockkanban_createkanban_linkkanban_commentkanban_heartbeat。取りまとめ役のプロファイルには kanban_listkanban_unblock も付きます)でボードを動かします。ワーカーの環境には HERMES_KANBAN_BOARD が固定されているので、仕組みのうえでほかのボードを見られません。

操作 用途
init kanban.db がなければ作ります。何度実行しても同じ結果になります。
boards list / boards ls すべてのボードを作業数つきで一覧します。--json--all(保管済みも含める)。
boards create <slug> 新しいボードを作ります。オプションは --name--description--icon--color--switch(作ったボードに切り替える)。識別名はハイフン区切りで、自動的に小文字になります。
boards switch <slug> / boards use <slug> を使うボードとして保存します(~/.hermes/kanban/current に書きます)。
boards show / boards current いま使っているボードの名前、データベースのパス、作業数を表示します。
boards rename <slug> "<name>" ボードの表示名を変えます。識別名は変えられません。
boards rm <slug> ボードを保管(既定)するか、完全に削除します。--delete を付けると保管の段を飛ばします。保管したボードは boards/_archived/<slug>-<ts>/ へ移ります。default には使えません。
create "<title>" 使っているボードに新しい作業を作ります。オプションは --body--assignee--parent(繰り返し可)、`--workspace scratch\ worktree\ dir:<path>--tenant--priority--triage--idempotency-key--max-runtime--max-retries--skill`(繰り返し可)。
list / ls 使っているボードの作業を一覧します。--mine--assignee--status--tenant--archived--json で絞り込めます。
show <id> 作業をコメントと出来事つきで表示します。機械が読む形にするなら --json
assign <id> <profile> 担当を決める・変えます。none で担当を外します。作業が動いている間は受け付けません。
link <parent> <child> 依存関係を足します。循環は検出されます。両方の作業が同じボードにある必要があります。
unlink <parent> <child> 依存関係を外します。
claim <id> 準備できた作業を取り違えなく確保します。使うワークスペースのパスを表示します。
comment <id> "<text>" コメントを足します。次にその作業を確保したワーカーが、kanban_show() の結果の一部として読みます。
complete <id> 作業を完了にします。オプションは --result--summary--metadata
block <id> "<reason>" 人の判断待ちとして作業を止めます。理由はコメントとしても残ります。
request-review <id> 作業をレビュー担当へ引き継いで review に移します。止めるわけではありません。オプションは --summary--metadata--reviewer(レビューに回す前に担当を変えます)。
request-changes <id> <reason> 動いているレビューに対するレビュー担当の判断です。そのレビューを閉じ、作業をもとの実装担当へ戻します。
reopen-review <id>... レビュー中の作業を修正のために差し戻します(review → ready / todo)。オプションは --reason(コメントとして残ります)。
schedule <id> "<reason>" 時間待ちや追いかけの作業を scheduled に置いて、人の判断待ちとして表示されないようにします。
unblock <id> 止まっている作業を元の段階(reviewready)に戻します。依存関係が残っているなら todo に戻します。
archive <id> 既定の一覧から隠します。gc で一時的なワークスペースが消えます。
tail <id> 作業の出来事の流れを追いかけます。
dispatch 使っているボードでディスパッチャーを 1 回動かします。オプションは --dry-run--max N--failure-limit N--json
context <id> ワーカーが見ることになる情報の全体(表題、本文、親の結果、コメント)を表示します。
specify <id> / specify --all 仕分け中の作業を、補助の LLM で具体的な仕様(表題と、目的・進め方・受け入れ条件を書いた本文)に膨らませ、todo へ進めます。オプションは --tenant--all を 1 つのテナントに絞る)、--author--json。モデルは config.yamlauxiliary.triage_specifier で設定します。
decompose <id> / decompose --all 仕分け中の作業を、内容から専門のプロファイルへ割り振った子の作業の集まりに広げます。LLM が分ける必要はないと判断したときは、specify と同じやり方で 1 つの作業として進めます。オプションは specify と同じです。分解に使うモデルは config.yamlauxiliary.kanban_decomposer で設定します。kanban.orchestrator_profile は、分けたあとの大元・取りまとめの作業を誰が持つかを決めるだけです。kanban.auto_decompose: true(既定)なら、ディスパッチャーの巡回のたびに自動でも動きます。自動と手動の取りまとめ を参照してください。
gc 保管した作業の一時的なワークスペースを消します。

例:

# Create a second board and put a task on it without switching away.
hermes kanban boards create atm10-server --name "ATM10 Server" --icon 🎮
hermes kanban --board atm10-server create "Restart server" --assignee ops

# Switch the active board for subsequent calls.
hermes kanban boards switch atm10-server
hermes kanban list                  # shows atm10-server tasks

# Archive a board (recoverable) or hard-delete it.
hermes kanban boards rm atm10-server
hermes kanban boards rm atm10-server --delete

ボードの決まり方は、強いものから順に --board <slug>HERMES_KANBAN_BOARD 環境変数 → ~/.hermes/kanban/current のファイル → default です。

すべての操作は、ゲートウェイのスラッシュコマンド(/kanban …)としても同じ引数で使えます。boards のサブコマンドや --board も含みます。

設計の全体(Cline Kanban / Paperclip / NanoClaw / Gemini Enterprise との比較、8 つの共同作業の型、4 つの利用場面、同時実行の正しさの証明)は、リポジトリの docs/hermes-kanban-v1-spec.pdfかんばんの利用ガイド にあります。

hermes egress

離れた場所のターミナルのサンドボックス向けに、送信時に認証情報を差し込むファイアウォールです。iron-proxy のデーモンを包んでいます。これは TLS を解いて中継するプロキシで、ネットワークの境目で意味を持たないプロキシ用のトークンを本物の上流の API の認証情報に差し替えるため、サンドボックスは本物のキーを持ちません。既定では無効です。設定と仕組みは 送信プロキシ のページを参照してください。

hermes egress install                  # download the pinned iron-proxy binary
hermes egress install --force          # re-download even if already installed

hermes egress setup                    # interactive wizard: CA, mappings, config
hermes egress setup --tunnel-port N    # override the tunnel listener port (default 9090)
hermes egress setup --from-bitwarden   # use Bitwarden Secrets Manager as credential source
hermes egress setup --no-bitwarden     # explicitly switch back to env-based credentials
hermes egress setup --rotate-tokens    # mint fresh proxy tokens (default preserves existing)

hermes egress start                    # spawn the managed proxy daemon
hermes egress stop                     # SIGTERM (then SIGKILL after 5s grace)
hermes egress restart                  # stop (if running) then start — needed for secret changes
hermes egress reload                   # hot-reload the ruleset in-place (no restart, no dropped
                                       #   connections) via the loopback management API

hermes egress status                   # binary + config + pid + listening + mappings
hermes egress status --show-tokens     # print proxy tokens in full (default: redacted)

hermes egress disable                  # flip proxy.enabled = false (does not stop a running proxy)
hermes egress config                   # print the path to proxy.yaml for inspection

よくある流れ

# First-time setup
export OPENROUTER_API_KEY=…
hermes egress setup && hermes egress start
hermes config set terminal.backend docker   # if not already

# Switching credential source after the fact
hermes egress setup --from-bitwarden       # env → bitwarden
hermes egress setup --no-bitwarden         # bitwarden → env
# (just `setup` without either flag preserves the existing mode)

# Rotating all tokens (e.g. after a suspected token leak)
hermes egress setup --rotate-tokens    # setup offers to restart the running daemon for you
# (running sandboxes still hold old tokens; restart them too)

# Adding a new upstream
# Edit ~/.hermes/config.yaml proxy.extra_allowed_hosts: [api.example.com]
hermes egress setup
hermes egress restart                  # one-command apply (stop + start)

調べるときの近道

hermes egress status                     # current state in one view
cat ~/.hermes/proxy/proxy.yaml           # the rendered iron-proxy config
tail -20 ~/.hermes/proxy/iron-proxy.log  # daemon-level diagnostics
tail -f ~/.hermes/proxy/iron-proxy.log | jq  # daemon + per-request log (line-delimited JSON; v0.39 combines both streams)

よくある失敗と立て直し方は 送信プロキシ → 困ったときは にまとめてあります。

hermes project

hermes project <create|list|show|add-folder|remove-folder|rename|set-primary|use|archive|restore|bind-board>

プロジェクトは、複数のフォルダーやリポジトリにまたがれる、人が名前を付けたワークスペースです。デスクトップでのセッションのまとまりの土台になり、かんばんのボードと結び付けると、作業に決まった形のワークツリーとブランチが割り当てられます。状態はプロファイルごとに持ちます。

サブコマンド 説明
create 新しいプロジェクトを作ります。
list(別名 ls プロジェクトを一覧します。
show プロジェクトの詳細を表示します。
add-folder プロジェクトにフォルダーやリポジトリを足します。
remove-folder プロジェクトからフォルダーを外します。
rename プロジェクトの名前を変えます。
set-primary 主となるフォルダーを決めます。
use 使うプロジェクトを決めます。
archive プロジェクトを保管します(元に戻せます)。
restore 保管したプロジェクトを戻します。
bind-board かんばんのボードをこのプロジェクトに結び付けます。

hermes webhook

hermes webhook <subscribe|list|remove|test>

出来事をきっかけにエージェントを動かすための、動的な webhook の登録を管理します。設定で webhook のプラットフォームを有効にしておく必要があります。設定していない場合は、その手順が表示されます。

サブコマンド 説明
subscribe / add webhook の受け口を作ります。自分のサービスに設定するための URL と HMAC の秘密鍵が返ります。
list / ls エージェントが作った登録をすべて表示します。
remove / rm 動的な登録を削除します。config.yaml に書いた固定の受け口には影響しません。
test 試しに POST を送って、登録が動いているかを確かめます。

hermes webhook subscribe

hermes webhook subscribe <name> [options]
オプション 説明
--prompt {dot.notation} で受信内容を参照できるプロンプトのひな形。
--events 受け付ける出来事の種類をカンマ区切りで並べます(例: issues,pull_request)。空ならすべてです。
--description 人が読むための説明。
--skills エージェントの実行時に読み込むスキルの名前をカンマ区切りで並べます。
--deliver 届け先: log(既定)、telegramdiscordslackgithub_comment
--deliver-chat-id プラットフォームをまたいで届けるときの、宛先のチャットやチャンネルの ID。
--secret HMAC の秘密鍵を自分で決めます。省くと自動で作られます。
--deliver-only エージェントを動かさず、組み立てた --prompt をそのままメッセージとして届けます。LLM の費用はゼロで、1 秒もかかりません。--deliver に本物の届け先(log 以外)を指定する必要があります。
--script ~/.hermes/scripts/ に置いた、選り分けや変換のスクリプト。webhook の内容が JSON として標準入力に渡され、標準出力の JSON が内容を置き換えます。標準出力が空、[SILENT]、または 0 でない終了コードなら、その webhook は無視されます。スクリプトによる選り分けと変換 を参照してください。

登録の内容は ~/.hermes/webhook_subscriptions.json に残り、ゲートウェイを再起動しなくても webhook のアダプターがその場で読み直します。

hermes doctor

hermes doctor [--fix]
オプション 説明
--fix 直せるところは自動で直します。

hermes dump

hermes dump [--show-keys]

Hermes の設定の全体を、短い素の文字でまとめて出します。困ったときに Discord、GitHub の issue、Telegram へそのまま貼り付けられるように作られていて、色も飾りもなく、中身だけが並びます。

オプション 説明
--show-keys set / not set だけでなく、API キーの一部(最初と最後の 4 文字)を伏せ字つきで表示します。

何が入るか

内容
Header Hermes の版、公開日、git のコミット ハッシュ
Environment OS、Python の版、OpenAI SDK の版
Identity 使っているプロファイル名、HERMES_HOME のパス
Model 設定した既定のモデルとプロバイダー
Terminal バックエンドの種類(local、docker、ssh など)
API keys 22 種類すべてのプロバイダー・ツールの API キーがあるかどうか
Features 有効なツールセット、MCP サーバーの数、記憶の提供元
Services ゲートウェイの状態、設定済みのメッセージング プラットフォーム
Workload cron の作業の数、導入済みのスキルの数
Config overrides 既定値と違う設定の値

出力の例

--- hermes dump ---
version:          0.8.0 (2026.4.8) [af4abd2f]
os:               Linux 6.14.0-37-generic x86_64
python:           3.11.14
openai_sdk:       2.24.0
profile:          default
hermes_home:      ~/.hermes
model:            anthropic/claude-opus-4.6
provider:         openrouter
terminal:         local

api_keys:
  openrouter           set
  openai               not set
  anthropic            set
  nous                 not set
  firecrawl            set
  ...

features:
  toolsets:           all
  mcp_servers:        0
  memory_provider:    built-in
  gateway:            running (systemd)
  platforms:          telegram, discord
  cron_jobs:          3 active / 5 total
  skills:             42

config_overrides:
  agent.max_turns: 250
  compression.threshold: 0.85
  display.streaming: True
--- end dump ---

使いどころ

  • GitHub に不具合を報告するとき — issue にそのまま貼り付ける
  • Discord で助けを求めるとき — コード ブロックに入れて共有する
  • 自分の環境を誰かのものと見比べるとき
  • 何かうまくいかないときの手早い確認

hermes debug

hermes debug share [options]

調査用の報告(システム情報と直近のログ)を貼り付けサービスに送り、共有できる URL を受け取ります。手早く助けを求めたいときに便利で、助ける側が原因を探るのに必要なものがひととおり入っています。

オプション 説明
--lines <N> ログ ファイル 1 つあたりに含める行数(既定: 200)。
--expire <days> 貼り付けが消えるまでの日数(既定: 7)。
--nous 公開の貼り付けサービスではなく、Nous 内部の診断用の保管先へ送ります。Nous のサポートから非公開の診断一式を求められたときに使ってください。
--local 送らずに、手元で報告を表示します。
--no-redact 送信時に秘密の情報を伏せる処理をやめます。既定では伏せて送ります。

報告には、システム情報(OS、Python の版、Hermes の版)、直近のエージェント・ゲートウェイ・GUI とダッシュボード・デスクトップのログ(1 ファイルあたり 512 KB まで)、そして伏せ字にした API キーの状況が入ります。既定では伏せて送られるので、秘密の情報は含まれません。

既定の送信先は公開の貼り付けサービスで、paste.rs、dpaste.com の順に試します。--nous を付けると、同じ一式を非公開の Nous の診断用の保管先へ送ります。返ってくる閲覧用のリンクは Nous のチーム向けで、14 日後に自動で消えます。

hermes debug share              # Upload debug report, print URL
hermes debug share --lines 500  # Include more log lines
hermes debug share --expire 30  # Keep paste for 30 days
hermes debug share --nous       # Upload a private diagnostics bundle for Nous support
hermes debug share --local      # Print report to terminal (no upload)

hermes backup

hermes backup [options]

Hermes の設定、スキル、セッション、データを zip にまとめます。hermes-agent のコードそのものは含まず、以前のバックアップの成果物(backups/state-snapshots/)を入れ子にすることもありません。それらはすでに自分の state.db の写しを持っているからです。

オプション 説明
-o--output <path> zip ファイルの出力先(既定: ~/hermes-backup-<timestamp>.zip)。
-q--quick 手早いスナップショット。要となる状態のファイル(config.yaml、state.db、.env、認証、cron の作業)だけを取ります。全体のバックアップよりずっと速いです。
-l--label <name> スナップショットに付ける名前(--quick のときだけ使います)。

バックアップは SQLite の backup() API で安全に写すので、Hermes が動いている最中でも正しく取れます(WAL モードでも安全です)。

zip に入らないもの:

  • *.db-wal*.db-shm*.db-journal — SQLite の WAL・共有メモリ・ジャーナルの付属ファイル。*.dbsqlite3.backup() で一貫したスナップショットになっているので、動いている付属ファイルを一緒に入れると、復元したときに中途半端な状態が見えてしまいます。
  • checkpoints/ — セッションごとの経過のキャッシュ。ハッシュで鍵付けされていてセッションごとに作り直されるので、どのみち別の導入先へ持っていっても使えません。
  • hermes-agent のコード自体(これは利用者のデータのバックアップであって、リポジトリのスナップショットではありません)。

hermes backup                           # Full backup to ~/hermes-backup-*.zip
hermes backup -o /tmp/hermes.zip        # Full backup to specific path
hermes backup --quick                   # Quick state-only snapshot
hermes backup --quick --label "pre-upgrade"  # Quick snapshot with label

hermes checkpoints

hermes checkpoints [COMMAND]

~/.hermes/checkpoints/ にある裏の git の保管場所を確認・管理します。セッション中の /rollback を支えている保管の層です。いつ実行しても安全で、エージェントが動いている必要もありません。

サブコマンド 説明
status(既定) 合計の大きさ、プロジェクトの数、プロジェクトごとの内訳を表示します。hermes checkpoints だけでも同じです。
list status の別名です。
prune 掃除を強制します。行き場のないものや古いプロジェクトを消し、保管場所を整理し、大きさの上限を守らせます。24 時間の重複防止の印は無視します。
clear チェックポイントの土台をすべて消します。元に戻せません。-f がなければ確認します。
clear-legacy v1 から v2 への移行で作られた legacy-<timestamp>/ の保管分だけを消します。

オプション

オプション サブコマンド 説明
--limit N statuslist 一覧に出すプロジェクトの上限(既定 20)。
--retention-days N prune last_touch が N 日より古いプロジェクトを消します(既定 7)。
--max-size-mb N prune 行き場のないもの・古いものを消したあと、合計が N MB 以下になるまでプロジェクトごとにいちばん古いコミットを消します(既定 500)。
--keep-orphans prune 作業ディレクトリがもうないプロジェクトは消しません。
-f--force clearclear-legacy 確認を省きます。

hermes checkpoints                                  # status overview
hermes checkpoints prune --retention-days 3         # aggressive cleanup
hermes checkpoints prune --max-size-mb 200          # tighten size cap once
hermes checkpoints clear-legacy -f                  # drop v1 archive dirs
hermes checkpoints clear -f                         # wipe everything

仕組みの全体とセッション中のコマンドは チェックポイントと /rollback を参照してください。

hermes import

hermes import <zipfile> [options]

前に作った Hermes のバックアップを、Hermes のホーム ディレクトリに戻します。書庫の中のファイルはすべて既存のファイルを上書きします。--force は、すでに Hermes が入っているときに出る確認を省くだけです。

オプション 説明
-f--force すでに導入済みのときの確認を省きます。

hermes import ~/hermes-backup-20260423.zip           # Prompts before overwriting existing config
hermes import ~/hermes-backup-20260423.zip --force   # Overwrite without prompting

hermes logs

hermes logs [log_name] [options]

Hermes のログを見る・追う・絞り込みます。ログはすべて ~/.hermes/logs/(既定以外のプロファイルなら <profile>/logs/)にあります。

ログ ファイル

名前 ファイル 記録される内容
agent(既定) agent.log エージェントの動き全般 — API の呼び出し、ツールの実行、セッションの移り変わり(INFO 以上)
errors errors.log 警告とエラーだけ — agent.log から絞ったもの
gateway gateway.log メッセージング ゲートウェイの動き — プラットフォームへの接続、メッセージの受け渡し、webhook の出来事
gui gui.log ダッシュボード、TUI とゲートウェイ、PTY の橋渡し、WebSocket の出来事
desktop desktop.log Electron のデスクトップ アプリ — 起動、バックエンドの立ち上げの出力、直近の Python のトレース

オプション

オプション 説明
log_name 見るログ: agent(既定)、errorsgatewaylist にすると、使えるファイルを大きさつきで表示します。
-n--lines <N> 表示する行数(既定: 50)。
-f--follow tail -f のように、実時間で追いかけます。Ctrl+C で止まります。
--level <LEVEL> 表示する最低のログの水準: DEBUGINFOWARNINGERRORCRITICAL
--session <ID> セッション ID の一部を含む行に絞ります。
--since <TIME> いまから遡った時間より新しい行を表示します: 30m1h2d など。s(秒)、m(分)、h(時)、d(日)が使えます。
--component <NAME> 部位で絞ります: gatewayagenttoolsclicron

# View the last 50 lines of agent.log (default)
hermes logs

# Follow agent.log in real time
hermes logs -f

# View the last 100 lines of gateway.log
hermes logs gateway -n 100

# Show only warnings and errors from the last hour
hermes logs --level WARNING --since 1h

# Filter by a specific session
hermes logs --session abc123

# Follow errors.log, starting from 30 minutes ago
hermes logs errors --since 30m -f

# List all log files with their sizes
hermes logs list

絞り込み

絞り込みは組み合わせられます。複数を指定したときは、すべてを満たす行だけが表示されます。

# WARNING+ lines from the last 2 hours containing session "tg-12345"
hermes logs --level WARNING --since 2h --session tg-12345

時刻を読み取れない行は、--since を使っているときも表示されます(複数行のログの続きであることがあるためです)。水準を判別できない行も、--level を使っているときに表示されます。

ログの入れ替え

Hermes は Python の RotatingFileHandler を使います。古いログは自動で入れ替わるので、agent.log.1agent.log.2 なども探してみてください。hermes logs list は、入れ替わったものも含めてすべてのログ ファイルを表示します。

hermes prompt-size

hermes prompt-size [--platform <name>] [--json]

新しいセッションで固定的にかかるプロンプトの量、つまり会話の中身が乗る*前*に 毎回の API 呼び出しで送られるものを報告します。下流のアダプターや プロキシがモデルの文脈の窓より狭いときや、どのかたまり(スキルの索引、記憶、 利用者像)が場所を取っているかを見たいときに役立ちます。

エージェントが使うのと同じシステム プロンプトを組み立て、内訳を出します。

  • システム プロンプトの合計 — 組み上がったプロンプト全体(身元、案内、スキルの

索引、文脈のファイル、記憶、利用者像、時刻)。

  • スキルの索引<available_skills> のかたまり。スキルをたくさん入れていると、

ここがいちばん大きくなりがちです。

  • 記憶利用者像MEMORY.mdUSER.md の写し。
  • プロンプトの段 — stable / context / volatile。Hermes がキャッシュを効かせるために

プロンプトを重ねている順そのものです。

  • ツールのスキーマ — 有効なすべてのツールの JSON(毎回かかる固定分の

もう半分です)。

すべてネットにつながずに動きます。API も呼ばず、認証情報がなくても使えます。

# Human-readable breakdown for the CLI platform (default)
hermes prompt-size

# Simulate a messaging platform's prompt (different platform hint)
hermes prompt-size --platform telegram

# Machine-readable output for scripts
hermes prompt-size --json

hermes config

hermes config <subcommand>

サブコマンド:

サブコマンド 説明
show いまの設定の値を表示します。
edit config.yaml をエディターで開きます。
get <key> [--json] ドットでつないだキーで設定の値を 1 つ表示します(例: hermes config get model.default)。--json を付けると機械が読む形になります。
set <key> <value> 設定の値を決めます。
unset <key> 設定のキーを消して、組み込みの既定値に戻します。
path 設定ファイルのパスを表示します。
env-path .env のパスを表示します。
check 足りない設定や古い設定がないか調べます。
migrate 新しく増えた項目を対話的に足します。

hermes pairing

hermes pairing <list|approve|revoke|clear-pending>
サブコマンド 説明
list 承認待ちと承認済みのユーザーを表示します。
approve <platform> <code> 紐づけコードを承認します。
revoke <platform> <user-id> ユーザーの権限を取り消します。
clear-pending 承認待ちの紐づけコードを消します。

hermes skills

hermes skills <subcommand>

サブコマンド:

サブコマンド 説明
browse スキルのレジストリをページ送りで見ます。
search スキルのレジストリを検索します。
install スキルを導入します。
inspect 導入せずにスキルの中身を見ます。
list 導入済みのスキルを一覧します。
check 導入済みのハブのスキルに、提供元の更新がないか調べます。
update 提供元に変更があったハブのスキルを入れ直します。
audit 導入済みのハブのスキルを調べ直します。
uninstall ハブから入れたスキルを消します。
reset user_modified の印が付いて動かなくなった同梱スキルについて、マニフェストの記録を消して元に戻します。--restore を付けると、手元の写しも同梱の版に置き換えます。
opt-out 同梱スキルが、使っているプロファイルに自動で入るのをやめます。.no-bundled-skills の印を書き、インストーラー、hermes update、同期の処理がすべて同梱スキルの配置を飛ばすようにします。既定では安全で、ディスク上のものには触れません。--remove を付けると、すでに入っている手を加えていない同梱スキルも消します(自分で編集したもの、ハブから入れたもの、手で書いたものは決して消しません。先に一覧を見せて確認します。--yes で省けます)。
opt-in .no-bundled-skills の印を消して opt-out を取り消し、次の hermes update から同梱スキルがまた入るようにします。--sync を付けると、その場で入れ直します。
publish スキルをレジストリに公開します。
snapshot スキルの設定を書き出す・取り込みます。
tap 独自のスキルの入手先を管理します。
config プラットフォームごとに、スキルの有効・無効を対話的に設定します。

よく使う例:

hermes skills browse
hermes skills browse --source official
hermes skills search react --source skills-sh
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect official/security/1password
hermes skills inspect skills-sh/vercel-labs/json-render/json-render-react
hermes skills install official/migration/openclaw-migration
hermes skills install skills-sh/anthropics/skills/pdf --force
hermes skills install https://sharethis.chat/SKILL.md                     # Direct URL (+ referenced support files)
hermes skills install https://example.com/SKILL.md --name my-skill        # Override name when frontmatter has none
hermes skills check
hermes skills update
hermes skills config
hermes skills reset google-workspace
hermes skills reset google-workspace --restore --yes
hermes skills opt-out                  # stop future bundled-skill seeding (nothing deleted)
hermes skills opt-out --remove --yes   # also delete UNMODIFIED bundled skills
hermes skills opt-in --sync            # undo: remove marker and re-seed now

補足:

  • --force は、他社やコミュニティのスキルについて、危険でない方針上の制限を押し切れます。
  • --force でも dangerous という検査結果は押し切れません。
  • --source skills-sh は公開されている skills.sh の一覧を検索します。
  • --source well-known を使うと、/.well-known/skills/index.json を公開しているサイトを Hermes に見に行かせられます。
  • --source browse-shbrowse.sh の、サイトごとのブラウザー自動操作のスキル 200 件以上のカタログを検索します。識別子は browse-sh/airbnb.com/search-listings-ddgioa のような形です。
  • http(s)://…/*.md の URL を渡すと、SKILL.md に加えて、その中ではっきり参照されている references/templates/scripts/assets/examples/ の下のファイルも入ります。冒頭の情報に name: がなく、URL の末尾も名前として使えないときは、対話的な端末なら名前を尋ねます。対話できない場所(TUI の中の /skills install、メッセージング プラットフォーム)では代わりに --name <x> が必要です。

hermes bundles

hermes bundles <subcommand>

スキル束は、複数のスキルを 1 つの /<bundle-name> スラッシュコマンドにまとめるものです。束を呼ぶと、参照しているすべてのスキルが 1 つのメッセージにまとめて読み込まれます。保存先は ~/.hermes/skill-bundles/<slug>.yaml です。YAML の書き方と動きは スキル束 を参照してください。

サブコマンド:

サブコマンド 説明
list 導入済みの束を一覧します(サブコマンドを省いたときの既定)
show <name> 束の名前、説明、スキル、ファイルのパスを表示します
create <name> 新しい束を作ります。--skill <id> を繰り返すか、省くと対話的に入力できます。--description--instruction--force も使えます。
delete <name> 束のファイルを消します
reload ~/.hermes/skill-bundles/ を調べ直し、増えた束と減った束を報告します

例:

hermes bundles create backend-dev \
  --skill github-code-review \
  --skill test-driven-development \
  --skill github-pr-workflow \
  -d "Backend feature work"

hermes bundles list
hermes bundles show backend-dev
hermes bundles delete backend-dev

チャットのセッションでは、/bundles で導入済みの束を一覧し、/<bundle-name> で 1 つ読み込みます。

hermes curator

hermes curator <subcommand>

キュレーターは、補助のモデルがバックグラウンドで動く仕組みです。エージェントが作ったスキルを定期的に見直し、古くなったものを整理し、重なっているものをまとめ、要らなくなったものを保管します。同梱のスキルとハブから入れたスキルには決して触れません。保管したものは元に戻せて、自動で削除されることはありません。

サブコマンド 説明
status キュレーターの状態とスキルの統計を表示します
run いますぐ見直しを走らせます(LLM の処理が終わるまで待ちます)
run --background LLM の処理をバックグラウンドで始めて、すぐ戻ります
run --dry-run 下見だけ。何も変えずに見直しの報告を作ります
backup ~/.hermes/skills/ の tar.gz のスナップショットを手動で取ります(キュレーターは本番の実行前にも自動で取ります)
rollback スナップショットから ~/.hermes/skills/ を戻します(既定はいちばん新しいもの)
rollback --list 使えるスナップショットを一覧します
rollback --id <ts> id を指定して、特定のスナップショットから戻します
rollback -y 確認を省きます
pause 再開するまでキュレーターを止めます
resume 止めていたキュレーターを再開します
pin <skill> スキルを固定し、キュレーターが勝手に動かさないようにします
unpin <skill> スキルの固定を外します
restore <skill> 保管したスキルを戻します
archive <skill> スキルを手動で保管します
prune キュレーターがふだん整理するスキルを、手動で整理します
list-archived 保管したスキルを一覧します(restore で戻せます)

新しく導入した直後は、最初の定期実行が interval_hours 1 回分(既定では 7 日)だけ後ろにずれます。hermes update のあとの最初の巡回で、ゲートウェイがすぐに手入れを始めることはありません。それより前に様子を見たいときは hermes curator run --dry-run を使ってください。

動きと設定は キュレーター を参照してください。

hermes moa

名前を付けた Mixture of Agents のプリセットを設定します。プリセットは、どのモデル選択画面でも Mixture of Agents というプロバイダーの下に選べるモデルとして出てきます。/moa <prompt> は、既定のプリセットでプロンプトを 1 つ処理します。

hermes moa list
hermes moa configure [name]
hermes moa delete <name>

hermes moa configure は、参照するモデルと取りまとめ役のそれぞれについて、Hermes のプロバイダー → モデルの選択画面を使い回します。プリセットは動かし方の設定であって、主となるモデルやプロバイダーではありません。

hermes fallback

hermes fallback <subcommand>

代替のプロバイダーの連なりを管理します。主なモデルが回数制限、過負荷、接続のエラーで失敗したとき、代替のプロバイダーが順に試されます。

サブコマンド 説明
list(別名: ls いまの代替の連なりを表示します(サブコマンドを省いたときの既定)
add プロバイダーとモデルを選んで(hermes model と同じ選択画面です)、連なりの末尾に足します
remove(別名: rm 連なりから消す項目を選びます
clear 代替の項目をすべて消します

代替のプロバイダー も参照してください。

hermes hooks

hermes hooks <subcommand>

~/.hermes/config.yaml に書いたシェル スクリプトのフックを確認し、作った入力で試し、~/.hermes/shell-hooks-allowlist.json にある初回の同意の許可リストを管理します。

サブコマンド 説明
list(別名: ls 設定済みのフックを、条件、制限時間、同意の状態つきで一覧します
test <event> <event> に当てはまるすべてのフックを、作った入力で動かします
revoke(別名: removerm あるコマンドの許可リストの記録を消します(次の再起動から効きます)
doctor 設定済みのフックそれぞれについて、実行の許可、許可リスト、更新時刻のずれ、JSON の正しさ、試しに動かしたときの所要時間を調べます

出来事の種類と受け取る内容の形は フック を参照してください。

hermes memory

hermes memory <subcommand>

外部の記憶の提供元のプラグインを用意し、管理します。使える提供元は honcho、openviking、mem0、hindsight、holographic、retaindb、byterover、supermemory です。外部の提供元は一度に 1 つだけ有効にできます。組み込みの記憶(MEMORY.md と USER.md)はつねに動いています。

サブコマンド:

サブコマンド 説明
setup 提供元を対話的に選んで設定します。
status いまの記憶の提供元の設定を表示します。
off 外部の提供元をやめます(組み込みだけになります)。

hermes acp

hermes acp

エディター連携のために、Hermes を ACP(Agent Client Protocol)の標準入出力のサーバーとして起動します。

関連する入口:

hermes-acp
python -m acp_adapter

先に対応する部品を入れてください。

cd ~/.hermes/hermes-agent && uv pip install -e '.[acp]'

ACP によるエディター連携ACP の内部 を参照してください。

hermes mcp

hermes mcp <subcommand>

MCP(Model Context Protocol)のサーバーの設定を管理し、Hermes を MCP のサーバーとして動かします。

サブコマンド 説明
*(なし)* または picker 対話的なカタログの選択画面。Nous が認めた MCP を見て、導入・有効化・無効化します。
catalog Nous が認めた MCP を一覧します(素の文字で、スクリプトから使えます)。
install <name> カタログの項目を導入します(例: hermes mcp install n8n)。
`serve [-v\ --verbose]` Hermes を MCP のサーバーとして動かし、会話をほかのエージェントに開きます。
`add <name> [--url URL] [--command CMD] [--auth oauth\ header] [--args ...]` 独自の MCP サーバーを足し、ツールを自動で見つけます。--args は残りの引数を標準入出力のコマンドへ渡すので、最後に書いてください。
remove <name>(別名: rm MCP サーバーを設定から外します。
list(別名: ls 設定済みの MCP サーバーを一覧します。
test <name> MCP サーバーへの接続を試します。
configure <name>(別名: config サーバーごとに、使うツールを切り替えます。
login <name> OAuth を使う MCP サーバーで、認証をやり直させます。

MCP の設定の早見表Hermes で MCP を使うMCP サーバー モード を参照してください。

hermes plugins

hermes plugins [subcommand]

プラグインをまとめて管理します。一般のプラグイン、記憶の提供元、文脈のエンジンを 1 か所で扱えます。サブコマンドなしで hermes plugins を実行すると、2 つの節を持つ対話画面が開きます。

  • General Plugins — 導入済みのプラグインを、チェックボックスで有効・無効にします
  • Provider Plugins — 記憶の提供元と文脈のエンジンを 1 つずつ選びます。分類の上で ENTER を押すと選択肢が開きます。
サブコマンド 説明
*(なし)* 一体型の対話画面。一般のプラグインの切り替えと、提供元のプラグインの設定ができます。
install <identifier> [--force] [--ref COMMIT_SHA] Git の URL、owner/repo、または索引の名前だけからプラグインを導入します。スラッシュのない名前は、コミュニティのプラグイン索引を通して owner/repo と索引が固定したコミットに解決されます。あいまいな名前のときは候補を並べて終了します。--ref は 40 文字のコミット SHA だけを受け付け、その不変の版をそのまま導入し、索引の固定より優先されます。
search [term] [--json] [--capability CAP] [--refresh] コミュニティのプラグイン索引を検索します(名前・説明・タグへのあいまい一致。term を省くと全体を見られます)。plugins.index_url(既定は NousResearch のプラグイン索引)から取得し、~/.hermes/cache/ に 24 時間貯めます。取れないときは古いキャッシュ、さらに同梱の初期データへ落ちます。載っていること ≠ 監査済みで、載せる判断は説明の確認だけです。
update <name> 固定していない導入済みのプラグインを最新にします。固定したプラグインを動かすには --force --ref <new-commit> で入れ直す必要があります。
remove <name>(別名: rmuninstall 導入済みのプラグインを消します。
enable <name> 無効にしていたプラグインを有効にします。
disable <name> プラグインを消さずに無効にします。
list(別名: ls 導入済みのプラグインを、有効・無効の状態つきで一覧します。
doctor [path-or-id] [--ci] ネイティブのプラグインを、本物のマニフェストの読み取り・読み込み・登録の道筋で検証します。--ci を付けると、エラーがあれば 1 で終了します。
pack install <path-or-url> [--force] プラグインの詰め合わせ(hermes-pack.yaml)を導入します。これは、それぞれを 40 文字のコミット SHA で固定したプラグインの一覧です。必ず確認の画面(すべてのプラグイン、入手元、固定した版、宣言された権限)が出て、詰め合わせの中身について 1 回だけ確認を求め、そのあとふつうの固定導入を行います。それぞれのプラグインが宣言した権限は、これまでどおりプラグインごとの同意を通ります。詰め合わせがまとめて権限を与えることはありません。一部が失敗した場合はプラグインごとに報告し、1 つでも失敗すれば 0 でない終了コードになります。対話的な実行だけで、--yes はありません。
pack export [--enabled-only] [--name NAME] いまの導入内容から、詰め合わせの YAML を標準出力に書き出します。git から入れた各プラグインのリポジトリと正確な SHA に加えて、秘密を除いた plugins.entries の設定が入ります。git の出どころがない手元だけのプラグインは、導入できる項目としてではなく、注意書きのコメントとして並びます。秘密、与えた権限、allow_* の関門はつねに取り除かれます。
pack show <path-or-url> 下見です。何も導入せずに、詰め合わせを読んで検証し、内容を表示します。

提供元のプラグインの選択は config.yaml に保存されます。

  • memory.provider — 有効な記憶の提供元(空なら組み込みだけ)
  • context.engine — 有効な文脈のエンジン("compressor" が組み込みの既定)

一般のプラグインの無効一覧は、config.yamlplugins.disabled に入ります。 git から入れたものについては、正式な入手元、実際に入った版、固定の有無だけを プロファイルごとの plugins/.install-metadata.json に記録します。ここに プラグインの設定、環境の値、秘密、与えた権限は入りません。

プラグインHermes のプラグインを作る を参照してください。

hermes tools

hermes tools [--summary]
オプション 説明
--summary いま有効なツールのまとめを表示して終了します。

--summary を付けなければ、プラットフォームごとにツールを設定する対話画面が開きます。

hermes computer-use

hermes computer-use <subcommand>

サブコマンド:

サブコマンド 説明
install 提供元の cua-driver のインストーラーを実行します(macOS、Windows、Linux)。
install --upgrade cua-driver がすでに PATH にあってもインストーラーを走らせ直します。提供元のスクリプトはつねに最新版を取ってくるので、その場での更新になります。
status cua-driver$PATH にあるか、どの版が入っているかを表示します。
doctor [--include CHECK] [--skip CHECK] [--json] cua-driver の健康診断を走らせ、環境ごとの確認結果を表示します。
permissions status [--json] macOS のアクセシビリティと画面収録の許可の状態を報告します。
permissions grant Cua Driver にアクセシビリティと画面収録の許可を与えるよう macOS に求めます。

hermes computer-use install は、computer_use のツールセットが使う cua-driver の実行ファイルを入れるための、 安定した入口です。Computer Use を初めて有効にしたときに hermes tools が呼ぶ のと同じ提供元のインストーラーを実行するので、ツールセットの切り替えで うまく走らなかったとき(たとえば、すでに設定済みの人が実行したとき)に、 入れ直しの手段として安心して使えます。

cua-driver がすでにあるときは、Hermes がその版と実行時のマニフェストを確認します。 0.20.0 以降の使える導入はそのまま残します。古かったり足りなかったりする標準の導入は、 いまの提供元のインストーラーで直します。HERMES_CUA_DRIVER_CMD で選んだ独自の 実行ファイルを Hermes が置き換えることはありません。その実行ファイルを自分で更新するか、 上書きの設定を外してください。直す必要があるかどうかは hermes computer-use status が報告します。

Hermes との連携としておすすめなのは、組み込みの computer_use のツールセットです。 Cua の生の MCP ツールを登録するのは、Cua の低い水準の道具立てが必要なときの 代わりの手です。cua-driver skills install は Hermes を見つけて、Cua の スキル一式を Hermes のスキルのディレクトリへ自動でつなぎます。

権限の扱い方、権限のマニフェストの承認、既存のプロファイルへの許可は、実行時の 起動に属します。範囲を絞ったモードでは、Hermes が Cua の正式な --capability-manifest--approve-capability-manifest を渡します。どの MCP の 経路も、自分の実行環境の中に専用の生存期間のセッションを持ちます。公開のセッション名は カーソルとセッションの状態を示す札で、実行環境を持つわけでも共有するわけでもありません。

cua-driver が PATH にあれば、hermes update は更新の最後に提供元の インストーラーを自動で走らせ直すので、たいていの人が自分で --upgrade を 使う必要はありません。次の Hermes の更新を待たずに、提供元の修正を いますぐ取り込みたいときに使ってください。

hermes pets

hermes pets <list|install|select|show|off|scale|remove|doctor>

Petdex は、コーディングのエージェント向けに動くドット絵のペットを集めた公開の展示場です。1 匹入れると、CLI、TUI、デスクトップ アプリで、エージェントの動きに反応する様子が見られます。

サブコマンド 説明
list petdex の展示場を見ます。
install 展示場からペットを入れます。
select 表に出すペットを決めます(display.pet.* に書きます)。
show 表に出しているペットをターミナルで動かします。
off ペットの表示をやめます。
scale ペットの大きさをどこでも変えます(display.pet.scale)。
remove 入れたペットを消します。
doctor ペットの設定と、ターミナルの画像表示への対応を確認します。

/hatch スラッシュコマンドを使えば、文章での説明からまったく新しいペットを作れます。ペット を参照してください。

hermes sessions

hermes sessions <subcommand>

サブコマンド:

サブコマンド 説明
list 最近のセッションを一覧します。
browse 検索と再開ができる対話的なセッションの選択画面です。各行には、セッションの最後のメッセージから導いた状態の札(done / intr / err / empty)とメッセージ数が出ます。選んだ行で d を押すと(検索の絞り込みが空のとき)、y/N の確認のあとそのセッションを消せます。絞り込み中は、d は検索への入力になります。
export <output> [--session-id ID] セッションを JSONL に書き出します。
delete <session-id> セッションを 1 つ消します。
prune 条件に合うセッションを消します。時間の条件は --older-than/--newer-than/--before/--after5h/2d のような長さ、日数だけの数、ISO の時刻)、属性は --source--title--model--provider--branch--end-reason--user--chat-id--chat-type--cwd、数の条件は --min/--max-messages--min/--max-tokens--min/--max-cost--min/--max-tool-calls、それに --include-archived--dry-run--yes があります。既定は 90 日より古いものです。
archive prune と同じ条件に合うセッションをまとめて保管します(隠すだけで、消しません)。条件を 1 つ以上指定する必要があります。
stats セッションの保管場所の統計を表示します。
rename <session-id> <title> セッション名を決める・変えます。
optimize ディスクを空けます。FTS5 の索引の断片をまとめ、VACUUM を実行します。セッションのデータは変えません。
optimize-storage 全文検索の索引を、中身を外に持つ小さな v23 の形へ移します。大きなデータベースでは state.db がかなり小さくなります。
repair 壊れた state.db のスキーマ(たとえば table messages_fts already exists)を直して、隠れていたセッションを戻します。先に控えを取ります。
repair-routing 経路の情報を失ったセッションの行に取り残された、ゲートウェイの会話をつなぎ直します(再起動のあとにチャットが「時間を巻き戻した」ように見える現象です)。既定では下見だけで、--apply を付けると実際につなぎ直します(先にゲートウェイを止めてください)。--max-gap-seconds N でつながりとみなす幅を調整できます。まぎれのない場合だけ直します。セッション → 取り残されたゲートウェイのセッションを直す を参照してください。
recover 壊れた state.db を、ネットにつながずに、元を傷つけない形で別のきれいなデータベースへ救い出します。
retitle-skills /skill で開いたセッションの名前を、実際に打った内容から付け直します。--apply を付けない限り、変更の一覧を出すだけです。

hermes insights

hermes insights [--days N] [--source platform]
オプション 説明
--days <n> 直近 n 日を分析します(既定: 30)。
--source <platform> clitelegramdiscord などの出どころで絞ります。

hermes claw

hermes claw migrate [options]

OpenClaw の設定を Hermes へ移します。~/.openclaw(または指定したパス)から読み、~/.hermes へ書きます。古いディレクトリ名(~/.clawdbot~/.moltbot)や設定ファイル名(clawdbot.jsonmoltbot.json)も自動で見つけます。

オプション 説明
--dry-run 何も書かずに、何が移るかを下見します。
--preset <name> 移行の型: full(互換のある設定すべて)か user-data(基盤まわりの設定を除く)。どちらの型でも秘密の情報は移しません。移すなら --migrate-secrets を明示してください。
--overwrite ぶつかったときに既存の Hermes のファイルを上書きします(既定は、ぶつかる計画なら適用を拒みます)。
--migrate-secrets API キーも移します。--preset full のときも必ず必要です。
--no-backup 移行前の ~/.hermes/ の zip のスナップショットを取りません(既定では、適用の前に復元用の書庫を 1 つ ~/.hermes/backups/pre-migration-*.zip に書きます。hermes import で戻せます)。
--source <path> OpenClaw のディレクトリを指定します(既定: ~/.openclaw)。
--workspace-target <path> ワークスペース向けの指示(AGENTS.md)を置くディレクトリ。
--skill-conflict <mode> スキル名がぶつかったときの扱い: skip(既定)、overwriterename
--yes 確認を省きます。

何が移るか

移行の対象は、人格、記憶、スキル、モデルのプロバイダー、メッセージング プラットフォーム、エージェントの振る舞い、セッションの方針、MCP サーバー、読み上げなど 30 を超える分類にわたります。それぞれは、Hermes の同等のものへそのまま取り込まれるか、あとで自分で見直すために保管されるかのどちらかです。

そのまま取り込まれるもの: SOUL.md、MEMORY.md、USER.md、AGENTS.md、スキル(4 つの元ディレクトリ)、既定のモデル、独自のプロバイダー、MCP サーバー、メッセージング プラットフォームのトークンと許可リスト(Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost)、エージェントの既定値(推論の深さ、圧縮、人らしい間、タイムゾーン、サンドボックス)、セッションの作り直しの方針、承認の規則、読み上げの設定、ブラウザーの設定、ツールの設定、実行の制限時間、コマンドの許可リスト、ゲートウェイの設定、3 つの出どころからの API キー。

あとで見直すために保管されるもの: cron の作業、プラグイン、フックと webhook、記憶のバックエンド(QMD)、スキルのレジストリの設定、画面と身元、ログ、複数エージェントの構成、チャンネルの結び付け、IDENTITY.md、TOOLS.md、HEARTBEAT.md、BOOTSTRAP.md。

API キーの解決は 3 つの出どころを優先度の順に見ます。設定の値 → ~/.openclaw/.envauth-profiles.json。トークンの項目はすべて、素の文字列、環境変数のひな形(${VAR})、SecretRef のオブジェクトのいずれにも対応します。

設定キーの完全な対応表、SecretRef の扱いの詳細、移行後の確認事項は、移行ガイドの全体 を参照してください。

# Preview what would be migrated
hermes claw migrate --dry-run

# Full migration (all compatible settings, no secrets)
hermes claw migrate --preset full

# Full migration including API keys
hermes claw migrate --preset full --migrate-secrets

# Migrate user data only (no secrets), overwrite conflicts
hermes claw migrate --preset user-data --overwrite

# Migrate from a custom OpenClaw path
hermes claw migrate --source /home/user/old-openclaw

hermes import-agent

hermes import-agent [claude-code|codex] [options]

Claude Code~/.claude)や OpenAI Codex CLI~/.codex)の設定を Hermes へ取り込みます。CLAUDE.mdAGENTS.md の指示は記憶の項目へ、Bash(...) の許可・拒否の規則は command_allowlistapprovals.deny へ、MCP サーバーは config.yamlmcp_servers へ、スキルのディレクトリは ~/.hermes/skills/ へ移します。適用の前に必ず下見が出ます。API キーと認証情報は決して取り込みません。

オプション 説明
agent claude-codecodex(既定は自動判別)。
--source <path> 元のディレクトリを指定します(既定: ~/.claude~/.codex)。
--dry-run 下見だけで、何も書きません。
--overwrite ぶつかった MCP サーバーやスキルを置き換えます(既定は飛ばします)。
--yes-y 確認を省きます。

対応表の全体は 取り込みガイド を参照してください。

hermes serve

hermes serve [options]

Hermes のバックエンド サーバーを起動します。デスクトップ アプリ や離れた場所のクライアントがつなぐ、JSON-RPC と WebSocket の窓口です。hermes dashboard が動かすのと同じサーバーですが、画面がありません。ブラウザーの UI を開くことは決してありません。デスクトップ アプリは自分で hermes serve のバックエンドを立ち上げます。離れた場所のホストに画面なしのバックエンドを置きたいときは、このコマンドを直接使ってください。下の hermes dashboard と同じ --host / --port / --insecure / --skip-build / --stop / --status を受け付けます(ループバック以外に結び付けると、同じ認証の関門が働きます)。[web] の追加部品が必要で、組み込みのチャットの接続には POSIX のホストで [pty] も要ります。

ポートがぶつかったとき: 指定したポート(既定は 9119)を別のプロセス(2 つ目の hermes serve やゲートウェイなど)が使っている場合、機械が読める目印の行 BACKEND_PORT_IN_USE port=<port> を標準出力に出し、掴んでいそうな相手を人向けに知らせ、ありきたりのエラーではなく終了コード 75EX_TEMPFAIL)で終わります。スクリプトやデスクトップ アプリが「ポートがふさがっている」と「バックエンドが壊れている」を区別できるようにするためです。--port 0 を渡すと、空いているポートを自動で使います(起動に成功すると、選んだポートを HERMES_BACKEND_READY port=<port> で知らせます)。

hermes dashboard

hermes dashboard [options]

ウェブ ダッシュボードを起動します。設定や API キーの管理、セッションの様子を見るための、ブラウザーで使う画面です。(デスクトップ アプリが立ち上げるような、ブラウザーの画面を持たないバックエンドがほしいときは、上の hermes serve を使ってください。)cd ~/.hermes/hermes-agent && uv pip install -e ".[web]"(FastAPI と Uvicorn)が必要です。組み込みのブラウザーのチャットのタブはいつでも使えますが、pty の追加部品(cd ~/.hermes/hermes-agent && uv pip install -e ".[web,pty]")と、Linux、macOS、WSL2 のような POSIX の PTY の環境も必要です。詳しい説明は ウェブ ダッシュボード にあります。

オプション 既定 説明
--port 9119 ウェブ サーバーを動かすポート
--host 127.0.0.1 結び付けるアドレス
--no-open ブラウザーを自動で開きません
--insecure オフ 非推奨で、何も起きません。 以前はループバック以外に結び付けたときに認証を省くものでした。2026 年 6 月の強化以降、公開の結び付けでは*つねに*認証の仕組み(パスワードか OAuth)が必要です。手元だけで使うなら 127.0.0.1 に結び付けてトンネルを掘ってください。
--skip-build オフ ウェブ UI の組み立てを飛ばし、すでにある dist をそのまま配ります。npm が使えない、人の操作を伴わない場面(Windows のタスク スケジューラー、CI)に向いています。先に cd web && npm run build で組み立てておいてください。
--isolated オフ 名前付きのプロファイルから起動したとき(worker dashboard)、端末のダッシュボードへ流さずに、そのプロファイル専用のサーバーを動かします。
--stop 動いている hermes dashboard のプロセスを止めて終了します。
--status 動いている hermes dashboard のプロセスを一覧して終了します。

hermes dashboard register

この導入を、自前で立てたダッシュボードとして Nous Portal のアカウントに登録します。OAuth のクライアントを作り、HERMES_DASHBOARD_OAUTH_CLIENT_ID~/.hermes/.env に書き、ログインの関門を有効にする方法を表示します。あらかじめログインしておく必要があります(hermes setup)。

オプション 説明
--name ダッシュボードの分かりやすい名前(既定は自動で作られます)。
--redirect-uri 公開の HTTPS の OAuth のリダイレクト先(例: https://hermes.example.com/auth/callback)。手元だけで使うなら省いてください。
--portal-url 登録に使う Nous Portal のベース URL を上書きします(既定はログインしたポータル)。HERMES_DASHBOARD_PORTAL_URL でも設定できます。
# Default — opens browser to http://127.0.0.1:9119
hermes dashboard

# Custom port, no browser
hermes dashboard --port 8080 --no-open

# From a profile alias — routes to the machine dashboard with the
# profile preselected in the sidebar switcher (attach if running)
worker dashboard

hermes profile

hermes profile <subcommand>

プロファイル(設定、セッション、スキル、ホーム ディレクトリをそれぞれ別に持つ、互いに独立した複数の Hermes)を管理します。

サブコマンド 説明
list すべてのプロファイルを一覧します。
use <name> 既定で使うプロファイルを決めます。
create <name> [--clone] [--clone-all] [--clone-from <source>] [--no-alias] 新しいプロファイルを作ります。--clone は、使っているプロファイルから設定、.envSOUL.md、スキルを写します。--clone-all は状態をすべて写します。--clone-from は写す元を指定し、--clone-all と一緒でなければ設定の複製を意味します。
delete <name> [-y] プロファイルを消します。
show <name> プロファイルの詳細(ホーム ディレクトリ、設定など)を表示します。
alias <name> [--remove] [--name NAME] プロファイルへ手早く入るためのラッパーのスクリプトを管理します。
rename <old> <new> プロファイルの名前を変えます。
export <name> [-o FILE] プロファイルを .tar.gz の書庫に書き出します(手元での控え)。
import <archive> [--name NAME] .tar.gz の書庫からプロファイルを取り込みます(手元での復元)。
install <source> [--name N] [--alias] [--force] [-y] git の URL か手元のディレクトリから、配布されたプロファイルを導入します。
update <name> [--force-config] [-y] 配布されたプロファイルを取り直します。ユーザーのデータ(記憶、セッション、認証)は残ります。
info <name> プロファイルの配布のマニフェスト(版、必要なもの、入手元)を表示します。

例:

hermes profile list
hermes profile create work --clone
hermes profile use work
hermes profile alias work --name h-work
hermes profile export work -o work-backup.tar.gz
hermes profile import work-backup.tar.gz --name restored
hermes profile install github.com/user/my-distro --alias
hermes profile update work
hermes -p work chat -q "Hello from work profile"

hermes completion

hermes completion [bash|zsh|fish]

シェルの補完スクリプトを標準出力に出します。シェルの設定でこの出力を読み込めば、Hermes のコマンド、サブコマンド、プロファイル名を Tab キーで補完できます。

例:

# Bash
hermes completion bash >> ~/.bashrc

# Zsh
hermes completion zsh >> ~/.zshrc

# Fish
hermes completion fish > ~/.config/fish/completions/hermes.fish

hermes update

hermes update [--gateway] [--check] [--plan] [--no-backup] [--backup] [--yes]

hermes-agent の最新のコードを取得し、管理下の仮想環境に依存関係を入れ直したうえで、導入後の処理(MCP サーバー、スキルの同期、補完の導入)をやり直します。動いている環境でも安全に実行できます。導入せずに、自分の手元が origin/main より遅れているかを見たいときは --check を使ってください。

hermes update は設定された更新用のブランチ(既定: main)を取得します。別のブランチにいる場合、Hermes が取得の前に更新用のブランチへ切り替えることがあります。ブランチでの作業を更新時の自動退避の流れの外に置いておきたいときは、更新の前にコミットしてください。

オプション 説明
--gateway メッセージングの /update が使う内部向けのモードです。端末の標準入力ではなく、ファイル経由のやり取りで確認と進み具合を伝えます。ゲートウェイの再起動を指示するものではありません。
--check 取得も、依存関係の導入も、再起動もせずに、更新があるかどうかだけを調べます。
--plan 何も変えずに更新の計画を表示して終了します。導入の種類(git / Docker / Nix / apt)、すべてのプロファイルで動いている Hermes のサービスとその監視役・動いているコードの版、そしてそれぞれをどう再起動するかが出ます。イメージやパッケージで管理している導入では、代わりに正しい外部の更新コマンドを知らせます。読み取りだけです。
--no-backup updates.pre_update_backup の設定にかかわらず、この実行では更新前の控え(手早い状態のスナップショットと全体の zip の両方)を取りません。
--backup この実行では更新前に全体の控えを取ります。手早い状態のスナップショットに加えて、HERMES_HOME(設定、認証、セッション、スキル、紐づけの情報)の完全な zip を作ります。既定は quick で、軽い状態のスナップショットだけです。恒久的な設定は config.yaml の `updates.pre_update_backup: quick full off` で決めます。
--yes-y 設定の移行や退避したものの復元といった確認に、すべて「はい」と答えます。API キーの入力は飛ばされるので、それらは hermes config migrate を別に実行してください。

そのほかの動き:

  • ゲートウェイの再起動。 更新に成功すると、新しいコードを使うために、Hermes は動いているすべてのゲートウェイのプロファイルを自動で再起動しようとします。更新せずにゲートウェイだけ再起動したいときは hermes gateway restart を使ってください。
  • 再起動の段の立て直し。 取得したばかりのツリーを読み込む途中で再起動の段が止まった場合、監視下のゲートウェイのプロファイルはきれいな Python のプロセスでやり直されます。systemd(systemctl --user is-active)が独立に確かめた再起動だけが「確認済み」として報告され、単に 0 で終わっただけの立て直しは relaunch_attempted として記録され、更新は安全側に倒して失敗になります。手動で動かしているゲートウェイや serve / dashboard の実行は、立て直す権限がない限り決して止めません。理由つきで飛ばしたと記録され、正確な再起動のコマンドとともに未完了の報告に残ります。
  • 更新の控えと全台の版の確認。 実行のたびに、機械が読める控えが ~/.hermes/logs/update_receipts/ に書かれます(更新前の全体の計画、手順、飛ばした理由、再起動の結果。latest.json がいちばん新しいものを指します)。再起動の段のあと、動いている各ゲートウェイのコードを更新後のツリーと突き合わせ、プロファイルごとの版の表を出します。更新前のコードのままのゲートウェイがあれば、正確な再起動のコマンドとともに更新は失敗(終了コード 1)になります。
  • 手元のソースの変更。 git での導入では、追跡しているファイルの変更と追跡していないファイルが、ブランチの切り替えや取得の前に自動で退避されます(git stash push --include-untracked)。対話的な端末での更新では、戻すかどうかを尋ねます。対話がない更新では既定で戻します。取得に成功したあと手元のソースの変更を捨ててよい管理下の導入でだけ、updates.non_interactive_local_changes: discard を設定してください。戻すときにぶつかった場合や取得に失敗した場合は、手で回収できるよう退避したまま残します。
  • npm のロック ファイルの揺れ。 退避やブランチの切り替えの前に、Hermes は npm の導入・組み立てで生じた package-lock.json の差分をできる範囲で片付けます。意図して変えたロック ファイルは、hermes update の前にコミットするか自分で退避してください。
  • 紐づけ情報のスナップショット。 --backup を付けていなくても、hermes updategit pull の前に ~/.hermes/pairing/ と Feishu のコメントの規則の軽いスナップショットを取ります。編集中のファイルが取得で書き換わってしまったときは、hermes backup restore --state pre-update で戻せます。
  • 古い hermes.service の注意。 名前を変える前の hermes.service の systemd のユニット(いまの hermes-gateway.service ではないもの)を見つけると、行き来を繰り返す問題を避けるために移行の案内を一度だけ表示します。
  • 終了コード。 成功なら 0、取得・導入・導入後の処理のエラーなら 1git pull を妨げる予期しない作業ツリーの変更があれば 2 です。

保守のコマンド

コマンド 説明
hermes --version 版の情報を表示します。
hermes update 最新の変更を取得して依存関係を入れ直します。

| hermes uninstall [--full] [--gui] [--dry-run] [--yes] | Hermes を取り除きます。必要なら設定とデータもすべて消します。--gui はデスクトップのチャットの画面だけを取り除き、エージェントはそのまま残します。--full は設定とデータも消します。--dry-run は何も変えずに、消される対象を表示します。--yes は確認を省きます。 |

関連ページ