Hermes Agent Wiki 非公式・日本語wiki

環境変数の早見表

目次

Hermes は環境変数をプロセスの環境から読み、自分で管理する秘密の情報については ~/.hermes/.env からも読みます。API キー、ボットのトークン、OAuth の秘密鍵といった認証情報は .env に置いてください。秘密ではない動作の設定は、対応する設定キーがあるなら config.yaml のほうが向いています。以下の変数の中には、そのプロセスかぎりの上書きや内部的な橋渡し用のものもあります。ここに載っているというだけで .env に書き込まないでください。

LLM プロバイダー

変数 説明
OPENROUTER_API_KEY OpenRouter の API キー(融通が利くのでおすすめです)
OPENROUTER_BASE_URL OpenRouter 互換のベース URL を上書きします
FIREWORKS_API_KEY Fireworks AI の API キー(app.fireworks.ai)。エンドポイントの上書きは config.yamlmodel.base_url で設定します。
HERMES_OPENROUTER_CACHE OpenRouter の応答キャッシュを有効にします(1/true/yes/on)。config.yaml の openrouter.response_cache より優先されます。Response Caching を参照してください。
HERMES_OPENROUTER_CACHE_TTL キャッシュの保持時間を秒で指定します(1〜86400)。config.yaml の openrouter.response_cache_ttl より優先されます。
NOUS_BASE_URL Nous Portal のベース URL を上書きします(ふだんは不要で、開発や試験のときだけ使います)
NOUS_INFERENCE_BASE_URL Nous の推論エンドポイントを直接上書きします
AI_GATEWAY_API_KEY Vercel AI Gateway の API キー(ai-gateway.vercel.sh
AI_GATEWAY_BASE_URL AI Gateway のベース URL を上書きします(既定: https://ai-gateway.vercel.sh/v1
OPENAI_API_KEY OpenAI 互換の独自エンドポイント向けの API キー(OPENAI_BASE_URL と一緒に使います)
OPENAI_BASE_URL 独自エンドポイント(VLLM、SGLang など)のベース URL
LM_API_KEY LM Studio(lmstudio プロバイダー)の API キー。手元のサーバー向けには形だけの値で済むことが多いです
LM_BASE_URL LM Studio のベース URL(既定: http://localhost:1234/v1
COPILOT_GITHUB_TOKEN Copilot API 向けの GitHub トークン。最優先で読まれます(OAuth の gho_* か、細かい権限設定ができる github_pat_*。従来型の ghp_*使えません
GH_TOKEN GitHub のトークン。Copilot では 2 番目に読まれます(gh CLI も使います)
GITHUB_TOKEN GitHub のトークン。Copilot では 3 番目に読まれます
HERMES_COPILOT_ACP_COMMAND Copilot ACP の CLI 実行ファイルのパスを上書きします(既定: copilot
COPILOT_CLI_PATH HERMES_COPILOT_ACP_COMMAND の別名
HERMES_COPILOT_ACP_ARGS Copilot ACP に渡す引数を上書きします(既定: --acp --stdio
COPILOT_ACP_BASE_URL Copilot ACP のベース URL を上書きします
COPILOT_API_BASE_URL Copilot API(copilot プロバイダー)のベース URL を上書きします
GLM_API_KEY z.ai / ZhipuAI GLM の API キー(z.ai
ZAI_API_KEY GLM_API_KEY の別名
Z_AI_API_KEY GLM_API_KEY の別名
GLM_BASE_URL z.ai のベース URL を上書きします(既定: https://api.z.ai/api/paas/v4
KIMI_API_KEY Kimi / Moonshot AI の API キー(moonshot.ai
KIMI_CODING_API_KEY kimi-coding プロバイダー向けの別名キー(KIMI_API_KEY と併せて受け付けます)
KIMI_BASE_URL Kimi のベース URL を上書きします(既定: https://api.moonshot.ai/v1
KIMI_CN_API_KEY Kimi / Moonshot 中国版の API キー(moonshot.cn
ARCEEAI_API_KEY Arcee AI の API キー(chat.arcee.ai
ARCEE_BASE_URL Arcee のベース URL を上書きします(既定: https://api.arcee.ai/api/v1
GMI_API_KEY GMI Cloud の API キー(gmicloud.ai
GMI_BASE_URL GMI Cloud のベース URL を上書きします(既定: https://api.gmi-serving.com/v1
ACTUAL_API_KEY Actual Computer の推論キー(ac_...actual.inc/user/keys)。手元で動かすデーモンには不要です。
ACTUAL_BASE_URL Actual Computer のベース URL を上書きします(既定: https://api.actual.inc/v1)。手元でオフラインのデーモンを使うなら http://127.0.0.1:8080 にします。ループバックのホストなら API キーは要りません。
MINIMAX_API_KEY MiniMax の API キー(世界向けエンドポイント、minimax.io)。minimax-oauth では使いません(OAuth の経路はブラウザーでのログインを使います)。
MINIMAX_BASE_URL MiniMax のベース URL を上書きします(既定: https://api.minimax.io/anthropic。Hermes は MiniMax の Anthropic Messages 互換エンドポイントを使います)。minimax-oauth では使いません
MINIMAX_CN_API_KEY MiniMax の API キー(中国向けエンドポイント、minimaxi.com)。minimax-oauth では使いません(OAuth の経路はブラウザーでのログインを使います)。
MINIMAX_CN_BASE_URL MiniMax 中国版のベース URL を上書きします(既定: https://api.minimaxi.com/anthropic)。minimax-oauth では使いません
KILOCODE_API_KEY Kilo Code の API キー(kilo.ai
KILOCODE_BASE_URL Kilo Code のベース URL を上書きします(既定: https://api.kilo.ai/api/gateway
XIAOMI_API_KEY Xiaomi MiMo の API キー(platform.xiaomimimo.com
XIAOMI_BASE_URL Xiaomi MiMo のベース URL を上書きします(既定: https://api.xiaomimimo.com/v1
UPSTAGE_API_KEY Solar モデル向けの Upstage の API キー(console.upstage.ai
UPSTAGE_BASE_URL Upstage のベース URL を上書きします(既定: https://api.upstage.ai/v1
TOKENHUB_API_KEY Tencent TokenHub の API キー(tokenhub.tencentmaas.com
TOKENHUB_BASE_URL Tencent TokenHub のベース URL を上書きします(既定: https://tokenhub.tencentmaas.com/v1
TOKENPLAN_API_KEY Tencent TokenPlan の API キー(LKEAP。Anthropic Messages のエンドポイント)
TOKENPLAN_BASE_URL Tencent TokenPlan のベース URL を上書きします(既定: https://api.lkeap.cloud.tencent.com/plan/anthropic
AZURE_FOUNDRY_API_KEY Microsoft Foundry / Azure OpenAI の API キー(ai.azure.com)。model.auth_mode: entra_id のときは不要です
AZURE_FOUNDRY_BASE_URL Microsoft Foundry のエンドポイント URL(OpenAI 形式なら https://<resource>.openai.azure.com/openai/v1、Anthropic 形式なら https://<resource>.services.ai.azure.com/anthropic のように書きます)
AZURE_ANTHROPIC_KEY provider: anthropic と、Microsoft Foundry の Claude デプロイを指す base_url の組み合わせで使う Azure Anthropic の API キー(Anthropic と Azure Anthropic の両方を設定しているときに ANTHROPIC_API_KEY の代わりに使えます)
AZURE_TENANT_ID Entra ID のテナント ID(サービス プリンシパルの流れで使い、model.auth_mode: entra_id のとき azure-identity が読みます)
AZURE_CLIENT_ID Entra ID のクライアント ID(サービス プリンシパル、ワークロード ID、ユーザー割り当てのマネージド ID)
AZURE_CLIENT_SECRET EnvironmentCredential が使うサービス プリンシパルの秘密鍵
AZURE_CLIENT_CERTIFICATE_PATH サービス プリンシパルの証明書(AZURE_CLIENT_SECRET の代わりに使えます)
AZURE_FEDERATED_TOKEN_FILE AKS ワークロード ID や OIDC の流れで使うフェデレーション トークンのファイル パス
AZURE_AUTHORITY_HOST 各国向けクラウドの認証局を上書きします(Azure Government なら https://login.microsoftonline.us など)。Azure Foundry ガイド を参照してください
IDENTITY_ENDPOINT / MSI_ENDPOINT App Service、Functions、Container Apps でのマネージド ID のエンドポイント。仮想マシンはたいてい IMDS を使うので、これらは設定しません
HF_TOKEN Inference Providers 向けの Hugging Face のトークン(huggingface.co/settings/tokens
HF_BASE_URL Hugging Face のベース URL を上書きします(既定: https://router.huggingface.co/v1
GOOGLE_API_KEY Google AI Studio の API キー(aistudio.google.com/app/apikey
GEMINI_API_KEY GOOGLE_API_KEY の別名
GEMINI_BASE_URL Google AI Studio のベース URL を上書きします
VERTEX_CREDENTIALS_PATH Vertex AI(Gemini)向けの Google Cloud サービス アカウント JSON のパス。Vertex は固定の API キーではなく OAuth2 を使います。見つからないときは GOOGLE_APPLICATION_CREDENTIALS、さらに ADC(gcloud auth application-default login)の順に探します。プロジェクトとリージョンは config.yamlvertex: の下に書きます
ANTHROPIC_API_KEY Anthropic Console の API キー(console.anthropic.com
ANTHROPIC_BASE_URL Anthropic API のベース URL を上書きします
ANTHROPIC_TOKEN Anthropic の OAuth / セットアップ トークンを手動または従来の形で上書きします
DASHSCOPE_API_KEY Qwen のモデル向けの Qwen Cloud(Alibaba DashScope)の API キー(modelstudio.console.alibabacloud.com
DASHSCOPE_BASE_URL DashScope のベース URL を自分で指定します(既定: https://dashscope-intl.aliyuncs.com/compatible-mode/v1。中国本土のリージョンでは https://dashscope.aliyuncs.com/compatible-mode/v1 を使います)
ALIBABA_CODING_PLAN_API_KEY Qwen Coding Plan の API キー(alibaba-coding-plan プロバイダー)
ALIBABA_CODING_PLAN_BASE_URL Qwen Coding Plan のベース URL を上書きします
DEEPSEEK_API_KEY DeepSeek に直接つなぐための API キー(platform.deepseek.com
DEEPSEEK_BASE_URL DeepSeek API のベース URL を自分で指定します
DEEPINFRA_API_KEY DeepInfra の API キー(deepinfra.com
DEEPINFRA_BASE_URL DeepInfra のベース URL の上書き
NOVITA_API_KEY NovitaAI の API キー。Model API、Agent Sandbox、GPU Cloud を備えた AI 向けクラウドです(novita.ai/settings/key-management
NOVITA_BASE_URL NovitaAI のベース URL を上書きします(既定: https://api.novita.ai/openai/v1
RAMP_ROUTER_API_KEY Ramp Router の API キー(app.router.com/keys)。別名の ROUTER_API_KEY も使えます
RAMP_ROUTER_BASE_URL Ramp Router のベース URL を上書きします(既定: https://api.router.com/v1
NEBIUS_API_KEY Nebius Token Factory の API キー(tokenfactory.nebius.com)。NEBIUS_TOKEN_FACTORY_API_KEY も使えます
NEBIUS_BASE_URL Nebius Token Factory のベース URL を上書きします(既定: https://api.tokenfactory.nebius.com/v1
NVIDIA_API_KEY NVIDIA NIM の API キー。Nemotron や公開モデル向けです(build.nvidia.com
NVIDIA_BASE_URL NVIDIA のベース URL を上書きします(既定: https://integrate.api.nvidia.com/v1。手元の NIM エンドポイントを使うなら http://localhost:8000/v1
STEPFUN_API_KEY StepFun の API キー。Step 系のモデル向けです(platform.stepfun.com
STEPFUN_BASE_URL StepFun のベース URL を上書きします(既定: https://api.stepfun.com/v1
OLLAMA_API_KEY Ollama Cloud の API キー。手元に GPU がなくても Ollama のモデル群を使えます(ollama.com/settings/keys
OLLAMA_BASE_URL Ollama Cloud のベース URL を上書きします(既定: https://ollama.com/v1
XAI_API_KEY xAI(Grok)の API キー。チャット、読み上げ、ウェブ検索に使います(console.x.ai
XAI_BASE_URL xAI のベース URL を上書きします(既定: https://api.x.ai/v1
MISTRAL_API_KEY Voxtral の読み上げと文字起こし向けの Mistral の API キー(console.mistral.ai
AWS_REGION Bedrock で推論するときの AWS リージョン(us-east-1eu-central-1 など)。boto3 が読みます。
AWS_PROFILE Bedrock の認証に使う AWS の名前付きプロファイル(~/.aws/credentials を読みます)。設定しなければ boto3 の既定の認証の流れを使います。
BEDROCK_BASE_URL Bedrock ランタイムのベース URL を上書きします(既定: https://bedrock-runtime.us-east-1.amazonaws.com。ふだんは設定せず AWS_REGION を使ってください)
HERMES_QWEN_BASE_URL Qwen Portal のベース URL の上書き(既定: https://portal.qwen.ai/v1
OPENCODE_ZEN_API_KEY OpenCode Zen の API キー。選りすぐりのモデルを従量課金で使えます(opencode.ai
OPENCODE_ZEN_BASE_URL OpenCode Zen のベース URL を上書きします
OPENCODE_GO_API_KEY OpenCode Go の API キー。公開モデルを月額 10 ドルで使えます(opencode.ai
OPENCODE_GO_BASE_URL OpenCode Go のベース URL を上書きします
CLAUDE_CODE_OAUTH_TOKEN 自分で書き出した Claude Code のトークンを明示的に指定します
HERMES_MODEL プロセス単位でモデル名を上書きします(cron のスケジューラーが使います。ふだんは config.yaml を使ってください)
VOICE_TOOLS_OPENAI_KEY OpenAI の文字起こしと読み上げで優先して使う OpenAI のキー
HERMES_LOCAL_STT_COMMAND 手元で文字起こしをするコマンドのひな形(任意)。{input_path}{output_dir}{language}{model} を埋め込めます
HERMES_LOCAL_STT_LANGUAGE 文字起こしの既定の言語の手がかり。local(faster-whisper)プロバイダー、HERMES_LOCAL_STT_COMMAND、手元の whisper CLI への切り替え(既定: en)、Groq、xAI が、config.yaml にプロバイダーごとの language がないときに使います
HERMES_HOME Hermes の設定ディレクトリを上書きします(既定: ~/.hermes)。ゲートウェイの PID ファイルと systemd のサービス名もこれに合わせて分かれるので、複数のインストールを同時に動かせます
HERMES_GIT_BASH_PATH Windows 専用。 ターミナル ツールが使う bash.exe の探索先を上書きします。Git for Windows の完全な導入、シンボリック リンク経由の WSL の bash、MSYS2、Cygwin など、どの bash でも指せます。インストーラーが用意した PortableGit を自動で設定します。Windows(ネイティブ)ガイド を参照してください
HERMES_DISABLE_WINDOWS_UTF8 Windows 専用。 1 にすると UTF-8 の入出力の下ごしらえ(configure_windows_stdio())を無効にして、コンソールのロケールのコード ページに戻します。文字化けの原因を切り分けるときには役立ちますが、ふだんの運用で正解になることはまずありません
HERMES_KANBAN_HOME かんばんの土台になる Hermes の共有ルート(データベース、ワークスペース、ワーカーのログ)を上書きします。指定がなければ get_default_hermes_root()(作業中のプロファイルの親)を使います。テストや変わった構成のときに便利です
HERMES_KANBAN_BOARD このプロセスで使うかんばんのボードを固定します。~/.hermes/kanban/current より優先されます。ディスパッチャーがワーカーのサブプロセスの環境にも入れるので、ワーカーは仕組みのうえで別のボードの作業を見られません。既定は default です。名前の決まりは、小文字の英数字とハイフンとアンダースコアで 1〜64 文字です
HERMES_KANBAN_DB かんばんのデータベース ファイルのパスを直接固定します(最優先で、HERMES_KANBAN_BOARDHERMES_KANBAN_HOME より強いです)。ディスパッチャーがワーカーのサブプロセスの環境にも入れるので、プロファイルのワーカーはディスパッチャーのボードに揃います
HERMES_KANBAN_WORKSPACES_ROOT かんばんのワークスペースのルートを直接固定します(ワークスペースについては最優先で、HERMES_KANBAN_HOME より強いです)。ディスパッチャーがワーカーのサブプロセスの環境にも入れます
HERMES_KANBAN_DISPATCH_IN_GATEWAY kanban.dispatch_in_gateway を実行時に上書きします。0falsenooff のいずれかにすると、ゲートウェイが内蔵のかんばんディスパッチャーを起動しなくなります。それ以外の空でない値なら有効です。別のディスパッチャーのプロセスがボードを受け持つときに便利です。

プロバイダーの認証(OAuth)

Anthropic の標準の認証については、Claude Code 自身の認証ファイルがあればそちらを優先します。自動で更新できるからです。Anthropic に対する OAuth には、追加の利用クレジットを購入した Claude Max プランが必要です。 Hermes は Claude Code として経路を通すので、Max プランの基本枠ではなく追加分・超過分のクレジットだけを使い、Claude Pro では動きません。Max と追加クレジットがない場合は API キーを使ってください。ANTHROPIC_TOKEN のような環境変数は手動での上書きとして今も使えますが、Claude Max でログインするときの主な経路ではなくなりました。

変数 説明
HERMES_PORTAL_BASE_URL Nous Portal の URL を上書きします(開発や試験のため)
NOUS_INFERENCE_BASE_URL Nous の推論 API の URL を上書きします
HERMES_NOUS_MIN_KEY_TTL_SECONDS エージェント キーを作り直すまでの最短の残り時間(既定: 1800 = 30 分)
HERMES_NOUS_TIMEOUT_SECONDS Nous の認証情報やトークンのやり取りでの HTTP のタイムアウト
HERMES_DUMP_REQUESTS API リクエストの中身をログ ファイルに書き出します(true/false
HERMES_PREFILL_MESSAGES_FILE API を呼ぶ時点で差し込む、その場かぎりの前置きメッセージを収めた JSON ファイルのパス
HERMES_TIMEZONE IANA のタイムゾーンで上書きします(たとえば America/New_York

ツールの API

変数 説明
PARALLEL_API_KEY AI 向けのウェブ検索(parallel.ai
FIRECRAWL_API_KEY ウェブの取り込みとクラウドのブラウザー(firecrawl.dev
FIRECRAWL_API_URL 自前で立てた Firecrawl のエンドポイントを指定します(任意)
TAVILY_API_KEY 検索や抽出の上限を上げるための Tavily の API キー(任意)。ウェブのバックエンドに Tavily を選んだあとは、キーなしでも使えます(app.tavily.comキーなしの説明
SEARXNG_URL 自前で立てて無料で使えるウェブ検索、SearXNG のインスタンスの URL。API キーは不要です(searxng.github.io
TAVILY_BASE_URL Tavily の API のエンドポイントを上書きします。社内のプロキシや、自前で立てた Tavily 互換の検索バックエンドに向けるときに使います。GROQ_BASE_URL と同じ考え方です。
EXA_API_KEY AI 向けのウェブ検索と本文取得のための Exa の API キー(exa.ai
BRAVE_SEARCH_API_KEY ウェブ検索向けの Brave Search API の購読トークン(無料枠あり)(brave.com/search/api
BROWSERBASE_API_KEY ブラウザーの自動操作(browserbase.com
BROWSERBASE_PROJECT_ID Browserbase のプロジェクト ID
BROWSER_USE_API_KEY Browser Use のクラウド ブラウザーの API キー(browser-use.com
FIRECRAWL_BROWSER_TTL Firecrawl のブラウザー セッションの保持時間を秒で指定します(既定: 300)
BROWSER_CDP_URL 手元のブラウザー向けの Chrome DevTools Protocol の URL(/browser connect で設定します。例: ws://localhost:9222
CAMOFOX_URL 検知回避用のローカル ブラウザー サーバー Camofox のアドレス(既定: http://localhost:9377)。あくまでアドレスの指定で、これだけでは Camofox がバックエンドになりません。hermes tools で Camofox を選んでください(browser.cloud_provider: camofox
CAMOFOX_API_KEY 遠隔や認証つきの Camofox サーバーに Authorization ヘッダーで送るベアラー トークン(任意)
CAMOFOX_USER_ID 共有の可視セッション向けに、外部で管理する Camofox のユーザー ID(任意)
CAMOFOX_SESSION_KEY CAMOFOX_USER_ID 向けにタブを作るときに使う Camofox のセッション キー(任意)
CAMOFOX_ADOPT_EXISTING_TAB true にすると、新しいタブを作る前に既存の Camofox のタブを使い回します
BROWSER_INACTIVITY_TIMEOUT ブラウザー セッションが無操作のまま切れるまでの秒数
AGENT_BROWSER_ARGS Chromium を起動するときの追加のフラグ(カンマ区切りか改行区切り)。root で動かしているとき、あるいは AppArmor で制限された非特権ユーザー名前空間(Ubuntu 23.10 以降、DGX Spark、多くのコンテナー イメージ)では、Hermes が --no-sandbox,--disable-dev-shm-usage を自動で足します。上書きしたいときや、別のフラグを足したいときだけ自分で設定してください。
AGENT_BROWSER_ENGINE 手元で動かすときのブラウザー エンジン。auto(既定 — CDP 経由の Chromium 系)か、特定のエンジンの指定です。
FAL_KEY 画像生成(fal.ai
KREA_API_KEY Krea 2 での画像生成に使う Krea の API キー(krea.ai
GROQ_API_KEY Groq の Whisper で文字起こしをするための API キー(groq.com
ELEVENLABS_API_KEY ElevenLabs の高品質な読み上げ音声(elevenlabs.io
PORCUPINE_ACCESS_KEY Picovoice Porcupine の呼びかけ検出エンジン(console.picovoice.ai)。wake_word.provider: porcupine のときだけ必要で、既定の openWakeWord と sherpa にはキーが要りません
STT_GROQ_MODEL Groq の文字起こしモデルを上書きします(既定: whisper-large-v3-turbo
GROQ_BASE_URL Groq の OpenAI 互換の文字起こしエンドポイントを上書きします
STT_OPENAI_MODEL OpenAI の文字起こしモデルを上書きします(既定: whisper-1
STT_OPENAI_BASE_URL OpenAI 互換の文字起こしエンドポイントを上書きします
GITHUB_TOKEN Skills Hub 向けの GitHub のトークン(API の上限が上がり、スキルを公開できます)
HONCHO_API_KEY セッションをまたいだ利用者像の把握(honcho.dev
HONCHO_BASE_URL 自前で立てた Honcho のベース URL(既定は Honcho のクラウド)。手元のインスタンスには API キーが要りません
HINDSIGHT_API_KEY グラフを踏まえた永続的な記憶のための Hindsight の API キー(hindsight.vectorize.io
HINDSIGHT_API_URL Hindsight API のベース URL(既定: https://api.hindsight.vectorize.io
HINDSIGHT_TIMEOUT Hindsight を記憶の提供元として呼ぶときのタイムアウトを秒で指定します(既定: 60)。/syncon_session_switch のときに Hindsight の応答が遅く、errors.log にタイムアウトが出るなら増やしてください。
MEM0_API_KEY 意味を踏まえた永続的な記憶のための Mem0 Platform の API キー(app.mem0.ai
MEM0_MODE Mem0 のバックエンドの動かし方。platform(既定)か oss です。記憶の提供元 を参照してください
MEM0_HOST 自前で立てた Mem0 サーバーのベース URL(プラグインが Platform API を使わなくなります)
MEM0_USER_ID Mem0 の記憶を保存するときのユーザー ID を上書きします
MEM0_AGENT_ID Mem0 の記憶に付けるエージェント ID を上書きします
RETAINDB_API_KEY 永続的な記憶のための RetainDB の API キー(retaindb.com
RETAINDB_BASE_URL 自前で立てた RetainDB のベース URL(既定: https://api.retaindb.com
OPENVIKING_API_KEY OpenViking の API キー(手元での開発モードでは空のままで構いません)
OPENVIKING_ENDPOINT OpenViking のサーバー URL(既定: http://127.0.0.1:1933
BRV_API_KEY ByteRover の API キー(任意。クラウド同期用で、既定では手元優先です)(app.byterover.dev
SUPERMEMORY_API_KEY 利用者像の呼び出しとセッションの取り込みを備えた、意味を踏まえた長期記憶(supermemory.ai
DAYTONA_API_KEY Daytona のクラウド サンドボックス(daytona.io
VERCEL_TOKEN Vercel Sandbox のアクセス トークン(vercel.com
VERCEL_PROJECT_ID Vercel のプロジェクト ID(VERCEL_TOKEN と一緒に必要です)
VERCEL_TEAM_ID Vercel のチーム ID(VERCEL_TOKEN と一緒に必要です)
VERCEL_OIDC_TOKEN Vercel の短命な OIDC トークン(開発時のみの代替手段)

スキルの API キー

同梱や任意導入のスキルが使う秘密の情報です。対応するスキルを使うときだけ必要になります。

変数 使うスキル 説明
NOTION_API_KEY notion Notion の連携トークン。
LINEAR_API_KEY linear Linear の個人用 API キー。
AIRTABLE_API_KEY airtable Airtable の個人用アクセス トークン。
TENOR_API_KEY gif-search GIF を検索するための Tenor の API キー。

Langfuse による可観測性

同梱の observability/langfuse プラグイン向けの環境変数です。~/.hermes/.env に書きます。これらが効くには、プラグイン自体を有効にしておく必要もあります(hermes plugins enable observability/langfuse を実行するか、hermes plugins でチェックを入れます)。

変数 説明
HERMES_LANGFUSE_PUBLIC_KEY Langfuse プロジェクトの公開キー(pk-lf-...)。必須です。
HERMES_LANGFUSE_SECRET_KEY Langfuse プロジェクトの秘密キー(sk-lf-...)。必須です。
HERMES_LANGFUSE_BASE_URL Langfuse サーバーの URL(既定: https://cloud.langfuse.com)。自前で立てたときに設定します。
HERMES_LANGFUSE_ENV トレースに付ける環境のタグ(productionstaging、…)
HERMES_LANGFUSE_RELEASE トレースに付けるリリースや版のタグ
HERMES_LANGFUSE_SAMPLE_RATE SDK の採取率 0.0〜1.0(既定: 1.0
HERMES_LANGFUSE_MAX_CHARS 直列化した中身の、項目ごとの切り詰め文字数(既定: 12000
HERMES_LANGFUSE_DEBUG true にすると、プラグインの詳しいログを agent.log に出します
LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY / LANGFUSE_BASE_URL Langfuse SDK の標準の名前です。対応する HERMES_LANGFUSE_* が設定されていないときの代わりとして受け付けます。

Nous Tool Gateway

有料の Nous 契約者や、自前で立てたゲートウェイのために Tool Gateway を設定する変数です。ほとんどの人は設定する必要がありません。ゲートウェイは hermes modelhermes tools から自動で設定されます。

変数 説明
TOOL_GATEWAY_DOMAIN Tool Gateway の経路のベース ドメイン(既定: nousresearch.com
TOOL_GATEWAY_SCHEME ゲートウェイの URL の HTTP / HTTPS の別(既定: https
TOOL_GATEWAY_USER_TOKEN Tool Gateway 向けの認証トークン(ふだんは Nous の認証から自動で入ります)
FIRECRAWL_GATEWAY_URL Firecrawl のゲートウェイのエンドポイントだけを上書きする URL

ターミナルのバックエンド

変数 説明
TERMINAL_ENV バックエンド: localdockersshsingularitymodaldaytonavercel_sandbox
HERMES_DOCKER_BINARY Hermes が呼び出すコンテナーの実行ファイルを指定します(podman/usr/local/bin/docker など)。設定しなければ、PATH から dockerpodman を自動で探します。両方入っていて既定でないほうを使いたいときや、実行ファイルが PATH の外にあるときに必要です。
TERMINAL_DOCKER_IMAGE Docker のイメージ(既定: nikolaik/python-nodejs:python3.11-nodejs20
TERMINAL_DOCKER_FORWARD_ENV Docker のターミナル セッションに明示的に渡す環境変数名の JSON 配列。なお、スキルが宣言した required_environment_variables は自動で渡されるので、どのスキルも宣言していない変数のときだけ必要です。
TERMINAL_DOCKER_VOLUMES Docker のボリュームを追加でマウントします(host:container の組をカンマ区切りで)
TERMINAL_DOCKER_ENV Docker のターミナル セッションの中で設定する追加の環境変数の JSON オブジェクト(例: {"FOO":"bar"}
TERMINAL_DOCKER_EXTRA_ARGS docker run に足す引数の JSON 配列(例: ["--memory","4g"]
TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE 上級者向けの任意設定。起動時の作業ディレクトリを Docker の /workspace にマウントします(true/false、既定: false
TERMINAL_SINGULARITY_IMAGE Singularity のイメージ、または .sif のパス
TERMINAL_MODAL_IMAGE Modal のコンテナー イメージ
TERMINAL_DAYTONA_IMAGE Daytona のサンドボックス イメージ
TERMINAL_VERCEL_RUNTIME Vercel Sandbox のランタイム(node24node22python3.13
TERMINAL_TIMEOUT コマンドのタイムアウトを秒で指定します
TERMINAL_LIFETIME_SECONDS ターミナル セッションの寿命の上限を秒で指定します
TERMINAL_CWD ゲートウェイや cron のターミナル セッション向けの直接の上書き(非推奨)。config.yamlterminal.cwd を使ってください。CLI は今も起動したディレクトリを使います。
SUDO_PASSWORD 対話的な入力なしで sudo を使えるようにします

クラウドのサンドボックスをバックエンドにする場合、残るのはファイルの中身です。TERMINAL_LIFETIME_SECONDS は使われていないターミナル セッションを Hermes が片付けるまでの時間を決めるもので、あとから再開したときはサンドボックスが作り直され、動いていたプロセスがそのまま残るとは限りません。

SSH のバックエンド

変数 説明
TERMINAL_SSH_HOST 接続先サーバーのホスト名
TERMINAL_SSH_USER SSH のユーザー名
TERMINAL_SSH_PORT SSH のポート(既定: 22)
TERMINAL_SSH_KEY 秘密鍵のパス
TERMINAL_SSH_PERSISTENT SSH で常駐シェルを使うかを上書きします(既定: TERMINAL_PERSISTENT_SHELL に従います)

コンテナーの資源(Docker、Singularity、Modal、Daytona)

変数 説明
TERMINAL_CONTAINER_CPU CPU のコア数(既定: 1)
TERMINAL_CONTAINER_MEMORY メモリの MB 数(既定: 5120)
TERMINAL_CONTAINER_DISK ディスクの MB 数(既定: 51200)
TERMINAL_CONTAINER_PERSISTENT セッションをまたいでコンテナーの中身を残します(既定: true
TERMINAL_SANDBOX_DIR ワークスペースと重ね合わせを置くホスト側のディレクトリ(既定: ~/.hermes/sandboxes/

常駐シェル

変数 説明
TERMINAL_PERSISTENT_SHELL 手元以外のバックエンドで常駐シェルを有効にします(既定: true)。config.yaml の terminal.persistent_shell でも設定できます
TERMINAL_LOCAL_PERSISTENT 手元のバックエンドで常駐シェルを有効にします(既定: false
TERMINAL_SSH_PERSISTENT SSH のバックエンドで常駐シェルを使うかを上書きします(既定: TERMINAL_PERSISTENT_SHELL に従います)

送信プロキシ(サンドボックスに注入されます)

これらの環境変数はホスト側には設定されません。proxy.enabled: true のときに 送信プロキシ の仕組みが Docker のサンドボックスの中に注入します。この版で結線されているバックエンドは Docker だけです。

変数 説明
HERMES_EGRESS_PROXY 送信プロキシが動いているとき、サンドボックスの中で 1 になります。エージェント側のコードは、これを見れば TLS を解いて中継するプロキシの後ろで動いていると分かります。
プロバイダーの環境変数(OPENROUTER_API_KEYOPENAI_API_KEY、…) 本物の上流の秘密ではなく、意味を持たないプロキシ用のトークンが入ります。既存の SDK は標準の変数名をそのまま読み続けられます。iron-proxy がネットワークの境目で、そのトークンを本物の上流の秘密に差し替えます。
HERMES_PROXY_TOKEN_<ENV_NAME> 発行したプロバイダーごとの対応を確かめるための別名です。たとえば HERMES_PROXY_TOKEN_OPENROUTER_API_KEY=hermes-proxy-openrouter-… のようになります。値は標準のプロバイダー環境変数と同じトークンです。
HTTPS_PROXY / HTTP_PROXY HTTPS_PROXY は CONNECT と中継のために http://host.docker.internal:<tunnel_port> を指します。HTTP_PROXY は素の HTTP の転送のために <tunnel_port + 1> を指します。
NO_PROXY 127.0.0.1,localhost,::1 です。サンドボックスの中のループバックの開発サーバーはプロキシを通りません。
REQUESTS_CA_BUNDLE / SSL_CERT_FILE / CURL_CA_BUNDLE / NODE_EXTRA_CA_CERTS サンドボックスの中にマウントされた Hermes の送信用 CA 証明書のパス(/etc/ssl/certs/hermes-egress-ca.crt)です。各言語の実行環境が iron-proxy の作る証明書を信頼できるようになります。
NODE_OPTIONS --use-openssl-ca が足されます(もともとのフラグは残ります)。Node.js が、ほかの CA 関連の変数で制御している OpenSSL の証明書ストアを通るようになり、Node.js の CA の扱いの違いによる注意点 を小さくできます。
HERMES_IRON_PROXY_NONCE iron-proxy のデーモンのプロセス自体に設定されます(サンドボックスの中ではありません)。PID が使い回されても、候補の PID が *こちらが管理している* 実行ファイルを指しているかを _pid_alive が確かめるために使います。

これらは proxy.enabled: true かつデーモンが動いているときに、Docker のターミナル バックエンドが自動で設定します。自分で設定するものではありません。運用する側がいじるつまみは ~/.hermes/config.yamlproxy: の下にあります。送信プロキシ → 設定 を参照してください。

メッセージング

変数 説明
TELEGRAM_BOT_TOKEN Telegram のボット トークン(@BotFather から取得します)
TELEGRAM_ALLOWED_USERS ボットを使えるユーザー ID をカンマ区切りで並べます(1 対 1 の会話、グループ、フォーラムに適用されます)
TELEGRAM_ALLOW_ALL_USERS どの Telegram ユーザーでもボットを動かせるようにします(開発時のみ)。
TELEGRAM_GROUP_ALLOWED_USERS グループやフォーラムでだけ許可する送信者のユーザー ID をカンマ区切りで並べます(1 対 1 の会話の権限は与えません)。チャット ID の形(- で始まるもの)は、#17686 より前の設定との互換のためチャット ID として今も受け付けますが、非推奨の警告が出ます。
TELEGRAM_GROUP_ALLOWED_CHATS グループやフォーラムのチャット ID をカンマ区切りで並べます。そこのメンバー全員が許可されます
TELEGRAM_HOME_CHANNEL cron の配信先になる既定の Telegram のチャットやチャンネル
TELEGRAM_HOME_CHANNEL_NAME Telegram のホーム チャンネルの表示名
TELEGRAM_CRON_THREAD_ID cron の配信を受け取るフォーラムのトピック ID。cron についてだけ TELEGRAM_HOME_CHANNEL_THREAD_ID より優先されます。トピック モードで使うと、cron のメッセージへの返信がシステムのロビーではなく新しいセッションを開きます(#24409)。
TELEGRAM_WEBHOOK_URL webhook モード用の公開 HTTPS URL(ポーリングの代わりに webhook を使います)
TELEGRAM_WEBHOOK_PORT webhook サーバーが待ち受けるローカルのポート(既定: 8443
TELEGRAM_WEBHOOK_SECRET 検証のために Telegram が更新のたびに送り返す秘密のトークン。TELEGRAM_WEBHOOK_URL を設定したときは必須で、これがないとゲートウェイは起動を拒否します(GHSA-3vpc-7q5r-276h)。openssl rand -hex 32 で作ってください。
TELEGRAM_REACTIONS 処理中のメッセージに絵文字のリアクションを付けます(既定: false
TELEGRAM_REQUIRE_MENTION Telegram のグループで、返答する前にはっきりした呼びかけを求めます。config.yamltelegram.require_mention と同じです。
TELEGRAM_MENTION_PATTERNS Telegram のグループで呼びかけの判定を有効にしたときに受け付ける、呼びかけ語の正規表現。JSON 配列、改行区切り、カンマ区切りのいずれでも書けます。telegram.mention_patterns と同じです。
TELEGRAM_EXCLUSIVE_BOT_MENTIONS 有効にすると、Telegram のグループでの @...bot というはっきりした呼びかけは、返信や呼びかけ語の判定よりも先に、名指しされたボットにだけ届きます。既定: truetelegram.exclusive_bot_mentions と同じです。
TELEGRAM_REPLY_TO_MODE 返信の引用の付け方。offfirst(既定)、all です。Discord と同じ考え方です。
TELEGRAM_IGNORED_THREADS ボットが返答しない Telegram のフォーラムのトピックやスレッドの ID をカンマ区切りで並べます
TELEGRAM_PROXY Telegram への接続に使うプロキシ URL。HTTPS_PROXY より優先されます。http://https://socks5:// が使えます
DISCORD_BOT_TOKEN Discord のボット トークン
DISCORD_ALLOWED_USERS ボットを使える Discord のユーザー ID をカンマ区切りで並べます
DISCORD_ALLOW_ALL_USERS どの Discord ユーザーでもボットを動かせるようにします(開発時のみ)。
DISCORD_ALLOWED_ROLES ボットを使える Discord のロール ID をカンマ区切りで並べます(DISCORD_ALLOWED_USERS との OR 条件になります)。Members インテントが自動で有効になります。運営チームの入れ替わりが多いときに便利で、ロールを与えるだけで権限が伝わります。
DISCORD_ALLOWED_CHANNELS Discord のチャンネル ID をカンマ区切りで並べます。設定すると、ボットはこれらのチャンネル(と、許可されていれば 1 対 1 の会話)でだけ返答します。config.yamldiscord.allowed_channels より優先されます。
DISCORD_PROXY Discord への接続に使うプロキシ URL。HTTPS_PROXY より優先されます。http://https://socks5:// が使えます
DISCORD_HOME_CHANNEL cron の配信先になる既定の Discord のチャンネル
DISCORD_HOME_CHANNEL_NAME Discord のホーム チャンネルの表示名
DISCORD_COMMAND_SYNC_POLICY 起動時に Discord のスラッシュコマンドをどう同期するか。safe(差分を見て合わせる)、bulk(従来の tree.sync())、off です
DISCORD_REQUIRE_MENTION サーバーのチャンネルで、返答する前に @ での呼びかけを求めます
DISCORD_FREE_RESPONSE_CHANNELS 呼びかけが要らないチャンネル ID をカンマ区切りで並べます
DISCORD_AUTO_THREAD 対応している場所では、長い返答を自動でスレッドにします
DISCORD_ALLOW_ANY_ATTACHMENT true にすると、どんな種類のファイルの添付も受け取ります(組み込みの PDF / テキスト / zip / オフィス文書の許可リストに限りません)。分からない種類のものは保存され、手元のパスとしてエージェントに渡るので、terminal / read_file / ffprobe で中身を調べられます。既定は false です。
DISCORD_MAX_ATTACHMENT_BYTES ゲートウェイが保存する添付 1 つあたりの最大バイト数。既定は 33554432(32 MiB)です。0 にすると上限なしになります(書き出しの最中はメモリ上に保持されます)。
DISCORD_REACTIONS 処理中のメッセージに絵文字のリアクションを付けます(既定: true
DISCORD_IGNORED_CHANNELS ボットが返答しないチャンネル ID をカンマ区切りで並べます
DISCORD_NO_THREAD_CHANNELS ボットが自動でスレッドを作らずに返答するチャンネル ID をカンマ区切りで並べます
DISCORD_REPLY_TO_MODE 返信の引用の付け方。offfirst(既定)、all です
DISCORD_ALLOW_MENTION_EVERYONE ボットが @everyone / @here で全員に通知できるようにします(既定: false)。呼びかけの制御 を参照してください。
DISCORD_ALLOW_MENTION_ROLES ボットが @role で通知できるようにします(既定: false)。
DISCORD_ALLOW_MENTION_USERS ボットが個別の @user で通知できるようにします(既定: true)。
DISCORD_ALLOW_MENTION_REPLIED_USER 返信するとき、その相手に通知します(既定: true)。
SLACK_BOT_TOKEN Slack のボット トークン(xoxb-...
SLACK_APP_TOKEN Slack のアプリ単位のトークン(xapp-...。ソケット モードで必要です)
SLACK_ALLOWED_USERS Slack のユーザー ID をカンマ区切りで並べます
SLACK_ALLOW_ALL_USERS どの Slack ユーザーでもボットを動かせるようにします(開発時のみ)。
SLACK_ALLOW_BOTS ほかの Slack のボットからのメッセージを受け取るか。none(既定)、mentionsall です。自分自身のメッセージはつねに無視します。
SLACK_THREAD_REQUIRE_MENTION Slack のスレッドでの返信にははっきりした @ での呼びかけを求めつつ、最上位では自由に返答するチャンネルをそのまま残します
SLACK_HOME_CHANNEL cron の配信先になる既定の Slack のチャンネル
SLACK_HOME_CHANNEL_NAME Slack のホーム チャンネルの表示名
GOOGLE_CHAT_PROJECT_ID Pub/Sub のトピックを置く GCP のプロジェクト(なければ GOOGLE_CLOUD_PROJECT を使います)
GOOGLE_CHAT_SUBSCRIPTION_NAME Pub/Sub のサブスクリプションのフル パス projects/{proj}/subscriptions/{sub}(従来の別名: GOOGLE_CHAT_SUBSCRIPTION
GOOGLE_CHAT_SERVICE_ACCOUNT_JSON サービス アカウントの JSON のパス、または JSON そのもの(なければ GOOGLE_APPLICATION_CREDENTIALS を使います)
GOOGLE_CHAT_ALLOWED_USERS ボットと会話できるユーザーのメール アドレスをカンマ区切りで並べます
GOOGLE_CHAT_ALLOW_ALL_USERS どの Google Chat ユーザーでもボットを動かせるようにします(開発時のみ)
GOOGLE_CHAT_HOME_CHANNEL cron の配信先になる既定のスペース(例: spaces/AAAA...
GOOGLE_CHAT_HOME_CHANNEL_NAME Google Chat のホーム スペースの表示名
GOOGLE_CHAT_MAX_MESSAGES Pub/Sub の流量制御で、同時に扱うメッセージの上限(既定: 1
GOOGLE_CHAT_MAX_BYTES Pub/Sub の流量制御で、同時に扱うバイト数の上限(既定: 16777216、16 MiB)
GOOGLE_CHAT_BOOTSTRAP_SPACES ボット自身の users/{id} を解決するために、起動時に追加で調べるスペース ID をカンマ区切りで並べます
GOOGLE_CHAT_DEBUG_RAW 何か値を入れると、伏せ字にした Pub/Sub の受信内容を DEBUG レベルで記録します(不具合を調べるとき用)
GOOGLE_CHAT_HTTP_EVENTS_URL Chat のメッセージ イベントを受け取る、認証つきの HTTP エンドポイント(Pub/Sub の代わりに使えます)
GOOGLE_CHAT_HTTP_EVENTS_AUDIENCE Google が署名した HTTP イベントのベアラー トークンに期待する対象者(既定は GOOGLE_CHAT_HTTP_EVENTS_URL
GOOGLE_CHAT_HTTP_EVENTS_SERVICE_ACCOUNT_EMAIL HTTP イベントのベアラー トークンに期待する Google のサービス アカウントのメール アドレス
WHATSAPP_ENABLED WhatsApp の橋渡しを有効にします(true/false
WHATSAPP_MODE bot(別の番号を使う)か self-chat(自分あてに送る)
WHATSAPP_ALLOWED_USERS 電話番号をカンマ区切りで並べます(国番号を付け、+ は不要)。* にすると全員を許可します
WHATSAPP_ALLOW_ALL_USERS 許可リストなしで、すべての WhatsApp の送信者を許可します(true/false
WHATSAPP_HOME_CHANNEL cron や通知の配信先になる既定のチャット ID。
WHATSAPP_HOME_CHANNEL_NAME WhatsApp のホーム チャンネルの表示名。
WHATSAPP_DEBUG 調べもの用に、橋渡しの中で生のメッセージ イベントを記録します(true/false
WHATSAPP_CLOUD_PHONE_NUMBER_ID WhatsApp Business Cloud API の Meta の電話番号 ID(15〜17 桁。電話番号そのものではありません
WHATSAPP_CLOUD_ACCESS_TOKEN Meta のアクセス トークン(EAA で始まります)。一時的なトークンは 24 時間で切れ、システム ユーザーのトークンは期限がありません
WHATSAPP_CLOUD_APP_SECRET 受け取った webhook の署名を検証するための、32 文字の 16 進数のアプリ シークレット
WHATSAPP_CLOUD_VERIFY_TOKEN Meta の webhook 検証のやり取りで使う共有の秘密(設定ウィザードが自動で作ります)
WHATSAPP_CLOUD_ALLOWED_USERS ボットにメッセージを送れる wa_id をカンマ区切りで並べます(国番号付きの電話番号で、+ は不要)
WHATSAPP_CLOUD_ALLOW_ALL_USERS 許可リストなしで、すべての WhatsApp Cloud の送信者を許可します(true/false
WHATSAPP_CLOUD_APP_ID Meta のアプリ ID(任意。将来の分析連携のため)
WHATSAPP_CLOUD_WABA_ID WhatsApp Business アカウント ID(任意。将来の分析連携のため)
WHATSAPP_CLOUD_WEBHOOK_HOST 受信用の webhook サーバーが結び付くインターフェース(既定は 0.0.0.0
WHATSAPP_CLOUD_WEBHOOK_PORT 受信用の webhook サーバーが待ち受けるポート(既定は 8090
WHATSAPP_CLOUD_WEBHOOK_PATH Meta が受信メッセージを送ってくる URL のパス(既定は /whatsapp/webhook
WHATSAPP_CLOUD_API_VERSION 呼び出す Meta Graph API の版(既定は v20.0
WHATSAPP_CLOUD_HOME_CHANNEL ボットのホーム チャンネルにする wa_id(cron の作業などに使います)
WHATSAPP_CLOUD_DM_POLICY Cloud のアダプターでの 1 対 1 の会話の扱い(open/allowlist/disabled)。設定しなければ WHATSAPP_DM_POLICY を使います
WHATSAPP_CLOUD_ALLOW_FROM dm_policy: allowlist のときに許可する送信者をカンマ区切りで並べます(素の wa_id。Baileys 形式の JID は正規化されます)
WHATSAPP_CLOUD_GROUP_POLICY Cloud のアダプターでのグループの扱い(open/allowlist/disabled)。設定しなければ WHATSAPP_GROUP_POLICY を使います
WHATSAPP_CLOUD_GROUP_ALLOW_FROM group_policy: allowlist のときに許可するグループ チャットの ID をカンマ区切りで並べます
SIGNAL_HTTP_URL signal-cli デーモンの HTTP エンドポイント(たとえば http://127.0.0.1:8080
SIGNAL_ACCOUNT ボットの電話番号(E.164 形式)
SIGNAL_ALLOWED_USERS E.164 形式の電話番号か UUID をカンマ区切りで並べます
SIGNAL_GROUP_ALLOWED_USERS グループ ID をカンマ区切りで並べます。* ならすべてのグループです
SIGNAL_HOME_CHANNEL_NAME Signal のホーム チャンネルの表示名
SIGNAL_IGNORE_STORIES Signal のストーリーやステータスの更新を無視します
SIGNAL_ALLOW_ALL_USERS 許可リストなしで、すべての Signal ユーザーを許可します
TWILIO_ACCOUNT_SID Twilio のアカウント SID(電話のスキルと共通です)
TWILIO_AUTH_TOKEN Twilio の認証トークン(電話のスキルと共通で、webhook の署名の検証にも使います)
TWILIO_PHONE_NUMBER E.164 形式の Twilio の電話番号(電話のスキルと共通です)
SMS_WEBHOOK_URL Twilio の署名を検証するための公開 URL。Twilio のコンソールにある webhook の URL と一致している必要があります(必須)
SMS_WEBHOOK_PORT 受信 SMS 用の webhook が待ち受けるポート(既定: 8080
SMS_WEBHOOK_HOST webhook が結び付くアドレス(既定: 127.0.0.1
SMS_INSECURE_NO_SIGNATURE true にすると Twilio の署名の検証を無効にします(手元での開発のみ。本番では使わないでください)
SMS_ALLOWED_USERS 会話できる E.164 形式の電話番号をカンマ区切りで並べます
SMS_ALLOW_ALL_USERS 許可リストなしで、すべての SMS の送信者を許可します
SMS_HOME_CHANNEL cron の作業や通知の配信先になる電話番号
SMS_HOME_CHANNEL_NAME SMS のホーム チャンネルの表示名
EMAIL_ADDRESS メールのゲートウェイ アダプターが使うメール アドレス
EMAIL_PASSWORD そのメール アカウントのパスワード、またはアプリ パスワード
EMAIL_IMAP_HOST メールのアダプターが使う IMAP のホスト名
EMAIL_IMAP_PORT IMAP のポート
EMAIL_SMTP_HOST メールのアダプターが使う SMTP のホスト名
EMAIL_SMTP_PORT SMTP のポート
EMAIL_ALLOWED_USERS ボットにメッセージを送れるメール アドレスをカンマ区切りで並べます
EMAIL_HOME_ADDRESS こちらから送るメールの既定の宛先
EMAIL_HOME_ADDRESS_NAME メールのホームの宛先の表示名
EMAIL_POLL_INTERVAL メールを見に行く間隔を秒で指定します
EMAIL_ALLOW_ALL_USERS 受信メールの送信者をすべて許可します
DINGTALK_CLIENT_ID 開発者ポータルで取得する DingTalk のボットの AppKey(open.dingtalk.com
DINGTALK_CLIENT_SECRET 開発者ポータルで取得する DingTalk のボットの AppSecret
DINGTALK_ALLOWED_USERS ボットにメッセージを送れる DingTalk のユーザー ID をカンマ区切りで並べます
DINGTALK_WEBHOOK_URL プラットフォームをまたぐ配信や cron の配信に使う、固定のロボットの webhook URL。
DINGTALK_HOME_CHANNEL cron や通知の配信先になる既定の会話 ID。
DINGTALK_HOME_CHANNEL_NAME DingTalk のホーム チャンネルの表示名。
FEISHU_APP_ID open.feishu.cn で取得する Feishu / Lark のボットの App ID
FEISHU_APP_SECRET Feishu / Lark のボットの App Secret
FEISHU_DOMAIN feishu(中国)か lark(国際版)。既定: feishu
FEISHU_CONNECTION_MODE websocket(おすすめ)か webhook。既定: websocket
FEISHU_ENCRYPT_KEY webhook モード向けの暗号鍵(任意)
FEISHU_VERIFICATION_TOKEN webhook モード向けの検証トークン(任意)
FEISHU_ALLOWED_USERS ボットにメッセージを送れる Feishu のユーザー ID をカンマ区切りで並べます
FEISHU_ALLOW_BOTS none(既定)/ mentions / all — ほかのボットからのメッセージを受け取るかどうか。ボット同士のやり取り を参照してください
FEISHU_REQUIRE_MENTION true(既定)/ false — グループのメッセージでボットへの @ の呼びかけを必須にするかどうか。チャットごとに group_rules.<chat_id>.require_mention で上書きできます。
FEISHU_HOME_CHANNEL cron の配信と通知に使う Feishu のチャット ID
FEISHU_HOME_CHANNEL_NAME Feishu のホーム チャンネルの表示名。
FEISHU_ALLOW_ALL_USERS どの Feishu ユーザーでもボットを動かせるようにします(開発時のみ)。
WECOM_BOT_ID 管理コンソールで取得する WeCom AI Bot の ID
WECOM_SECRET WeCom AI Bot の秘密鍵
WECOM_WEBSOCKET_URL WebSocket の URL を自分で指定します(既定: wss://openws.work.weixin.qq.com
WECOM_ALLOWED_USERS ボットにメッセージを送れる WeCom のユーザー ID をカンマ区切りで並べます
WECOM_HOME_CHANNEL cron の配信と通知に使う WeCom のチャット ID
WECOM_CALLBACK_CORP_ID コールバック方式の自社アプリ向けの WeCom の企業 Corp ID
WECOM_CALLBACK_CORP_SECRET その自社アプリの Corp シークレット
WECOM_CALLBACK_AGENT_ID その自社アプリのエージェント ID
WECOM_CALLBACK_TOKEN コールバックの検証トークン
WECOM_CALLBACK_ENCODING_AES_KEY コールバックの暗号化に使う AES 鍵
WECOM_CALLBACK_HOST コールバック サーバーが結び付くアドレス(既定: 0.0.0.0
WECOM_CALLBACK_PORT コールバック サーバーのポート(既定: 8645
WECOM_CALLBACK_ALLOWED_USERS 許可リストに載せるユーザー ID をカンマ区切りで並べます
WECOM_CALLBACK_ALLOW_ALL_USERS true にすると、許可リストなしですべてのユーザーを許可します
WEIXIN_ACCOUNT_ID iLink Bot API の QR ログインで取得する Weixin のアカウント ID
WEIXIN_TOKEN iLink Bot API の QR ログインで取得する Weixin の認証トークン
WEIXIN_BASE_URL Weixin の iLink Bot API のベース URL を上書きします(既定: https://ilinkai.weixin.qq.com
WEIXIN_CDN_BASE_URL 添付ファイル向けの Weixin の CDN のベース URL を上書きします(既定: https://novac2c.cdn.weixin.qq.com/c2c
WEIXIN_DM_POLICY 1 対 1 の会話の扱い。openallowlistpairingdisabled(既定: open
WEIXIN_GROUP_POLICY グループのメッセージの扱い。openallowlistdisabled(既定: disabled
WEIXIN_ALLOWED_USERS ボットに 1 対 1 でメッセージを送れる Weixin のユーザー ID をカンマ区切りで並べます
WEIXIN_GROUP_ALLOWED_USERS ボットとやり取りできる Weixin のグループ チャット ID(メンバーのユーザー ID ではありません)をカンマ区切りで並べます。変数名は昔の名残で、実際にはグループ ID を入れます。iLink が実際にグループのイベントを届ける場合にだけ効きます。QR ログインの iLink のボットの識別子(...@im.bot)は、ふつうの WeChat のグループのメッセージを受け取らないのが通例です。
WEIXIN_HOME_CHANNEL cron の配信と通知に使う Weixin のチャット ID
WEIXIN_HOME_CHANNEL_NAME Weixin のホーム チャンネルの表示名
WEIXIN_ALLOW_ALL_USERS 許可リストなしで、すべての Weixin ユーザーを許可します(true/false
BLUEBUBBLES_SERVER_URL BlueBubbles のサーバー URL(例: http://192.168.1.10:1234
BLUEBUBBLES_PASSWORD BlueBubbles のサーバーのパスワード
BLUEBUBBLES_WEBHOOK_HOST webhook の待ち受けが結び付くアドレス(既定: 127.0.0.1
BLUEBUBBLES_WEBHOOK_PORT webhook の待ち受けポート(既定: 8645
BLUEBUBBLES_HOME_CHANNEL cron や通知の配信先になる電話番号かメール アドレス
BLUEBUBBLES_ALLOWED_USERS 許可するユーザーをカンマ区切りで並べます
BLUEBUBBLES_ALLOW_ALL_USERS すべてのユーザーを許可します(true/false
QQ_APP_ID q.qq.com で取得する QQ Bot の App ID
QQ_CLIENT_SECRET q.qq.com で取得する QQ Bot の App Secret
QQ_STT_API_KEY 外部の文字起こしに切り替えるときの API キー(任意。QQ 内蔵の音声認識が何も返さなかったときに使います)
QQ_STT_BASE_URL 外部の文字起こしのベース URL(任意)
QQ_STT_MODEL 外部の文字起こしのモデル名(任意)
QQ_ALLOWED_USERS ボットにメッセージを送れる QQ のユーザーの openID をカンマ区切りで並べます
QQ_GROUP_ALLOWED_USERS グループでの @ 付きメッセージを許可する QQ のグループ ID をカンマ区切りで並べます
QQ_ALLOW_ALL_USERS すべてのユーザーを許可します(true/falseQQ_ALLOWED_USERS より優先されます)
QQBOT_HOME_CHANNEL cron の配信と通知に使う QQ のユーザーかグループの openID
QQBOT_HOME_CHANNEL_NAME QQ のホーム チャンネルの表示名
QQ_PORTAL_HOST QQ のポータルのホストを上書きします(sandbox.q.qq.com にすると試験用のゲートウェイを通ります。既定: q.qq.com)。
QQ_SANDBOX 開発時の試験のために QQ のサンドボックス モードを有効にします(true/false
MATTERMOST_URL Mattermost のサーバー URL(例: https://mm.example.com
MATTERMOST_TOKEN Mattermost のボット トークン、または個人用アクセス トークン
MATTERMOST_ALLOWED_USERS ボットにメッセージを送れる Mattermost のユーザー ID をカンマ区切りで並べます
MATTERMOST_ALLOW_ALL_USERS どの Mattermost ユーザーでもボットを動かせるようにします(開発時のみ)。
MATTERMOST_ALLOWED_CHANNELS 設定すると、ボットはこれらのチャンネルでだけ返答します(許可リスト)。
MATTERMOST_HOME_CHANNEL こちらから送るメッセージ(cron、通知)の宛先チャンネル ID
MATTERMOST_REQUIRE_MENTION チャンネルで @mention を求めます(既定: true)。false にするとすべてのメッセージに返答します。
MATTERMOST_FREE_RESPONSE_CHANNELS @mention なしでもボットが返答するチャンネル ID をカンマ区切りで並べます
MATTERMOST_REPLY_MODE 返信の見せ方。thread(スレッドで返す)か off(並べて返す。既定)
MATRIX_HOMESERVER Matrix のホームサーバーの URL(例: https://matrix.org
MATRIX_ACCESS_TOKEN ボットの認証に使う Matrix のアクセス トークン
MATRIX_USER_ID Matrix のユーザー ID(例: @hermes:matrix.org)。パスワードでログインするときは必須で、アクセス トークンを使うなら任意です
MATRIX_PASSWORD Matrix のパスワード(アクセス トークンの代わり)
MATRIX_ALLOWED_USERS ボットにメッセージを送れる Matrix のユーザー ID をカンマ区切りで並べます(例: @alice:matrix.org
MATRIX_ALLOW_ALL_USERS どの Matrix ユーザーでもボットを動かせるようにします(開発時のみ)。
MATRIX_HOME_CHANNEL cron や通知の配信先になる既定のルーム ID。
MATRIX_HOME_CHANNEL_NAME Matrix のホーム ルームの表示名。
MATRIX_ALLOWED_ROOMS ボットが応答してよい Matrix のルーム ID をカンマ区切りで並べます
MATRIX_HOME_ROOM こちらから送るメッセージの宛先ルーム ID(例: !abc123:matrix.org
MATRIX_ENCRYPTION 端から端までの暗号化を有効にします(true/false、既定: false
MATRIX_E2EE_MODE Matrix の端から端までの暗号化の扱い。offoptionalrequired です。設定すると MATRIX_ENCRYPTION より優先されます。
MATRIX_DEVICE_ID 再起動をまたいで暗号化を保つための、変わらない Matrix のデバイス ID(例: HERMES_BOT)。これがないと、起動のたびに鍵が入れ替わり、過去のルームの復号ができなくなります。
MATRIX_REACTIONS 受信メッセージに、処理の進みを表す絵文字のリアクションを付けます(既定: true)。false で無効にできます。
MATRIX_REQUIRE_MENTION ルームで @mention を求めます(既定: true)。false にするとすべてのメッセージに返答します。
MATRIX_FREE_RESPONSE_ROOMS @mention なしでもボットが返答するルーム ID をカンマ区切りで並べます
MATRIX_IGNORE_USER_PATTERNS 無視する Matrix の橋渡し・アプリサービスの仮のユーザー ID の正規表現をカンマ区切りで並べます
MATRIX_PROCESS_NOTICES 受信した Matrix の m.notice イベントを処理します(既定: false
MATRIX_SESSION_SCOPE プロジェクトのルームでのセッションの区切り方。autoroomthread です(既定: auto
MATRIX_TOOLS_ALLOW_REDACTION Matrix のメッセージ取り消しツールの実行を許可します(既定: false
MATRIX_TOOLS_ALLOW_INVITES Matrix の招待ツールの実行を許可します(既定: false
MATRIX_TOOLS_ALLOW_ROOM_CREATE Matrix のルーム作成ツールの実行を許可します(既定: false
MATRIX_ALLOW_ROOM_MENTIONS ルームの全員に通知する @room の送信を許可します(既定: false
MATRIX_AUTO_THREAD ルームのメッセージで自動的にスレッドを作ります(既定: true
MATRIX_DM_AUTO_THREAD Matrix の 1 対 1 の会話で自動的にスレッドを作ります(既定: false
MATRIX_DM_MENTION_THREADS 1 対 1 の会話でボットが @mentioned されたときにスレッドを作ります(既定: false
MATRIX_APPROVAL_REQUIRE_SENDER 承認やモデル選択のリアクションを、分かっている場合はもとの依頼者からのものに限ります(既定: true
MATRIX_APPROVAL_TIMEOUT_SECONDS Matrix のリアクションによる承認やモデル選択の待ち時間(既定: 300
MATRIX_ALLOW_PUBLIC_ROOMS Matrix のルーム作成ツールが公開ルームを作れるようにします(既定: false
MATRIX_MAX_MEDIA_BYTES Matrix でやり取りする添付ファイルの最大バイト数(既定: 104857600
MATRIX_RECOVERY_KEY デバイスの鍵が入れ替わったあと、相互署名の検証に使う復旧キー。相互署名を有効にした暗号化構成ではおすすめです。
MATRIX_RECOVERY_KEY_OUTPUT_FILE 生成した Matrix の復旧キーを一度だけ書き出すパス(任意)。モード 0600 で作られ、上書きされることはありません。
HASS_TOKEN Home Assistant の長期アクセス トークン(HA のプラットフォームとツールが使えるようになります)
HASS_URL Home Assistant の URL(既定: http://homeassistant.local:8123
WEBHOOK_ENABLED webhook のプラットフォーム アダプターを有効にします(true/false
WEBHOOK_PORT webhook を受け取る HTTP サーバーのポート(既定: 8644
WEBHOOK_SECRET webhook の署名を検証するための全体の HMAC の秘密鍵(経路ごとに指定がないときに使われます)
API_SERVER_ENABLED OpenAI 互換の API サーバーを有効にします(true/false)。ほかのプラットフォームと並行して動きます。
API_SERVER_KEY API サーバーの認証に使うベアラー トークン。API サーバーを有効にするときは必須です。
API_SERVER_CORS_ORIGINS API サーバーを直接呼べるブラウザーのオリジンをカンマ区切りで並べます(たとえば http://localhost:3000,http://127.0.0.1:3000)。既定は無効です。
API_SERVER_PORT API サーバーのポート(既定: 8642
API_SERVER_HOST API サーバーが結び付くホストやアドレス(既定: 127.0.0.1)。ループバックでも API_SERVER_KEY は必要です。ブラウザーからつなぐときは API_SERVER_CORS_ORIGINS を絞って許可してください。
API_SERVER_MODEL_NAME /v1/models に出すモデル名。既定はプロファイル名(既定のプロファイルなら hermes-agent)です。Open WebUI のようなフロントエンドが接続ごとに別のモデル名を必要とする、複数人での構成で役立ちます。
GATEWAY_PROXY_URL メッセージの転送先になる、離れた場所の Hermes API サーバーの URL(プロキシ モード)。設定すると、ゲートウェイはプラットフォームとの入出力だけを受け持ち、エージェントの仕事はすべて転送先のサーバーに任せます。config.yamlgateway.proxy_url でも設定できます。
GATEWAY_PROXY_KEY プロキシ モードで転送先の API サーバーに認証してもらうためのベアラー トークン。転送先ホストの API_SERVER_KEY と一致している必要があります。
MESSAGING_CWD ゲートウェイの作業ディレクトリの、互換のために残された指定(非推奨)。config.yamlterminal.cwd を使ってください。
GATEWAY_ALLOWED_USERS すべてのプラットフォームで許可するユーザー ID をカンマ区切りで並べます
GATEWAY_ALLOW_ALL_USERS 許可リストなしですべてのユーザーを許可します(true/false、既定: false

ウェブ ダッシュボードと Hermes Desktop

ウェブ ダッシュボード の認証と、Hermes Desktop を離れた場所のバックエンドにつなぐ ための認証です。秘密の情報だけを置くという決まりに従い、認証情報は ~/.hermes/.env に入れます。OAuth の client_idconfig.yamldashboard.oauth の下に置くほうが向いています(両方あれば環境変数が勝ちます)。

ダッシュボードの認証は 3 種類が同梱されています。離れた場所の Hermes Desktop からつなぐときや、インターネットに面したダッシュボードでは、OAuth(Nous Portal) をおすすめします。HERMES_DASHBOARD_OAUTH_CLIENT_ID を設定してください(hermes dashboard register で用意します)。同梱のユーザー名とパスワードの方式(HERMES_DASHBOARD_BASIC_AUTH_*)は、信頼できる LAN の中や VPN の後ろにあるバックエンドにはいちばん手早い選択ですが、インターネットに直接さらす用途には向きません。自分の ID 基盤で認証するなら、自前で立てる OIDC の方式(HERMES_DASHBOARD_OIDC_*)を使ってください。いずれの場合も、ループバック以外に結び付けると(hermes dashboard --host 0.0.0.0)認証の関門が働きます。全体像は ウェブ ダッシュボード → 認証 を参照してください。

変数 説明
HERMES_DASHBOARD_BASIC_AUTH_USERNAME 同梱のユーザー名・パスワード方式(plugins/dashboard_auth/basic)のユーザー名。パスワードと合わせて設定すると、この方式が有効になります。dashboard.basic_auth.username より優先されます。
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD この方式の平文のパスワード(読み込み時にメモリ上でハッシュ化されます)。設定ファイルの password_hash より優先されるので、環境変数だけで入れ替えられます。dashboard.basic_auth.password より優先されます。
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD_HASH この方式の scrypt によるパスワードのハッシュ(平文が残らないのでこちらがおすすめです)。python -c "from plugins.dashboard_auth.basic import hash_password; print(hash_password('PW'))" で計算します。dashboard.basic_auth.password_hash より優先されます。
HERMES_DASHBOARD_BASIC_AUTH_SECRET この方式の、状態を持たないセッション トークンに署名する HMAC の鍵(32 バイト以上。base64、16 進数、生の値のいずれか)。明示的に設定すると、再起動をまたいでもセッションが残り、複数のワーカーでも共有できます。空にするとプロセスごとに無作為な値になります(再起動のたびにログアウトします)。dashboard.basic_auth.secret より優先されます。
HERMES_DASHBOARD_BASIC_AUTH_TTL_SECONDS この方式のアクセス トークンの寿命(既定は 12 時間)。dashboard.basic_auth.session_ttl_seconds より優先されます。
HERMES_DASHBOARD_OAUTH_CLIENT_ID 認証つき・公開のダッシュボード向けの OAuth のクライアント ID(agent:{instance_id})で、Nous の方式(plugins/dashboard_auth/nous)が有効になります。dashboard.oauth.client_id より優先されます。hermes dashboard register で用意します。
HERMES_DASHBOARD_PUBLIC_URL リバース プロキシの後ろでダッシュボードに実際にたどり着く公開 URL の全体。OAuth のコールバックの組み立てを決め、そのホスト名を HTTP の Host と WebSocket の Origin の検査に加え、バックエンドがループバックに結び付いていても、ループバック以外の公開ホストでは認証の関門を必須にします。dashboard.public_url より優先されます。
HERMES_DASHBOARD_OIDC_ISSUER 同梱の自前 OIDC の方式(plugins/dashboard_auth/self_hosted)の発行者 URL。有効にするには必須です。dashboard.oauth.self_hosted.issuer より優先されます。
HERMES_DASHBOARD_OIDC_CLIENT_ID 自前 OIDC の方式の公開クライアント ID(認可コード + PKCE)。有効にするには必須です。dashboard.oauth.self_hosted.client_id より優先されます。
HERMES_DASHBOARD_OIDC_SCOPES 自前 OIDC の方式で要求するスコープ(既定は openid profile email)。dashboard.oauth.self_hosted.scopes より優先されます。
HERMES_DESKTOP_REMOTE_URL (デスクトップ側)離れた場所のバックエンドのベース URL。たとえば http://host:9119 です。設定するとアプリ内のゲートウェイ URL より優先されますが、サインインはこれまでどおりゲートウェイの設定画面から行います(バックエンドが提示する方式に応じて、OAuth のリダイレクトかユーザー名・パスワードになります)。
HERMES_DESKTOP_HERMES デスクトップのバックエンドのコマンドを上書きします。パッケージ作成や Nix、あるいは不具合を調べるときに、バックエンドの探索のあとで Electron に特定の hermes 実行ファイルを指させるために使います。
HERMES_DESKTOP_HERMES_ROOT hermes desktop --hermes-root が使う、ソースを取得した場所の指定。パッケージ版の初回導入や PATH にある既存の hermes より先に見られます。
HERMES_DESKTOP_IGNORE_EXISTING 1 にすると、バックエンドを決めるときに PATH にある既存の hermes をデスクトップが無視します。hermes desktop --ignore-existing と同じです。
HERMES_DESKTOP_CWD デスクトップのチャット セッションの最初のプロジェクト ディレクトリ。hermes desktop --cwd が設定します。
HERMES_DESKTOP_PYTHON バックエンド向けの Python インタープリターの絶対パス。ソースを取得した場所について Electron が自動で解決するより先に見られます。共有の仮想環境を使い回すために、ワークツリーでの開発補助(ワークツリーからの TUI とデスクトップ を参照)が使います。
HERMES_DESKTOP_DEV_SERVER Electron の外枠がパッケージ版の代わりに読み込む Vite の開発サーバーの URL(例: http://127.0.0.1:5174)。npm run dev が自動で設定します。アプリ自体をいじるときだけ関係します。
HERMES_DESKTOP_CDP_PORT DOM や CSS を調べる道具のために、描画側が 127.0.0.1 で公開する Chrome DevTools Protocol のポートを上書きします(既定は 9222)。開発サーバーでの実行(npm run devhgui)では自動で開きますが、パッケージ版では決して開かず、ここに値を入れてもそれは変わりません。off にすると開発時の実行でも無効にできます。このポートに届く相手は誰でも、描画側でコードを実行できます。

Microsoft Graph(Teams の会議)

近く提供される Teams の会議要約の仕組みが使う、Microsoft Graph の REST クライアント向けのアプリ単位の認証情報です。Azure ポータルでの手順と、必要になる API の権限は Microsoft Graph アプリケーションの登録 にあります。

変数 説明
MSGRAPH_TENANT_ID Graph のアプリ登録に使う Azure AD のテナント ID(ディレクトリの GUID)。
MSGRAPH_CLIENT_ID Azure のアプリ登録のアプリケーション(クライアント)ID。
MSGRAPH_CLIENT_SECRET アプリ登録のクライアント シークレットの値。~/.hermes/.envchmod 600 で保管し、Azure ポータルで定期的に入れ替えてください。
MSGRAPH_SCOPE クライアント資格情報でトークンを要求するときの OAuth2 のスコープ(既定: https://graph.microsoft.com/.default)。
MSGRAPH_AUTHORITY_URL Microsoft ID プラットフォームの認証局(既定: https://login.microsoftonline.com)。各国向けクラウドのときだけ上書きします(GCC High なら https://login.microsoftonline.us など)。

Microsoft Graph の webhook 待ち受け

Graph のイベント(Teams の会議、カレンダー、チャットなど)の変更通知を受け取る待ち受けです。設定とセキュリティの固め方は Microsoft Graph の webhook 待ち受け にあります。

変数 説明
MSGRAPH_WEBHOOK_ENABLED ゲートウェイのプラットフォーム msgraph_webhook を有効にします(true/1/yes)。
MSGRAPH_WEBHOOK_PORT 待ち受けが結び付くポート(既定: 8646)。
MSGRAPH_WEBHOOK_CLIENT_STATE Graph が通知のたびに返してくる共有の秘密。hmac.compare_digest で照合します。openssl rand -hex 32 で作ってください。
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES 受け付ける Graph のリソース パスやパターンをカンマ区切りで並べます(例: communications/onlineMeetings,chats/*/messages)。末尾の * は前方一致です。空ならすべて受け付けます。
MSGRAPH_WEBHOOK_ALLOWED_SOURCE_CIDRS 待ち受けに POST できる CIDR の範囲をカンマ区切りで並べます(例: 52.96.0.0/14,52.104.0.0/14)。空ならすべて許可します(既定)。本番では Microsoft Graph が公開している送信元の範囲に絞ってください。

Teams の会議要約の配信

teams_pipeline プラグイン を有効にしたときだけ使います。config.yamlplatforms.teams.extra の下でも設定できます。両方にある場合は環境変数が優先されます。Microsoft Teams → 会議要約の配信 を参照してください。

変数 説明
TEAMS_DELIVERY_MODE graphincoming_webhook
TEAMS_INCOMING_WEBHOOK_URL Teams が発行する webhook の URL。TEAMS_DELIVERY_MODE=incoming_webhook のときは必須です。
TEAMS_GRAPH_ACCESS_TOKEN Graph での配信のために、あらかじめ取得しておいた委任のアクセス トークン。必要になることはまれで、設定しなければ MSGRAPH_* のアプリの認証情報が使われます。
TEAMS_TEAM_ID チャンネルに配信するときの対象の Team ID(graph モード)。
TEAMS_CHANNEL_ID 対象のチャンネル ID(TEAMS_TEAM_ID と組で使います)。
TEAMS_CHAT_ID 対象の 1 対 1 またはグループのチャット ID(graph モードで、チームとチャンネルの代わりに使えます)。

LINE Messaging API

同梱の LINE のプラットフォーム プラグイン(plugins/platforms/line/)が使います。設定の全体は メッセージング ゲートウェイ → LINE にあります。

変数 説明
LINE_CHANNEL_ACCESS_TOKEN LINE Developers コンソール(Messaging API タブ)で発行する、長期のチャネル アクセス トークン。必須です。
LINE_CHANNEL_SECRET チャネル シークレット(Basic settings タブ)。webhook の HMAC-SHA256 署名の検証に使います。必須です。
LINE_HOST webhook が結び付くホスト(既定: 0.0.0.0)。
LINE_PORT webhook が結び付くポート(既定: 8646)。
LINE_PUBLIC_URL 公開の HTTPS のベース URL(例: https://my-tunnel.example.com)。画像・音声・動画を送るには必須です。LINE は HTTPS でたどり着ける URL しか受け付けません。
LINE_ALLOWED_USERS ボットに 1 対 1 でメッセージを送れるユーザー ID をカンマ区切りで並べます(U で始まります)。
LINE_ALLOWED_GROUPS ボットが返答するグループ ID をカンマ区切りで並べます(C で始まります)。
LINE_ALLOWED_ROOMS ボットが返答するルーム ID をカンマ区切りで並べます(R で始まります)。
LINE_ALLOW_ALL_USERS 開発時だけの逃げ道で、どの送信元も受け付けます。既定: false
LINE_HOME_CHANNEL deliver: line を指定した cron の作業の既定の配信先。
LINE_SLOW_RESPONSE_THRESHOLD LLM の応答が遅いときにテンプレート ボタンのポストバックを出すまでの秒数(既定: 45)。0 にすると無効になり、つねに Push で送ります。
LINE_PENDING_TEXT ポストバックのボタンと一緒に出す吹き出しの文言。
LINE_BUTTON_LABEL ポストバックのボタンのラベル(既定: Get answer)。
LINE_DELIVERED_TEXT すでに届いたポストバックをもう一度押したときの返答(既定: Already replied ✅)。
LINE_INTERRUPTED_TEXT /stop で行き場をなくしたポストバックのボタンを押したときの返答(既定: Run was interrupted before completion.)。

ntfy(プッシュ通知)

ntfy は HTTP を使った軽いプッシュ通知の仕組みです。ntfy のモバイル アプリ からトピックを購読し、そのトピックへ送信するとエージェントと会話できます。

変数 説明
NTFY_TOPIC 購読するトピック(受信メッセージ用)。必須です。
NTFY_SERVER_URL サーバーの URL(既定: https://ntfy.sh)。自前で立てた ntfy を指せば、内容を外に出さずに済みます。
NTFY_TOKEN 認証トークン(任意)。ベアラー トークン(例: tk_xyz)か、Basic 認証用の user:pass です。
NTFY_PUBLISH_TOPIC 返信を送るトピック(既定は NTFY_TOPIC)。
NTFY_MARKDOWN true にすると X-Markdown: true ヘッダーを付けて返信します。既定: false
NTFY_ALLOWED_USERS 許可リスト(ユーザー ID として扱いますが、ntfy ではトピック名です)。ふつうは NTFY_TOPIC と同じ値にします。
NTFY_ALLOW_ALL_USERS 開発時だけの逃げ道で、アクセスを制御した非公開のトピックでしか安全ではありません。既定: false
NTFY_HOME_CHANNEL deliver: ntfy を指定した cron の作業の既定の配信先。
NTFY_HOME_CHANNEL_NAME ホーム チャンネルの分かりやすい名前(既定はトピック名)。

信頼できないトピックで運用する前に、ntfy のメッセージング ガイド、とくに識別の考え方の節を読んでください。

IRC

Hermes を IRC のサーバーにつなぎます。外部の依存はありません。IRC のメッセージング ガイド を参照してください。

変数 説明
IRC_SERVER IRC サーバーのホスト名(例: irc.libera.chat)。必須です。
IRC_CHANNEL 参加するチャンネル(例: #hermes)。複数ならカンマ区切りにします。必須です。
IRC_NICKNAME ボットのニックネーム(既定: hermes-bot)。必須です。
IRC_PORT サーバーのポート(既定: TLS ありなら 6697、なしなら 6667)。
IRC_USE_TLS TLS を使います(true/false。ポート 6697 では既定で true)。
IRC_SERVER_PASSWORD PASS コマンド用のサーバーのパスワード(任意)。
IRC_NICKSERV_PASSWORD 接続時に自動で IDENTIFY するための NickServ のパスワード(任意)。
IRC_ALLOWED_USERS ボットと会話できるニックネームをカンマ区切りで並べます。
IRC_ALLOW_ALL_USERS チャンネルにいる誰もがボットと会話できるようにします(開発時のみ)。
IRC_HOME_CHANNEL cron や通知の配信先のチャンネル(既定は IRC_CHANNEL)。

SimpleX

手元の simplex-chat デーモンを通して、Hermes を SimpleX Chat のネットワークにつなぎます。SimpleX のメッセージング ガイド を参照してください。

変数 説明
SIMPLEX_WS_URL simplex-chat デーモンの WebSocket の URL(例: ws://127.0.0.1:5225)。
SIMPLEX_ALLOWED_USERS ボットと会話できる SimpleX の連絡先 ID をカンマ区切りで並べます。
SIMPLEX_ALLOW_ALL_USERS どの連絡先でもボットと会話できるようにします(開発時のみ。許可リストが無効になります)。
SIMPLEX_AUTO_ACCEPT 届いた連絡先の申請を自動で承認します(既定: true)。
SIMPLEX_GROUP_ALLOWED ボットが参加する SimpleX のグループ ID をカンマ区切りで並べます。* ならどのグループでも許可します。省くとグループのメッセージを完全に無視します(そのほうが安全です。グループにいるボットは、放っておくとメンバー全員の発言を処理してしまいます)。
SIMPLEX_HOME_CHANNEL cron や通知の配信先になる既定の連絡先やグループの ID。
SIMPLEX_HOME_CHANNEL_NAME ホーム チャンネルの分かりやすい名前(既定は ID)。

Photon

Node のサイドカーを通して、Hermes を Photon / Spectrum(iMessage やそのほかの Spectrum のプラットフォーム)につなぎます。Photon のメッセージング ガイド を参照してください。

変数 説明
PHOTON_PROJECT_ID Spectrum のプロジェクト ID(プロジェクトの spectrumProjectIdhermes photon setup が設定します)。
PHOTON_PROJECT_SECRET Spectrum のプロジェクト ID と対になる秘密鍵(hermes photon setup が設定します)。
PHOTON_ALLOWED_USERS ボットと会話できる E.164 形式の電話番号をカンマ区切りで並べます。
PHOTON_ALLOW_ALL_USERS どの送信者でもボットを動かせるようにします(開発時のみ。許可リストが無効になります)。
PHOTON_REQUIRE_MENTION グループのメッセージは、呼びかけ語に一致しない限り無視します(true/false、既定は false)。
PHOTON_MENTION_PATTERNS グループ チャットでの呼びかけ語の正規表現(JSON のリスト、またはカンマや改行で区切ったもの。既定は Hermes の呼びかけ語です)。
PHOTON_HOME_CHANNEL cron や通知の配信先になる既定の Photon の宛先。Spectrum のスペース ID、1 対 1 の GUID、素の E.164 形式の電話番号のいずれかです。
PHOTON_HOME_CHANNEL_NAME ホーム チャンネルの分かりやすい名前。
PHOTON_MARKDOWN エージェントの返答をマークダウンで送ります。iMessage はそのまま表示し、ほかの Spectrum のプラットフォームでは素の文字になります(true/false、既定は true)。
PHOTON_REACTIONS 処理の状態としてメッセージに 👀 / 👍 / 👎 のタップバックを付け、ボットのメッセージへのタップバックをエージェントに渡します(true/false、既定は false)。
PHOTON_TELEMETRY サイドカーで Spectrum SDK の測定データ送信を有効にします(true/false、既定は false。`hermes photon telemetry on off` で切り替えられます)。
PHOTON_SIDECAR_PORT Node のサイドカーの制御と受信に使うループバックのポート(既定は 8789)。
PHOTON_SIDECAR_AUTOSTART 接続時に Node のサイドカーを起動します(true/false、既定は true)。
PHOTON_NODE_BIN node の実行ファイルのパス(既定: shutil.which('node'))。
PHOTON_DASHBOARD_HOST Photon Dashboard API のホスト(既定は https://app.photon.codes)。
PHOTON_SPECTRUM_HOST Photon Spectrum API のホスト(既定は https://spectrum.photon.codes)。

Buzz(Nostr のコミュニティ)

変数 説明
BUZZ_RELAY_URL Buzz のコミュニティ リレーのベース URL(例: https://mycommunity.communities.buzz.xyz
BUZZ_PRIVATE_KEY エージェントの Buzz 上の識別子に使う Nostr の秘密鍵(nsec か 16 進数)。Buzz で秘密にすべきものはこれだけです
BUZZ_CREDENTIALS_FILE nsec を収めた JSON の認証情報ファイル(BUZZ_PRIVATE_KEY がないときに使います)
BUZZ_CHANNELS 見張るチャンネルの UUID をカンマ区切りで並べます(既定は参加中のすべてのチャンネル)
BUZZ_HOME_CHANNEL cron や通知の配信先になるチャンネルの UUID(既定は最初に見張っているチャンネル)
BUZZ_ALLOWED_USERS エージェントと会話できる npub か 16 進数の公開鍵をカンマ区切りで並べます
BUZZ_ALLOW_ALL_USERS コミュニティの誰もがエージェントと会話できるようにします(true/false
BUZZ_TRANSPORT 受信の経路。auto(WebSocket を使い、だめならポーリング。既定)、websocketpoll です
BUZZ_POLL_INTERVAL 受信のポーリングの間隔を秒で指定します(既定: 4
BUZZ_AUTH_TAG NIP-42 の WebSocket 認証で使う NIP-OA の所有者証明の認証タグの JSON(任意)
BUZZ_CLI_PATH buzz の CLI 実行ファイルのパス(既定: PATH 上の buzz、次に ~/bin/buzz

Microsoft Teams(アダプター)

Microsoft Teams のプラットフォーム アダプター(Bot Framework / Azure AD)です。上の Microsoft Graph(Teams の会議) の連携とは別ものです。Teams のメッセージング ガイド を参照してください。

変数 説明
TEAMS_CLIENT_ID Azure AD のアプリケーション(Bot Framework)のクライアント ID。
TEAMS_CLIENT_SECRET Azure AD のアプリケーションのクライアント シークレット。
TEAMS_TENANT_ID ボットのアプリケーションを置く Azure AD のテナント ID。
TEAMS_HOST webhook が結び付くホスト(既定: 未設定 — IPv4 と IPv6 の全インターフェース)。
TEAMS_PORT webhook が待ち受けるポート(Bot Framework の既定: 3978)。
TEAMS_ALLOWED_USERS ボットと会話できる Teams のユーザー ID や UPN をカンマ区切りで並べます。
TEAMS_ALLOW_ALL_USERS どの Teams ユーザーでもボットを動かせるようにします(開発時のみ)。
TEAMS_HOME_CHANNEL cron や通知の配信先になる既定のチャットやチャンネルの ID。
TEAMS_HOME_CHANNEL_NAME Teams のホーム チャンネルの表示名。

Raft

変数 説明
RAFT_PROFILE Raft のエージェント プロファイルの識別名。設定するとアダプターが自動で有効になります。

メッセージングの細かい調整

送信メッセージのまとめ役を、プラットフォームごとに細かく調整するつまみです。ほとんどの人は触る必要がありません。既定値は、各プラットフォームの送信制限を守りつつ、もたつかないように決めてあります。

変数 説明
HERMES_TELEGRAM_TEXT_BATCH_DELAY_SECONDS Telegram の待機中の文章のかたまりを送り出すまでの猶予(既定: 0.6)。
HERMES_TELEGRAM_TEXT_BATCH_SPLIT_DELAY_SECONDS Telegram の 1 通が長さの上限を超えて分割されるときの、かたまりの間隔(既定: 2.0)。
HERMES_SIMPLEX_TEXT_BATCH_DELAY 立て続けに届いた文章を 1 つの MessageEvent にまとめるための静止時間(秒。既定: 0.8)。Telegram の文章のまとめ方と同じ考え方です。
HERMES_TELEGRAM_MEDIA_BATCH_DELAY_SECONDS Telegram の待機中の添付を送り出すまでの猶予(既定: 0.6)。
HERMES_TELEGRAM_FOLLOWUP_GRACE_SECONDS エージェントが終わったあと、続きのメッセージを送るまでの待ち時間。最後のストリームのかたまりと競合しないようにするためです。
HERMES_TELEGRAM_HTTP_CONNECT_TIMEOUT / _READ_TIMEOUT / _WRITE_TIMEOUT / _POOL_TIMEOUT 下地になっている python-telegram-bot の HTTP のタイムアウト(秒)を上書きします。
HERMES_TELEGRAM_INIT_TIMEOUT ゲートウェイの起動時に走る Telegram の initialize() の接続処理について、1 回あたりの上限(秒)。つながらない代替 IP の連なりで起動が止まり続けないようにするためです(既定: 30)。
HERMES_TELEGRAM_HTTP_POOL_SIZE Telegram API への同時 HTTP 接続数の上限。
HERMES_TELEGRAM_DISABLE_FALLBACK_IPS DNS が引けないときに使う、埋め込みの Cloudflare の代替 IP を無効にします(true/false)。
HERMES_DISCORD_TEXT_BATCH_DELAY_SECONDS Discord の待機中の文章のかたまりを送り出すまでの猶予(既定: 0.6)。
HERMES_DISCORD_TEXT_BATCH_SPLIT_DELAY_SECONDS Discord の 1 通が長さの上限を超えて分割されるときの、かたまりの間隔(既定: 2.0)。
HERMES_DISCORD_LIVENESS_INTERVAL_SECONDS discord.websocket_liveness_interval_seconds を互換のために手動で上書きします。動いている Discord ゲートウェイの WebSocket を見に行く間隔です(既定: 150 で無効)。config.yaml のキーのほうをおすすめします。
HERMES_DISCORD_LIVENESS_FAILURE_THRESHOLD discord.websocket_liveness_failure_threshold を互換のために手動で上書きします。WebSocket の不調が何回続いたら強制的につなぎ直すかです(既定: 2)。config.yaml のキーのほうをおすすめします。
HERMES_MATRIX_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS Telegram のまとめ方のつまみの Matrix 版です。
HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS / _MAX_CHARS / _MAX_MESSAGES Feishu のまとめ役の調整。待ち時間、分割の間隔、1 通あたりの最大文字数、1 まとまりの最大通数です。
HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDS Feishu の添付を送り出すまでの待ち時間。
HERMES_FEISHU_DEDUP_CACHE_SIZE Feishu の webhook の重複除去のキャッシュの大きさ(既定: 1024)。
HERMES_WECOM_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS WeCom のまとめ役の調整。
HERMES_VISION_DOWNLOAD_TIMEOUT 画像を視覚モデルに渡す前に取得するときのタイムアウト(秒。既定: 30)。
HERMES_VISION_MAX_CONCURRENCY プロセス全体で、画像の変換と縮小を同時にいくつまで走らせるか(auxiliary.vision.max_concurrency の上書き。既定はホストの CPU コア数で、上限はありません)。CPU を使う変換の段だけを抑えるので、動画のコマを一気に処理してもすべてのコアを埋め尽くしてイベント ループを飢えさせることがありません。LLM の呼び出しはそのまま並行に走ります。< 1 の値は無視されます。
HERMES_RESTART_DRAIN_TIMEOUT ゲートウェイ。/restart のときに、動いている処理が終わるのを待つ秒数(既定: 900)。これを過ぎると強制的に再起動します。
HERMES_GATEWAY_PLATFORM_CONNECT_TIMEOUT ゲートウェイの起動時と再接続時の、プラットフォームごとの接続のタイムアウト(秒。0 や負の値なら無制限に待ちます)。接続の試みだけでなく Discord のアダプターの準備待ちにも効くので、同期すべきスラッシュコマンドが多いアカウントでも起動の途中で切られません。config.yamlgateway.platform_connect_timeout(既定 30)から橋渡しされ、この環境変数は手動での上書きとして、明示的に設定すれば優先されます。
HERMES_GATEWAY_BUSY_INPUT_MODE ゲートウェイが作業中に入力を受けたときの既定の動き。queuesteerinterrupt です。作業中のプロファイルについては /busy で上書きできます。
HERMES_GATEWAY_BUSY_ACK_ENABLED エージェントが作業中にユーザーが入力したとき、ゲートウェイが受け取りの知らせ(⚡/⏳/⏩)を送るかどうか(既定: true)。false にするとこの知らせだけを止めます。入力はこれまでどおり積まれる・方向を促す・中断するのいずれかで扱われ、チャットへの返事だけが消えます。config.yamldisplay.busy_ack_enabled から橋渡しされます。
HERMES_GATEWAY_NO_SUPERVISE s6-overlay の Docker イメージの中で、hermes gateway run を実行するときに自動監視をやめ、s6 より前の前面実行の動きにします(自動再起動なし。ゲートウェイがコンテナーの主プロセスになります)。真とみなす値は 1trueyes です。CLI の --no-supervise と同じです。s6 のイメージの外では何も起きません。
HERMES_GATEWAY_BOOTSTRAP_STATE s6-overlay の Docker イメージの中で、まっさらなボリュームでのゲートウェイの最初の監視状態を決めます。空のボリュームには gateway_state.json が残っていないので、起動時の調整役は gateway-default の枠を登録しつつ、停止したままにします(最後に記録された状態が running のときだけ自動で起動するためです)。これを running にしておくと、初回起動の設定処理が調整役より*先に* gateway_state.json を用意するので、いちばん最初の起動からゲートウェイが立ち上がります。running という値だけが有効です。初回起動のときだけ働き、すでにある gateway_state.json を上書きすることはないので、意図して止めたゲートウェイは再起動をまたいでも止まったままです。s6 のイメージの外では何も起きません。
GATEWAY_RELAY_URL 実験的なリレー コネクターの WebSocket のベース URL。設定すると、ゲートウェイは汎用の relay アダプターを登録し、こちらからコネクターへつなぎに行きます。config.yamlgateway.relay_url と同じです。
GATEWAY_RELAY_ID hermes gateway enroll か自動の登録処理が割り当てるリレーのゲートウェイ識別子。gateway.relay_id と同じです。
GATEWAY_RELAY_SECRET WebSocket の認証に使う、ゲートウェイごとのリレーの秘密鍵。すでに設定してあれば、自動の登録処理は行われません。gateway.relay_secret と同じです。
GATEWAY_RELAY_DELIVERY_KEY リレーや素通しの認証との互換のために残してある、コネクターが発行する配信キー。いまのリレーでは、受信メッセージはゲートウェイ側の HTTP の受け口ではなく、こちらから張った WebSocket に届きます。
GATEWAY_RELAY_ENROLL_TOKEN --token を明示的に渡さなかったときに hermes gateway enroll が使う登録用のトークン。
GATEWAY_RELAY_PLATFORM リレーの機能の説明に載せるプラットフォーム名(任意)。
GATEWAY_RELAY_BOT_ID リレーの機能の説明に載せるボットの識別子(任意)。
GATEWAY_RELAY_ENDPOINT コールバックや素通しの URL が要るコネクターの動かし方のために載せるゲートウェイのエンドポイント(任意)。既定の WebSocket だけで受信する経路では不要です。gateway.relay_endpoint と同じです。
GATEWAY_RELAY_ROUTE_KEYS コネクターに知らせるリレーの経路キーをカンマ区切りで並べます。gateway.relay_route_keys と同じです。
HERMES_FILE_MUTATION_VERIFIER ターンごとのファイル変更の照合結果を末尾に付けます(既定: true)。有効にすると、そのターンで失敗し、あとから書き込みが成功して置き換わることもなかった write_file / patch の呼び出しを、注意書きとして並べます。0falsenooff のいずれかにすると出なくなります。config.yamldisplay.file_mutation_verifier と同じで、環境変数を設定すればそちらが勝ちます。
HERMES_CRON_TIMEOUT cron の作業でエージェントを動かすときの、無操作のタイムアウトを秒で指定します(既定: 600)。ツールを呼び続けていたり、ストリームのトークンを受け取っていたりする間はいくらでも走れます。止まったときにだけ働きます。0 で無制限です。
HERMES_CRON_SCRIPT_TIMEOUT cron の作業に付けた実行前スクリプトのタイムアウトを秒で指定します(既定: 3600)。スクリプトだけを区切るもので、スキルやエージェントの作業には別枠の HERMES_CRON_TIMEOUT の無操作の上限が効きます。config.yamlcron.script_timeout_seconds でも設定できます。
HERMES_CRON_MEDIA_SEND_TIMEOUT 動いているゲートウェイのアダプター経由で cron の結果を届けるときの、添付 1 つあたりの送信のタイムアウトを秒で指定します(既定: 300)。大きな添付(長い読み上げ音声、大きな書き出し)の送信が間に合わないときは増やしてください。config.yamlcron.media_send_timeout_seconds でも設定できます。
HERMES_CRON_MAX_PARALLEL 1 回の実行で並行して動かす cron の作業の上限(既定: 4)。

NeMo Relay

変数 説明
HERMES_NEMO_RELAY_PLUGINS_TOML Hermes の中核がプロセス全体で読み込む、標準の NeMo Relay の plugins.toml のパスを明示します。設定しなければ、Relay のミドルウェア、動的なプラグイン、書き出しの仕組みは初期化されません。廃止された HERMES_NEMO_RELAY_ATOF_*HERMES_NEMO_RELAY_ATIF_* は無視されるので、それらの出力は指定したファイルの中で設定してください。NeMo Relay の可観測性の設定 を参照してください。

エージェントの振る舞い

変数 説明
HERMES_MAX_ITERATIONS 1 つの会話でツールを呼ぶ回数の上限(既定: 500)
HERMES_INFERENCE_MODEL プロセス単位でモデル名を上書きします(そのセッションでは config.yaml より優先されます)。-m / --model でも指定できます。
HERMES_YOLO_MODE 1 にすると、危険なコマンドの承認を省きます。--yolo と同じです。
HERMES_ACCEPT_HOOKS config.yaml に書かれた、まだ確認していないシェルのフックを、端末での確認なしに自動で承認します。--accept-hookshooks_auto_accept: true と同じです。
HERMES_IGNORE_USER_CONFIG ~/.hermes/config.yaml を読まず、組み込みの既定値を使います(.env の認証情報は読み込まれます)。--ignore-user-config と同じです。
HERMES_IGNORE_RULES AGENTS.mdSOUL.md.cursorrules、記憶、あらかじめ読み込むスキルの自動注入をやめます。--ignore-rules と同じです。
HERMES_SAFE_MODE 不具合を調べるためのモード。すべてのカスタマイズを無効にし、プラグインの探索、MCP サーバーの読み込み、シェルのフックの登録を行いません。--safe-mode を付けると自動で設定されます(上の 2 つのフラグも同時に立ちます)。
HERMES_TOOL_PROGRESS 設定の v12 を下限とするようになってからは使えません。この変数は無視されます。config.yamldisplay.tool_progress を使ってください。
HERMES_TOOL_PROGRESS_MODE ツールの進捗表示のための、互換のために残された非推奨の変数です(ゲートウェイは今も代わりとして読みます)。config.yamldisplay.tool_progress を使ってください。
HERMES_HUMAN_DELAY_MODE 返答の間の取り方。off/natural/custom
HERMES_HUMAN_DELAY_MIN_MS 自分で決める待ち時間の下限(ミリ秒)
HERMES_HUMAN_DELAY_MAX_MS 自分で決める待ち時間の上限(ミリ秒)
HERMES_QUIET 必要のない出力を抑えます(true/false
CODEX_HOME Codex app-server ランタイム を有効にしているとき、Codex CLI が設定と認証を読むディレクトリを上書きします(既定: ~/.codex)。Hermes の移行処理は、管理下の設定のかたまりを <CODEX_HOME>/config.toml に書きます。
HERMES_KANBAN_TASK かんばんのディスパッチャーがワーカーを起こすときに設定します(作業の UUID)。ワーカーと、そこから起きる hermes-tools の MCP のサブプロセスが引き継ぐので、かんばんのツールの制限が正しく効きます。自分で設定しないでください。
HERMES_ACP_SKIP_CONFIGURED_MCP ACP のホスト が、起こした Hermes のサブプロセスに設定します。1 にすると、ACP の JSON-RPC のやり取りを始める前に config.yaml で全体に設定した MCP サーバーを起動しません。セッションの MCP サーバーを session/new で自分から渡すホスト向けです。ACP のセッションが渡したサーバーはこれまでどおり登録されます。それ以外の値なら既定のままです。自分で設定しないでください。
HERMES_API_TIMEOUT LLM の API 呼び出しのタイムアウトを秒で指定します(既定: 1800
HERMES_API_CALL_STALE_TIMEOUT ストリームを使わない呼び出しが止まったとみなすまでの秒数(既定: 90)。設定しなければ手元のプロバイダーでは自動で無効になり、とても大きな文脈では自動で伸びることもあります。config.yamlproviders.<id>.stale_timeout_secondsproviders.<id>.models.<model>.stale_timeout_seconds でも設定できます。
HERMES_STREAM_READ_TIMEOUT ストリームのソケットの読み取りのタイムアウトを秒で指定します(既定: 120)。手元のプロバイダーでは自動で HERMES_API_TIMEOUT まで伸びます。手元の LLM が長いコード生成の途中で切れるなら増やしてください。
HERMES_STREAM_STALE_TIMEOUT ストリームが止まったと判断するまでの秒数(既定: 180)。手元のプロバイダーでは自動で無効になります。この時間の中で何も届かなければ接続を切ります。
HERMES_LOCAL_STREAM_STALE_TIMEOUT 手元のプロバイダー(Ollama、oMLX、llama-cpp)向けの、止まったと判断するまでの上限を秒で指定します(既定: 900)。基本の判定時間が既定のままで、手元のエンドポイントだと分かったときは、以前のように完全に無効にするのではなく、この有限の上限に置き換わります。詰まった手元のサーバーがいつまでも待たされずに検出されます。config.yamlagent.local_stream_stale_timeout でも設定できます。
HERMES_STREAM_RETRIES 一時的なネットワークの不調で、ストリームの途中につなぎ直す回数(既定: 3)。
HERMES_STREAM_STALE_GIVEUP ターンをまたぐ遮断器です。応答が 1 回も完了しないまま、止まったと判断して切ることがこの回数だけ続いたら(ストリームの有無を問いません)、また判定時間だけ待つのではなく、すぐに分かりやすいエラーで打ち切ります(既定: 50 で無効)。応答が完了したとき、/model で切り替えたとき、代替のプロバイダーに切り替わったとき、ターンの始めに本来のプロバイダーへ戻ったときに数え直します。
HERMES_AGENT_TIMEOUT ゲートウェイで、動いているエージェントが無操作になってからのタイムアウトを秒で指定します(既定: 1800、30 分)。ツールを呼ぶたび、トークンが届くたびに数え直します。0 で無効です。
HERMES_GATEWAY_MAX_STARTS 再起動が暴走するのを防ぐ遮断器です。決められた時間の中でゲートウェイを起こせる回数の上限で、これを超えると指数的に間を空けて暴走を断ち切ります(既定: 50 で無効)。config.yamlgateway.respawn_storm.max_starts でも設定できます。
HERMES_GATEWAY_START_WINDOW_S 再起動の暴走を見る時間の幅を秒で指定します(既定: 120)。config.yamlgateway.respawn_storm.window_seconds でも設定できます。
HERMES_AGENT_TIMEOUT_WARNING ゲートウェイ。無操作がこの秒数続いたら注意のメッセージを送ります(既定は HERMES_AGENT_TIMEOUT の 75%)。
HERMES_AGENT_NOTIFY_INTERVAL ゲートウェイ。長く続くエージェントのターンで、途中経過を知らせる間隔を秒で指定します。
HERMES_CHECKPOINT_TIMEOUT ファイルのチェックポイントを作るときのタイムアウトを秒で指定します(既定: 30)。
HERMES_EXEC_ASK ゲートウェイのモードで、実行前の承認を求めます(true/false
HERMES_ENABLE_PROJECT_PLUGINS エージェントの読み込みとダッシュボードのウェブ サーバーの両方で、リポジトリの中の ./.hermes/plugins/ にあるプラグインを自動で見つけるようにします。真とみなす値は 1 / true / yes / on です(大文字小文字は問いません)。それ以外は、0falsenooff、空文字も含めてすべて無効として扱われます(既定)。なお、GHSA-5qr3-c538-wm9j(#29156)以降、ダッシュボードのウェブ サーバーは、この変数を有効にしていてもプロジェクトのプラグインの Python の api ファイルを自動で読み込みません。プロジェクトのプラグインは静的な JS / CSS で画面を拡張できますが、サーバー側の経路は ~/.hermes/plugins/ の下へ移したときにだけ読み込まれます。
HERMES_PLUGINS_DEBUG 1 / true にすると、プラグインの探索の詳しいログを標準エラーに出します。調べたディレクトリ、読んだマニフェスト、飛ばした理由、読み込みや register() の失敗時の完全なトレースが出ます。プラグインを書く人向けです。
HERMES_BACKGROUND_NOTIFICATIONS ゲートウェイでのバックグラウンド処理の知らせ方。concise(既定)、allresulterroroff
HERMES_EPHEMERAL_SYSTEM_PROMPT API を呼ぶ時点で差し込む、その場かぎりのシステム プロンプト(セッションには残りません)
HERMES_PREFILL_MESSAGES_FILE API を呼ぶ時点で差し込む、その場かぎりの前置きメッセージを収めた JSON ファイルのパス。
HERMES_ALLOW_PRIVATE_URLS true/false — ツールが localhost や社内ネットワークの URL を取得できるようにします。ゲートウェイのモードでは既定でオフです。
HERMES_REDACT_SECRETS true/false — ツールの出力、ログ、チャットの返答で秘密の情報を伏せるかどうか(既定: true)。
HERMES_WRITE_SAFE_ROOT 指定したディレクトリの外への write_file / patch の書き込みを完全に禁じるディレクトリの接頭辞(任意)。承認を求めることすらしません。os.pathsep(Unix なら :、Windows なら ;)で区切って複数指定できます。下の HERMES_WRITE_SAFE_ROOT を参照してください。
HERMES_DISABLE_LAZY_INSTALLS 公式の Docker イメージで自動的に設定される内部の橋渡し用の変数で、書き換えられない /opt/hermes の下に実行中の依存関係が入るのを防ぎます。利用者向けの同等の設定は config.yamlsecurity.allow_lazy_installs: false です。これを .env に書かないでください。
HERMES_DISABLE_FILE_STATE_GUARD 1 にすると、patch / write_file での「読んだあとにファイルが変わっています」という見張りを止めます。
HERMES_BUNDLED_SKILLS 起動時に読み込む同梱スキルの一覧を、カンマ区切りで上書きします。
HERMES_OPTIONAL_SKILLS 初回起動時に自動で入れる、任意スキルの名前をカンマ区切りで並べます。
HERMES_DEBUG_INTERRUPT 1 にすると、中断や取り消しの詳しい経過を agent.log に記録します。
HERMES_DUMP_REQUESTS API リクエストの中身をログ ファイルに書き出します(true/false
HERMES_DUMP_REQUEST_STDOUT API リクエストの中身を、ログ ファイルではなく標準出力に書き出します。
HERMES_OAUTH_TRACE 1 にすると、OAuth のトークンの交換と更新の試みを記録します。伏せ字にしたうえで所要時間も含みます。
HERMES_AGENT_HELP_GUIDANCE 独自の運用向けに、システム プロンプトへ案内の文章を追加します。
HERMES_AGENT_LOGO CLI の起動時に出るアスキー アートのロゴを差し替えます。
DELEGATION_MAX_CONCURRENT_CHILDREN delegate_task 1 回あたりの、並行して動くサブエージェントの上限(既定: 3。下限は 1 で、上限はありません)。config.yamldelegation.max_concurrent_children でも設定でき、そちらが優先されます。

HERMES_WRITE_SAFE_ROOT

この変数を設定すると、write_filepatch は指定したディレクトリの接頭辞の中しか書き換えられなくなります。その外のパスはその場で拒否されます。危険なコマンドの承認の仕組みには回らず、押し切るための確認も出ません。

公式の Docker イメージは HERMES_HOME=/opt/data と合わせて HERMES_WRITE_SAFE_ROOT=/opt/data を設定しており、エージェントがマウントしたデータ ボリュームの外に出られないようにしています。

書き込みを閉じ込めるつもりがないなら、~/.hermes/.env に足さないでください。 よくある失敗が、プロジェクトのディレクトリを指しておきながら、エージェントに ~/.hermes/cron/jobs.json~/.hermes/skills/、プロファイルの下のスクリプトを編集させようとすることです。これらは閉じ込めた範囲の外なので、write_file / patch はすべて outside HERMES_WRITE_SAFE_ROOT のエラーで失敗します。

作業用のディレクトリと Hermes の状態の両方を許可したいときは、接頭辞を 2 つとも並べます(順番は関係ありません)。

export HERMES_WRITE_SAFE_ROOT=/path/to/project:/home/you/.hermes

変数を消すか .env から取り除けば、ふつうの書き込みに戻ります(認証情報のパスを禁じるリストは引き続き効きます。ファイル書き込みの安全 を参照してください)。

画面まわり

変数 説明
HERMES_TUI 1 にすると、従来型の CLI ではなく TUI を起動します。--tui を付けるのと同じです。
HERMES_TUI_DIR できあがった ui-tui/ ディレクトリのパス(dist/entry.js と、中身の入った node_modules が必要です)。ディストリビューションや Nix が、初回起動時の npm install を省くために使います。
HERMES_TUI_RESUME 起動時に、指定した ID の TUI セッションを再開します。設定すると hermes --tui は新しいセッションを作らず、名前を付けたセッションを引き継ぎます。接続が切れたときや、ターミナルが落ちたあとにつなぎ直すのに便利です。
HERMES_TUI_THEME TUI の配色を固定します。lightdark、または背景色の 6 文字の 16 進数(ffffff1a1a2e など)です。設定しなければ、COLORFGBG とターミナルへの背景色の問い合わせで自動判別します。この変数は、COLORFGBG を設定しないターミナル(Ghostty、Warp、iTerm2 など)で判別より優先されます。
HERMES_INFERENCE_MODEL config.yaml を書き換えずに、hermes -z / hermes chat のモデルを固定します。--provider と組み合わせて使います。実行ごとに既定のモデルを変えたいスクリプト(一括処理、CI、バッチ実行)から呼ぶときに便利です。

セッションの設定

変数 説明
SESSION_IDLE_MINUTES 何も操作しない時間が N 分続いたらセッションを作り直します(既定: 1440)
SESSION_RESET_HOUR 毎日の作り直しの時刻を 24 時間制で指定します(既定: 4 = 午前 4 時)
HERMES_SESSION_ID Hermes が起こすすべてのツールのサブプロセスに自動で渡されますterminalexecute_code、常駐シェル、Docker / Singularity のバックエンド、委譲したサブエージェントの実行)。エージェントがいまのセッション ID を入れるので、ツールから呼ばれた自作のスクリプトはこれを読んで、自分の出力や記録、副作用をもとの Hermes のセッションと結び付けられます。自分で設定しないでください。 親のシェルから上書きしてもエージェントの実行の外でしか効かず、エージェントがセッションを始めた瞬間に書き換えられます。
AI_AGENT CLI とゲートウェイの入口で hermes-agent に設定され(外側の仕組みがすでに設定している場合を除きます)、ターミナル ツールのすべてのシェル(Docker、SSH、Modal、Daytona、Singularity、Vercel といった離れた場所のバックエンドも含みます)に渡されます。子プロセスがどのエージェントの下で動いているかを示す、広まりつつある共通の決まりです。汎用のツール(たとえば huggingface_hub のエージェント検出)は、これを読んで AI エージェントの下で動いていると判断します。値は公開されているエージェント基盤の一覧にある Hermes の ID と同じです。自分で設定しないでください。
HERMES_AGENT CLI とゲートウェイの入口で true に設定され、ターミナル ツールのすべてのシェルに渡されるので、子プロセスは Hermes の中で動いていることをはっきり判別できます。自分で設定しないでください。

文脈の圧縮(config.yaml のみ)

文脈の圧縮は config.yaml だけで設定します。環境変数はありません。しきい値は compression: のかたまりに、要約に使うモデルやプロバイダーは auxiliary.compression: の下に書きます。

compression:
  enabled: true
  threshold: 0.50
  target_ratio: 0.20         # fraction of threshold to preserve as recent tail
  protect_last_n: 20         # minimum recent messages to keep uncompressed

補助的な処理の上書き

変数 説明
AUXILIARY_VISION_PROVIDER 画像を扱う処理のプロバイダーを上書きします
AUXILIARY_VISION_MODEL 画像を扱う処理のモデルを上書きします
AUXILIARY_VISION_BASE_URL 画像を扱う処理で直接つなぐ OpenAI 互換のエンドポイント
AUXILIARY_VISION_API_KEY AUXILIARY_VISION_BASE_URL と組で使う API キー

処理ごとに直接エンドポイントを指定した場合、Hermes はその処理に設定した API キーか OPENAI_API_KEY を使います。そうした独自エンドポイントに OPENROUTER_API_KEY を使い回すことはありません。

代替のプロバイダー(config.yaml のみ)

主なモデルの切り替え先の連なりは config.yaml だけで設定します。環境変数はありません。最上位に fallback_providers の一覧を作り、providermodel のキーを書けば、メインのモデルがエラーになったときに自動で切り替わります。プロバイダーが auto の補助的な処理も、Hermes 内蔵の探索の流れより先にこの連なりを見ます。

fallback_providers:
  - provider: openrouter
    model: anthropic/claude-sonnet-4

以前の、最上位に 1 つだけ書く fallback_model の形も互換のために今も読まれますが、これから書くなら fallback_providers を使ってください。処理ごとの補助的な方針には config.yamlauxiliary.<task>.fallback_chain を使います。こちらにも環境変数はありません。

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

プロバイダーの経路選び(config.yaml のみ)

これらは ~/.hermes/config.yamlprovider_routing の節に書きます。

キー 説明
sort プロバイダーの並べ方。"price"(既定)、"throughput""latency"
only 許可するプロバイダーの識別名の一覧(例: ["anthropic", "google"]
ignore 使わないプロバイダーの識別名の一覧
order 順に試すプロバイダーの識別名の一覧
require_parameters リクエストのすべての引数に対応しているプロバイダーだけを使います(true/false
data_collection "allow"(既定)か、データを保存するプロバイダーを外す "deny"