環境変数の一覧
目次
- LLM の提供元
- 提供元の認証(OAuth)
- ツールの API
- スキル用の API キー
- Langfuse による可観測性
- Nous Tool Gateway
- ターミナルのバックエンド
- SSH のバックエンド
- コンテナの資源(Docker、Singularity、Modal、Daytona)
- 持続シェル
- 外向き通信のプロキシ(サンドボックスに注入されます)
- メッセージング
- ウェブのダッシュボードと Hermes Desktop
- Microsoft Graph(Teams の会議)
- Microsoft Graph の webhook の受け口
- Teams の会議の要約の配信
- LINE Messaging API
- ntfy(プッシュ通知)
- IRC
- SimpleX
- Photon
- Buzz(Nostr のコミュニティ)
- Microsoft Teams(アダプター)
- Raft
- メッセージングの細かい調整
- NeMo Relay
- エージェントの振る舞い
- HERMES_WRITE_SAFE_ROOT
- 内部の橋渡しの変数
- 画面
- セッションの設定
- 文脈の圧縮(config.yaml のみ)
- 補助の処理の上書き
- 予備の提供元(config.yaml のみ)
- 提供元の振り分け(config.yaml のみ)
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.yaml の model.base_url で設定します。 |
HERMES_OPENROUTER_CACHE |
OpenRouter の応答キャッシュを有効にします(1/true/yes/on)。config.yaml の openrouter.response_cache より優先されます。応答のキャッシュ を参照してください。 |
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-api プロバイダー)です。OPENAI_BASE_URL を設定しているときは、OpenAI 互換の独自エンドポイント用のキーになります。その場合、キーはその URL とまったく同じオリジン(スキーム・ホスト・ポート)にだけ送られ、別のポートや同じホストの http:// に送られることはありません。OpenRouter のキーとして扱われるのは sk-or- で始まる場合だけです。OpenRouter のキーは OPENROUTER_API_KEY に入れてください |
OPENAI_BASE_URL |
独自エンドポイント(VLLM、SGLang など)のベース URL |
HERMES_CODEX_BASE_URL |
openai-codex(ChatGPT の契約)の提供元を、既定の Codex バックエンドではなくプロキシ経由にします。この資格情報を使うすべての場面、つまりプールの解決、補助・生のクライアント、401/429 での資格情報の切り替えに効きます。これを設定しない場合は、model.provider: openai-codex の下の model.base_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_* か、細かい権限の PAT github_pat_*。従来型の 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 のベース URL を指定する古い方法です。代わりに config.yaml で model.provider: actual と model.base_url を設定してください。YAML 側の URL が優先されます。既定は https://api.actual.inc/v1 です。 |
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 |
テンセント TokenHub の API キー(tokenhub.tencentmaas.com) |
TOKENHUB_BASE_URL |
テンセント TokenHub のベース URL を上書きします(既定: https://tokenhub.tencentmaas.com/v1) |
TOKENPLAN_API_KEY |
テンセント TokenPlan の API キー(LKEAP。Anthropic Messages のエンドポイント) |
TOKENPLAN_BASE_URL |
テンセント 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.yaml の vertex: の下に設定します |
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 を使います) |
DASHSCOPE_CN_BASE_URL |
alibaba-cn(中国本土)の DashScope のベース URL を上書きします |
ALIBABA_CODING_PLAN_API_KEY |
Qwen Coding Plan の API キー(alibaba-coding-plan。alibaba-coding-plan-cn の予備としても使われます) |
ALIBABA_CODING_PLAN_CN_API_KEY |
中国本土の alibaba-coding-plan-cn 用の Qwen Coding Plan の API キー(共通のキーより先に見るので、中国版の行だけが有効になります) |
ALIBABA_CODING_PLAN_BASE_URL |
Qwen Coding Plan のベース URL を上書きします(国際版) |
ALIBABA_CODING_PLAN_CN_BASE_URL |
Qwen Coding Plan のベース URL を上書きします(中国本土) |
ALIBABA_TOKEN_PLAN_API_KEY |
Alibaba Model Studio Token Plan の API キー(alibaba-token-plan。alibaba-token-plan-cn の予備としても使われます) |
ALIBABA_TOKEN_PLAN_CN_API_KEY |
中国本土の alibaba-token-plan-cn 用の Token Plan の API キー(共通のキーより先に見ます) |
ALIBABA_TOKEN_PLAN_BASE_URL |
Token Plan のベース URL を上書きします(国際版) |
ALIBABA_TOKEN_PLAN_CN_BASE_URL |
Token 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-1、eu-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 |
プロセス単位でモデル名を上書きします(定時実行の仕組みが使います。ふだんは config.yaml のほうをおすすめします) |
VOICE_TOOLS_OPENAI_KEY |
OpenAI の音声認識・読み上げで優先して使われる OpenAI のキー |
HERMES_LOCAL_STT_COMMAND |
手元で音声認識をするコマンドの雛形(任意)。{input_path}、{output_dir}、{language}、{model} を差し込めます |
HERMES_LOCAL_STT_LANGUAGE |
音声認識で使う既定の言語のヒント。config.yaml に提供元ごとの language を設定していないとき、local(faster-whisper)の提供元、HERMES_LOCAL_STT_COMMAND、手元の whisper CLI への切り替え(既定: en)、Groq、xAI が使います |
HERMES_HOME |
設定と利用者データを置くホームを選びます。値の中の ~ や $VAR は展開されるので(fish は VAR=~/… の中の ~ を展開しません)、現在のディレクトリからの相対にはなりません。既定は POSIX では ~/.hermes、Windows では %LOCALAPPDATA%\hermes で、公式の Docker イメージは /opt/data を使います。プロファイルや実行時の状況によって、より個別のホームが選ばれることもあります。 |
HERMES_DISABLE_WINDOWS_UTF8 |
Windows 専用。 1 にすると UTF-8 の入出力の下駄(configure_windows_stdio())を切り、コンソールのロケールのコードページに戻します。文字化けの原因を切り分けるときには便利ですが、ふだんの運用で正しい設定であることはまずありません |
HERMES_KANBAN_HOME |
かんばんの盤(DB、作業場、ワーカーのログ)の土台になる共有の Hermes ルートを上書きします。指定が無ければ get_default_hermes_root()(有効なプロファイルの親)になります。テストや変わった構成で役に立ちます |
HERMES_KANBAN_BOARD |
このプロセスで使うかんばんの盤を固定します。~/.hermes/kanban/current より優先されます。ディスパッチャーはこれをワーカーの子プロセスの環境に入れるので、ワーカーは物理的に別の盤のタスクを見られません。既定は default です。slug の条件は、小文字の英数字とハイフンとアンダースコアで 1〜64 文字です |
HERMES_KANBAN_DB |
かんばんのデータベースファイルのパスを直接固定します(最優先。HERMES_KANBAN_BOARD と HERMES_KANBAN_HOME より強いです)。ディスパッチャーはこれをワーカーの子プロセスの環境に入れるので、プロファイルのワーカーもディスパッチャーの盤に揃います |
HERMES_KANBAN_WORKSPACES_ROOT |
かんばんの作業場のルートを直接固定します(作業場については最優先で、HERMES_KANBAN_HOME より強いです)。ディスパッチャーはこれをワーカーの子プロセスの環境に入れます |
HERMES_KANBAN_DISPATCH_IN_GATEWAY |
kanban.dispatch_in_gateway を実行時に上書きします。0、false、no、off のいずれかにすると、ゲートウェイが内蔵のかんばんディスパッチャーを起動しなくなります。空でない他の値では有効になります。別のディスパッチャーのプロセスが盤を持っているときに便利です。 |
提供元の認証(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 を上書きします(開発・検証用)。多重化しているときはプロファイルごとに、対象プロファイルの .env に設定します。 |
NOUS_INFERENCE_BASE_URL |
Nous の推論 API の URL を上書きします。Portal の応答が名乗ってよい、本番以外の唯一のホストでもあります。Portal が返した推論 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)。Linux と macOS では execute_code の子プロセスへ TZ としても渡されます。Windows では子プロセスは OS のタイムゾーンのままになります。Windows の C ランタイムは POSIX 形式の TZ しか解釈せず、IANA の名前を誤って別の時差に読んでしまうためです |
ツールの 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、キー無しでの利用) |
TAVILY_BASE_URL |
Tavily のエンドポイントを上書きします。社内プロキシや、自前で立てた Tavily 互換の検索バックエンドで役に立ちます。GROQ_BASE_URL と同じ考え方です。 |
PERPLEXITY_API_KEY |
perplexity のウェブバックエンド用の Perplexity Search の API キー — 順位付きの検索結果に加えて、抽出用に検索語と関係のあるページの抜粋が得られます(perplexity.ai/account/api) |
PERPLEXITY_BASE_URL |
プロキシ向けに Perplexity のエンドポイントを上書きします(既定 https://api.perplexity.ai。任意) |
SEARXNG_URL |
自前で無料で立てられるウェブ検索、SearXNG のインスタンスの URL — API キーは不要です(searxng.github.io) |
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 ヘッダーとして送る bearer トークン(任意) |
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 系)、lightpanda(Browser Use のモードでは lightpanda serve を起動し、組み込みのツールは agent-browser へ --engine lightpanda を渡します)、chrome のいずれか。config.yaml の browser.engine と同じです。 |
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) — 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(API の上限を上げる、スキルの公開)と、デスクトップアプリの更新確認に使う GitHub のトークン(GH_TOKEN も参照されます。どちらも無ければ、デスクトップは gh CLI のログイン、次に匿名の順で試します) |
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 のメモリープロバイダーへの API 呼び出しのタイムアウト(秒。既定: 60)。/sync や on_session_switch のときに応答が遅く、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 による可観測性
公式カタログのプラグイン langfuse(以前は observability/langfuse として同梱されていました)用の環境変数です。~/.hermes/.env に設定してください。効かせるには、先にプラグインをインストールしておく必要があります(hermes plugins install langfuse)。
| 変数 | 説明 |
|---|---|
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 |
記録に付ける環境のタグ(production、staging など) |
HERMES_LANGFUSE_RELEASE |
記録に付けるリリースや版のタグ |
HERMES_LANGFUSE_SAMPLE_RATE |
SDK の抽出率 0.0〜1.0(既定: 1.0) |
HERMES_LANGFUSE_MAX_CHARS |
直列化したデータの項目ごとの切り詰め長(既定: 12000) |
HERMES_LANGFUSE_MAX_DEPTH |
記録したツールの入出力で保つ入れ子の深さ。これを超えると値は <max-depth> になります(既定: 4。おかしな値のときは警告して既定を使います) |
HERMES_LANGFUSE_CAPTURE |
内容をどこまで記録するかの設定です。metadata(内容は記録しない)、sanitized(既定。秘密情報を伏せたうえで切り詰める)、full(切り詰めだけ行う)のいずれかです |
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 model や hermes 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 |
バックエンド: local、docker、ssh、singularity、modal、daytona、vercel_sandbox |
HERMES_DOCKER_BINARY |
Hermes が呼び出すコンテナのコマンドを上書きします(podman、/usr/local/bin/docker など)。設定しなければ PATH 上の docker か podman を自動で探します。両方入っていて既定でないほうを使いたいときや、コマンドが PATH の外にあるときに必要です。 |
TERMINAL_DOCKER_IMAGE |
Docker のイメージ(既定: nousresearch/hermes-sandbox:desktop) |
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 のランタイム(node24、node22、python3.13) |
TERMINAL_TIMEOUT |
コマンドのタイムアウト(秒) |
TERMINAL_LIFETIME_SECONDS |
ターミナルセッションを保つ最長の時間(秒) |
TERMINAL_CWD |
ゲートウェイや定時実行のターミナルセッションの作業ディレクトリを直接上書きする、古い方法です。config.yaml の terminal.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 |
秘密鍵のパス |
コンテナの資源(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 |
SSH のバックエンドで、エクスポートした環境変数をコマンドからコマンドへ引き継ぎます(既定: true)。config.yaml の terminal.persistent_shell でも設定できます |
TERMINAL_SSH_PERSISTENT |
SSH のバックエンド向けの上書きです。TERMINAL_PERSISTENT_SHELL より優先されます(既定: そちらに従います) |
TERMINAL_LOCAL_PERSISTENT |
手元のバックエンドで、エクスポートした環境変数をコマンドからコマンドへ引き継ぎます(既定: true) |
外向き通信のプロキシ(サンドボックスに注入されます)
これらの環境変数はホスト側には設定されません。proxy.enabled: true のときに 外向き通信のプロキシ の仕組みが Docker のサンドボックスへ注入します。この版で組み込まれているバックエンドは Docker だけです。
| 変数 | 説明 |
|---|---|
HERMES_EGRESS_PROXY |
外向きのプロキシが有効なとき、サンドボックスの中で 1 になります。エージェントのコードはこれを見て、TLS を仲介するプロキシの背後で動いていることを判断できます。 |
提供元の環境変数(OPENROUTER_API_KEY、OPENAI_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.yaml の proxy: の下にあります。外向き通信のプロキシ → 設定 を参照してください。
メッセージング
| 変数 | 説明 |
|---|---|
TELEGRAM_BOT_TOKEN |
Telegram のボットのトークン(@BotFather から取得します) |
TELEGRAM_ALLOWED_USERS |
ボットを使えるユーザー ID をカンマ区切りで(個別のチャット、グループ、フォーラムのすべてに効きます) |
TELEGRAM_ALLOW_ALL_USERS |
どの Telegram 利用者でもボットを動かせるようにします(開発時のみ)。 |
TELEGRAM_GROUP_ALLOWED_USERS |
グループやフォーラムでのみ許可する送信者のユーザー ID をカンマ区切りで(個別のチャットへの権限は与えません)。チャット ID の形(- で始まる値)も、#17686 より前の設定との互換のためにチャット ID として今も受け付けますが、非推奨の警告が出ます。 |
TELEGRAM_GROUP_ALLOWED_CHATS |
グループやフォーラムのチャット ID をカンマ区切りで。そこにいる人は誰でも使えます |
TELEGRAM_HOME_CHANNEL |
定時実行の配信先になる既定の Telegram のチャットやチャンネル |
TELEGRAM_HOME_CHANNEL_NAME |
Telegram の既定チャンネルの表示名 |
TELEGRAM_CRON_THREAD_ID |
定時実行の配信を受けるフォーラムのトピック ID。定時実行に限って TELEGRAM_HOME_CHANNEL_THREAD_ID より優先されます。トピックを使う運用ではこれを設定してください。定時実行のメッセージへの返信が、システムの入口ではなく新しいセッションを開くようになります(#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.yaml の telegram.require_mention と同じです。 |
TELEGRAM_MENTION_PATTERNS |
Telegram のグループで呼びかけの判定を有効にしたときに受け付ける、呼びかけ語の正規表現。JSON の配列、改行区切り、カンマ区切りのいずれかで書けます。telegram.mention_patterns と同じです。 |
TELEGRAM_EXCLUSIVE_BOT_MENTIONS |
有効にすると、Telegram のグループで @...bot と明示されたときは、返信や呼びかけ語による判定より先に、名指しされたボットにだけ届きます。既定: true。telegram.exclusive_bot_mentions と同じです。 |
TELEGRAM_BOTS_REQUIRE_MENTION |
有効にすると、ほかのボットからのメッセージは @thisbot と明示しないと応答しません。引用の返信だけでは無視されるので、ボット同士が延々と返信し合うのを止められます。人からの返信には影響しません。既定: false。telegram.bots_require_mention と同じです。 |
TELEGRAM_REPLY_TO_MODE |
返信を紐づける挙動: off、first(既定)、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 との「または」条件です)。Members の権限が自動で有効になります。運営チームの入れ替わりが多いときに便利で、ロールを付ければ自動で権限が行き渡ります。 |
DISCORD_ALLOWED_CHANNELS |
Discord のチャンネル ID をカンマ区切りで。設定すると、ボットはこれらのチャンネル(と、許可していれば個別のチャット)でだけ応答します。config.yaml の discord.allowed_channels より優先されます。 |
DISCORD_PROXY |
Discord への接続に使うプロキシの URL — HTTPS_PROXY より優先されます。http://、https://、socks5:// に対応します |
DISCORD_HOME_CHANNEL |
定時実行の配信先になる既定の Discord のチャンネル |
DISCORD_HOME_CHANNEL_NAME |
Discord の既定チャンネルの表示名 |
DISCORD_COMMAND_SYNC_POLICY |
起動時にスラッシュコマンドを揃える方針: 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_FREE_RESPONSE_AUTO_THREAD |
true にすると、メンション不要のチャンネル(DISCORD_FREE_RESPONSE_CHANNELS に挙げたもの)でも、最上位のメッセージごとにスレッドを自動で作ります。既定は false で、そのままチャンネル内で返信します。DISCORD_AUTO_THREAD=true が必要で、DISCORD_NO_THREAD_CHANNELS のほうが依然として優先されます。 |
DISCORD_REACTIONS |
処理中にメッセージへ絵文字のリアクションを付けます(既定: true) |
DISCORD_IGNORED_CHANNELS |
ボットが決して応答しないチャンネル ID をカンマ区切りで |
DISCORD_NO_THREAD_CHANNELS |
ボットが自動のスレッド化をせずに応答するチャンネル ID をカンマ区切りで |
DISCORD_REPLY_TO_MODE |
返信を紐づける挙動: off、first(既定)、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)。 |
DISCORD_MISSED_MESSAGE_BACKFILL |
discord.missed_message_backfill.enabled の代わりに使える環境変数です。切断中に取りこぼしたメッセージを流し直します(既定: false)。取りこぼしたメッセージの取り込み を参照してください。 |
DISCORD_MISSED_MESSAGE_BACKFILL_CHANNELS |
調べるチャンネル ID をカンマ区切りで(discord.missed_message_backfill.channels の代わり。空なら discord.free_response_channels、* なら届く範囲のすべてのテキストチャンネル)。 |
DISCORD_MISSED_MESSAGE_BACKFILL_WINDOW_SECONDS |
どこまでさかのぼって調べるか(window_seconds の代わり。既定 21600、最小 60)。 |
DISCORD_MISSED_MESSAGE_BACKFILL_LIMIT |
1 回の走査でチャンネルごとに取得する最大件数(limit の代わり。既定 100、1〜500)。 |
DISCORD_MISSED_MESSAGE_BACKFILL_MAX_DISPATCHES |
1 回の走査で流し直す最大件数(max_dispatches の代わり。既定 10、1〜100)。 |
DISCORD_MISSED_MESSAGE_BACKFILL_MAX_ATTEMPTS |
再接続をまたいで、同じメッセージを流し直す通算の上限(max_attempts の代わり。既定 3、1〜100)。 |
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(既定)、mentions、all。自分自身のメッセージは常に無視します。 |
SLACK_THREAD_REQUIRE_MENTION |
Slack のスレッドでの返信には @メンションを必須にしつつ、最上位でメンション不要のチャンネルはそのまま残します |
SLACK_HOME_CHANNEL |
定時実行の配信先になる既定の 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 |
定時実行の配信先になる既定のスペース(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_GROUP_POLICY |
グループの受け入れ方: pairing(既定。グループからは何も転送しません)、allowlist(下のグループ JID)、open(すべてのグループ。参加者は WHATSAPP_ALLOWED_USERS、ペアリング、WHATSAPP_ALLOW_ALL_USERS のいずれかが必要です)、disabled |
WHATSAPP_GROUP_ALLOWED_USERS |
WHATSAPP_GROUP_POLICY=allowlist のときに受け入れるグループ JID をカンマ区切りで(120363001234567890@g.us など) |
WHATSAPP_HOME_CHANNEL |
定時実行や通知の配信先になる既定のチャット 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 Account の ID(任意)。設定すると、受け取る webhook はこの 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(定時実行などで使います) |
WHATSAPP_CLOUD_DM_POLICY |
Cloud 版での個別メッセージの受け入れ方(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 |
定時実行や通知の配信先になる電話番号 |
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_AUTHSERV_ID |
受信サーバーが付ける一番上の Authentication-Results ヘッダーにある authserv-id を正確に指定します。送信者の認証を無効にしていない限り(EMAIL_TRUST_FROM_HEADER=true)必須です |
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 |
別のプラットフォームからの配信や定時実行に使う、固定のロボットの webhook URL。 |
DINGTALK_HOME_CHANNEL |
定時実行や通知の配信先になる既定の会話 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 |
定時実行の配信と通知に使う Feishu のチャット ID |
FEISHU_HOME_CHANNEL_NAME |
Feishu の既定チャンネルの表示名。 |
FEISHU_ALLOW_ALL_USERS |
どの Feishu 利用者でもボットを動かせるようにします(開発時のみ)。 |
WECOM_BOT_ID |
管理コンソールで取得する WeCom の AI ボットの ID |
WECOM_SECRET |
WeCom の AI ボットの秘密 |
WECOM_WEBSOCKET_URL |
WebSocket の URL を指定します(既定: wss://openws.work.weixin.qq.com) |
WECOM_ALLOWED_USERS |
ボットへ送れる WeCom のユーザー ID をカンマ区切りで |
WECOM_HOME_CHANNEL |
定時実行の配信と通知に使う WeCom のチャット ID |
WECOM_CALLBACK_CORP_ID |
コールバック方式の自作アプリで使う WeCom の企業の Corp ID |
WECOM_CALLBACK_CORP_SECRET |
その自作アプリの Corp の秘密 |
WECOM_CALLBACK_AGENT_ID |
その自作アプリの Agent 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 |
個別メッセージの方針: open、allowlist、pairing、disabled(既定: open) |
WEIXIN_GROUP_POLICY |
グループのメッセージの方針: open、allowlist、disabled(既定: disabled) |
WEIXIN_ALLOWED_USERS |
ボットへ個別に送れる Weixin のユーザー ID をカンマ区切りで |
WEIXIN_GROUP_ALLOWED_USERS |
ボットとやり取りできる Weixin のグループチャットの ID(参加者のユーザー ID ではありません)をカンマ区切りで。変数名は昔の名残で、実際にはグループの ID を入れます。iLink が実際にグループのイベントを届ける場合にだけ効きます。QR コードでログインした iLink のボットの身元(...@im.bot)は、ふつうの WeChat のグループのメッセージを受け取らないのが一般的です。 |
WEIXIN_HOME_CHANNEL |
定時実行の配信と通知に使う 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 |
定時実行や通知の配信先になる電話番号やメールアドレス |
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/false。QQ_ALLOWED_USERS より優先されます) |
QQBOT_HOME_CHANNEL |
定時実行の配信と通知に使う 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 |
こちらから送るメッセージ(定時実行、通知)の配信先になるチャンネル 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 |
定時実行や通知の配信先になる既定のルーム ID。 |
MATRIX_HOME_CHANNEL_NAME |
Matrix の既定ルームの表示名。 |
MATRIX_ALLOWED_ROOMS |
ボットが応答してよい Matrix のルーム ID をカンマ区切りで。個別のやり取りと自動判定されたルーム(名前にかかわらず、参加者が 2 人以下のルーム)には適用されず、そちらは常に応答します。 |
MATRIX_HOME_ROOM |
こちらから送るメッセージの配信先になるルーム ID(たとえば !abc123:matrix.org) |
MATRIX_ENCRYPTION |
端から端までの暗号化を有効にします(true/false。既定: false) |
MATRIX_E2EE_MODE |
Matrix の端から端までの暗号化の扱い: off、optional、required。設定すると MATRIX_ENCRYPTION より優先されます。 |
MATRIX_DEVICE_ID |
再起動をまたいで暗号化の状態を保つための、固定の Matrix のデバイス ID(たとえば HERMES_BOT)。これが無いと起動のたびに鍵が変わり、過去のルームの復号ができなくなります。 |
MATRIX_REACTIONS |
受信したメッセージに、処理の進み具合を示す絵文字のリアクションを付けます(既定: true)。false で切れます。 |
MATRIX_REQUIRE_MENTION |
ルームでは @mention を必須にします(既定: true)。false にするとすべてのメッセージに応答します。参加者が 2 人以下のルームは個別のやり取りと自動判定され、この設定にかかわらずメンションは不要になります。あえて 2 人のルームをふつうのルームとして扱いたいときは、3 人目を足してください。 |
MATRIX_FREE_RESPONSE_ROOMS |
@mention なしでボットが応答するルーム ID をカンマ区切りで。個別のやり取りと自動判定されたルーム(参加者 2 人以下)はもともとメンションなしで応答するので、この一覧を見ません。 |
MATRIX_IGNORE_USER_PATTERNS |
無視する Matrix の橋渡し / アプリサービスの代理ユーザー ID の正規表現をカンマ区切りで |
MATRIX_PROCESS_NOTICES |
受信した Matrix の m.notice のイベントを処理します(既定: false) |
MATRIX_SESSION_SCOPE |
プロジェクト用ルームでのセッションの単位: auto、room、thread(既定: auto) |
MATRIX_ALLOW_ROOM_MENTIONS |
ルーム全員へ通知する @room のメンションを送れるようにします(既定: false) |
MATRIX_AUTO_THREAD |
ルームのメッセージでスレッドを自動で作ります(既定: true)。個別のやり取りと自動判定されたルーム(参加者 2 人以下)には適用されず、そちらは MATRIX_DM_AUTO_THREAD に従います。 |
MATRIX_DM_AUTO_THREAD |
Matrix の個別のやり取りでスレッドを自動で作ります(既定: false) |
MATRIX_DM_MENTION_THREADS |
個別のやり取りでボットが @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 のプラットフォームとツールが使えるようになります。カタログの homeassistant プラグインが必要です。詳しくは Home Assistant を参照) |
HASS_URL |
Home Assistant プラグイン: Home Assistant の URL(既定: http://homeassistant.local:8123) |
HASS_HOME_CHANNEL |
Home Assistant プラグイン: 宛先を書かない deliver: homeassistant(cron や Webhook)で使う既定の通知先 |
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 サーバーの認証に使う bearer トークン。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.yaml の gateway.proxy_url でも設定できます。 |
GATEWAY_PROXY_KEY |
プロキシ方式で遠隔の API サーバーへ認証するための bearer トークン。遠隔側の API_SERVER_KEY と一致させる必要があります。 |
MESSAGING_CWD |
ゲートウェイの作業ディレクトリを指定する、互換のために残っている古い方法です。config.yaml の terminal.cwd をおすすめします。 |
GATEWAY_ALLOWED_USERS |
すべてのプラットフォームで共通して許可するユーザー ID をカンマ区切りで |
GATEWAY_ALLOW_ALL_USERS |
許可一覧なしですべての利用者を受け入れます(true/false。既定: false)。config.yaml の gateway.allow_all_users でも設定でき、両方あれば環境変数が勝ちます。 |
ウェブのダッシュボードと Hermes Desktop
ウェブのダッシュボード の認証と、Hermes Desktop を遠隔のバックエンドにつなぐ ための設定です。秘密だけを環境変数に置くという決まりに従い、資格情報は ~/.hermes/.env に置きます。OAuth の client_id は config.yaml の dashboard.oauth の下に書くほうが向いています(環境変数があればそちらが勝ちます)。
ダッシュボードの認証は 3 種類が同梱されています。Hermes Desktop を遠隔につなぐ場合や、インターネットに面したダッシュボードでは、OAuth(Nous Portal) がおすすめです。HERMES_DASHBOARD_OAUTH_CLIENT_ID を設定してください(hermes dashboard register で発行できます)。同梱のユーザー名とパスワードの方式(HERMES_DASHBOARD_BASIC_AUTH_*)は、信頼できる LAN や VPN の内側にあるバックエンドに最も手早い選択肢ですが、そのままインターネットに公開するのには向きません。自前の認証基盤で認証したい場合は、自前運用の 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_SESSION_TOKEN |
ダッシュボードの取り扱いに注意が要る /api の経路で使う、プロセスごとのセッショントークン。hermes dashboard を起動した側(デスクトップの外枠、リンク型の連携)が発行します。親プロセスが渡した値はそのまま保たれ、~/.hermes/.env に HERMES_DASHBOARD_SESSION_TOKEN の行があっても置き換わりません。設定が無ければ、サーバーが起動のたびに新しいトークンを作ります。 |
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、あるいは不具合の調査で、書き換え可能な管理下のインストールを確かめる前に特定の hermes を Electron に指させたいときに使います。 |
HERMES_DESKTOP_HERMES_ROOT |
hermes desktop --hermes-root が使う、ソースを取得した場所の指定。同梱の初回起動時のインストールや、PATH 上の既存の hermes より先に見られます。 |
HERMES_DESKTOP_IGNORE_EXISTING |
1 にすると、バックエンドを決めるときにインストール済みの実行環境(~/.hermes/hermes-agent、Windows では %LOCALAPPDATA%\hermes\hermes-agent)を飛ばします。ローカルのバックエンドは起動せず、Desktop は接続するかインストールするかの選択を表示します。同梱の実行環境、HERMES_DESKTOP_HERMES_ROOT、パッケージ化されていないソースのチェックアウト、HERMES_DESKTOP_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 dev、hgui)では自動で開きますが、パッケージ版では決して開かず、ここに何を書いても変わりません。開発時の実行で閉じたいときは off にしてください。このポートに届くものは、描画側でコードを実行できます。 |
HERMES_DESKTOP_NVIDIA_SWIFTSHADER |
(Linux のデスクトップ版で、NVIDIA のみ)EGL の検査が壊れているドライバー系列(580.x、#40077)で描画を SwiftShader に回す EGL の代替経路を上書きします。1 は代替経路を強制的に有効にします。将来の系列で同じクラッシュが再発し、まだ対象の一覧に入っていないときの復旧手段です。0 は代替経路を使わず、自己責任でネイティブの GPU 経路を使います。別の条件ですでに GPU が無効になっている場合(リモート表示、WSLg、HERMES_DESKTOP_DISABLE_GPU=0)には、強制的な有効化は効きません。 |
HTTPS_PROXY / HTTP_PROXY / NO_PROXY |
(デスクトップ側)アプリ内の更新確認(Help → Check for Updates… と、控えめに出る更新の帯)は、これらの標準の変数が示すプロキシを通って api.github.com に届きます。NO_PROXY の除外も尊重され、curl、npm、git と同じ作法です。設定が無ければ直接つなぎます。 |
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/.env に chmod 600 で保存し、Azure のポータルから定期的に入れ替えてください。 |
MSGRAPH_SCOPE |
クライアント資格情報でトークンを取るときの OAuth2 のスコープ(既定: https://graph.microsoft.com/.default)。 |
MSGRAPH_AUTHORITY_URL |
Microsoft のアイデンティティ基盤の認証局(既定: 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.yaml の platforms.teams.extra の下でも設定でき、両方あれば環境変数が優先されます。Microsoft Teams → 会議の要約の配信 をご覧ください。
| 変数 | 説明 |
|---|---|
TEAMS_DELIVERY_MODE |
graph か incoming_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 |
ボットへ個別に送れるユーザー ID をカンマ区切りで(U で始まります)。 |
LINE_ALLOWED_GROUPS |
ボットが応答するグループ ID をカンマ区切りで(C で始まります)。 |
LINE_ALLOWED_ROOMS |
ボットが応答するルーム ID をカンマ区切りで(R で始まります)。 |
LINE_ALLOW_ALL_USERS |
開発時だけの逃げ道で、送信元を問わず受け入れます。既定: false。 |
LINE_HOME_CHANNEL |
deliver: line を指定した定時実行の既定の配信先。 |
LINE_SLOW_RESPONSE_THRESHOLD |
応答が遅いときにテンプレートのボタンを出すまでの秒数(既定: 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.)。 |
LINE_EXPIRED_TEXT |
保存していた答えが無くなった(期限切れ、あるいはプロセスの状態とともに失われた)ボタンを押したときの返事(既定: That request has expired — send your message again.)。 |
ntfy(プッシュ通知)
ntfy は HTTP を使った軽いプッシュ通知の仕組みです。ntfy のモバイルアプリ からトピックを購読し、そのトピックへ投稿するとエージェントと話せます。
| 変数 | 説明 |
|---|---|
NTFY_TOPIC |
購読するトピック(受信用)。必須です。 |
NTFY_SERVER_URL |
サーバーの URL(既定: https://ntfy.sh)。プライバシーを重視するなら自前で立てた ntfy を指してください。 |
NTFY_TOKEN |
認証のトークン(任意)。bearer のトークン(たとえば 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 を指定した定時実行の既定の配信先。 |
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 |
定時実行や通知の配信先になるチャンネル(既定は 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 |
定時実行や通知の配信先になる既定の連絡先 / グループの ID。 |
SIMPLEX_HOME_CHANNEL_NAME |
既定チャンネルの人が読むための名前(既定は ID)。 |
Photon
Node のサイドカーを通して、Hermes を Photon / Spectrum(iMessage やその他の Spectrum のプラットフォーム)につなぎます。Photon のメッセージングのガイド をご覧ください。
| 変数 | 説明 | |
|---|---|---|
PHOTON_PROJECT_ID |
Spectrum のプロジェクト ID(プロジェクトの spectrumProjectId。hermes 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 |
定時実行や通知の既定の配信先。Spectrum のスペース ID、個別チャットの GUID、E.164 形式の電話番号のいずれかです。 | |
PHOTON_HOME_CHANNEL_NAME |
既定チャンネルの人が読むための名前。 | |
PHOTON_MARKDOWN |
エージェントの返信をマークダウンで送ります。iMessage はそのまま描画し、ほかの Spectrum のプラットフォームでは素の文字になります(true/false。既定 true)。 |
|
PHOTON_REACTIONS |
処理の状況として 👀/👍/👎 のタップバックを付け、ボットのメッセージへのタップバックをエージェントへ渡します(true/false。既定 false)。 |
|
PHOTON_READ_RECEIPTS |
Hermes へ渡したあと、受信した iMessage を既読にします(true/false。既定 true)。 |
|
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_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 |
定時実行や通知の配信先になるチャンネルの UUID(既定は最初に見にいくチャンネル) |
BUZZ_ALLOWED_USERS |
エージェントと話せる npub か 16 進の公開鍵をカンマ区切りで |
BUZZ_ALLOW_ALL_USERS |
コミュニティの誰でもエージェントと話せるようにします(true/false) |
BUZZ_TRANSPORT |
受信の経路: auto(WebSocket。だめなら問い合わせ方式。既定)、websocket、poll |
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 |
定時実行や通知の配信先になる既定のチャット / チャンネルの ID。 |
TEAMS_HOME_CHANNEL_NAME |
Teams の既定チャンネルの表示名。 |
Raft
| 変数 | 説明 |
|---|---|
RAFT_PROFILE |
Raft のエージェントのプロファイルの slug — 設定するとアダプターが自動で有効になります。 |
メッセージングの細かい調整
送信するメッセージのまとめ方を、プラットフォームごとに細かく調整するつまみです。ほとんどの利用者は触る必要がありません。既定値は、各プラットフォームの上限を守りつつもたつかない値になっています。
| 変数 | 説明 |
|---|---|
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 を確かめる間隔(既定: 15。0 で無効)。config.yaml のキーのほうをおすすめします。 |
HERMES_DISCORD_LIVENESS_FAILURE_THRESHOLD |
discord.websocket_liveness_failure_threshold を互換のために手で上書きするものです。つなぎ直す前に、不調と判定される確認が何回続いたら踏み切るか(既定: 2)。これが効くのは弱い兆候だけで、接続が閉じている場合(socket_closed / client_closed)は 1 回目でつなぎ直します(#118487)。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.yaml の gateway.platform_connect_timeout(既定 30)から引き継がれ、この環境変数を明示すればそちらが勝ちます。 |
HERMES_GATEWAY_BUSY_INPUT_MODE |
処理中に入力が来たときのゲートウェイの既定の振る舞い: queue、steer、interrupt。有効なプロファイルでは /busy で上書きできます。 |
HERMES_GATEWAY_BUSY_ACK_ENABLED |
エージェントが処理中に入力が来たとき、ゲートウェイが受け取りの合図(⚡/⏳/⏩)を送るか(既定: true)。false にするとこのメッセージだけを止められます。入力は従来どおり溜められ、向きを変え、割り込みます。黙るのはチャットへの返事だけです。config.yaml の display.busy_ack_enabled から引き継がれます。 |
HERMES_GATEWAY_NO_SUPERVISE |
s6-overlay の Docker イメージの中で、hermes gateway run のときの自動の見守りをやめ、s6 より前の前面での動き方(自動の再起動なし、ゲートウェイがコンテナの主プロセス)にします。有効な値は 1、true、yes です。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.yaml の gateway.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 の呼び出しを、Hermes が一覧にして添えます。0、false、no、off のいずれかで止められます。config.yaml の display.file_mutation_verifier と同じで、環境変数があればそちらが勝ちます。 |
HERMES_CRON_TIMEOUT |
定時実行でエージェントが動くときの、無操作のタイムアウト(秒。既定: 600)。ツールを呼んでいるあいだや、応答が流れてきているあいだはいくらでも動けます。止まっているときだけ働きます。0 で無制限になります。 |
HERMES_CRON_SCRIPT_TIMEOUT |
定時実行に付けた事前のスクリプトのタイムアウト(秒。既定: 3600)。スクリプトだけを区切るもので、スキルやエージェントの仕事は別枠の HERMES_CRON_TIMEOUT に従います。config.yaml の cron.script_timeout_seconds でも設定できます。 |
HERMES_CRON_MEDIA_SEND_TIMEOUT |
動いているゲートウェイのアダプターから定時実行の結果を配信するとき、添付 1 つあたりの送信のタイムアウト(秒。既定: 300)。大きな添付(長い読み上げの音声、大きな書き出し)のアップロードが間に合わないなら増やしてください。config.yaml の cron.media_send_timeout_seconds でも設定できます。 |
HERMES_CRON_MAX_PARALLEL |
1 回の実行で並行して動かす定時実行の上限(既定: 4)。 |
NeMo Relay
| 変数 | 説明 |
|---|---|
HERMES_NEMO_RELAY_PLUGINS_TOML |
Hermes の中核がプロセス全体で読み込む、標準の NeMo Relay の plugins.toml のパスを明示したいときに指定します(省略可)。設定が無ければ、Relay はいつもどおり利用者ごとの設定を読み、続いてそれより優先度の高い、端末全体のシステム設定を読みます。設定すると、このファイルが利用者ごとの設定の代わりになりますが、システム設定はその上から引き続き効きます。廃止された HERMES_NEMO_RELAY_ATOF_* と HERMES_NEMO_RELAY_ATIF_* は無視されます。hermes update / hermes migrate relay がそれらを <hermes home>/relay-plugins.toml へ変換し、この変数を設定します。移行の注記と全体の例 を参照してください。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-hooks や hooks_auto_accept: true と同じです。 |
HERMES_IGNORE_USER_CONFIG |
~/.hermes/config.yaml を読まず、組み込みの既定値を使います(.env の資格情報は読みます)。--ignore-user-config と同じです。 |
HERMES_IGNORE_RULES |
AGENTS.md、SOUL.md、.cursorrules、記憶、あらかじめ読み込むスキルの自動の差し込みをやめます。--ignore-rules と同じです。 |
HERMES_SAFE_MODE |
以前からある、プロセス内で効く切り分け用のスイッチです。そのプロセスでは、プラグインの探索、MCP サーバーの読み込み、シェルのフックの登録をとばします。hermes chat --safe-mode はもうこの変数を設定しません。代わりにゲートウェイが安全側の方針をセッションに固定し、隔離したワーカーで実行します。そのため、動いているデーモンの環境が書き換わることはありません。 |
HERMES_TOOL_PROGRESS |
config-v12 を下限にして以降は使えません。この変数は無視されます。config.yaml の display.tool_progress を使ってください。 |
HERMES_TOOL_PROGRESS_MODE |
ツールの進み具合の表示を指定する、互換のために残っている変数です(ゲートウェイは今も予備として読みます)。config.yaml の display.tool_progress をおすすめします。 |
HERMES_HUMAN_DELAY_MODE / HERMES_HUMAN_DELAY_MIN_MS / HERMES_HUMAN_DELAY_MAX_MS |
もう読まれません。返事の間合いは、プロファイルごとの config.yaml の human_delay(mode、min_ms、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 |
廃止されました。もう読み込まれず、効果もありません。hermes acp はゲートウェイのデーモンを見る側にすぎず、config.yaml の MCP サーバーを自分で起動することはありません。ゲートウェイが起動時にそのプロファイルの mcp_servers を立ち上げ(ACP 向けには platform_toolsets.acp で絞り込みます)、エディターが session/new で渡す mcpServers も、どちらの場合もゲートウェイがつなぎます。ACP のホスト連携 を参照してください。 |
HERMES_API_TIMEOUT |
LLM の API 呼び出しのタイムアウト(秒。既定: 1800) |
HERMES_API_CALL_STALE_TIMEOUT |
逐次配信でない呼び出しが固まったと見なすまでの時間(秒。既定: 90)。設定しなければ手元の提供元では自動で無効になり、とても大きな文脈では長くなることがあります。config.yaml の providers.<id>.stale_timeout_seconds や providers.<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.yaml の agent.local_stream_stale_timeout でも設定できます。 |
HERMES_STREAM_RETRIES |
一時的なネットワークのエラーで、配信の途中からつなぎ直す回数(既定: 3)。 |
HERMES_STREAM_STALE_GIVEUP |
ターンをまたぐ遮断の仕組みです。応答が 1 度も完了しないまま、固まったことによる切断(逐次配信でもそうでなくても)がこの回数続いたら、以降はまた待ち時間を使い切るのではなく、その場で対処のわかるエラーにして止めます(既定: 5。0 で無効)。応答がひとつでも完了したとき、/model で切り替えたとき、予備に切り替わったとき、ターンの開始で本来の設定に戻ったときに数え直します。 |
HERMES_AGENT_TIMEOUT |
動いているエージェントに対する、ゲートウェイの無操作のタイムアウト(秒。既定: 1800、30 分)。ツールの呼び出しや配信のたびに数え直します。0 で無効になります。 |
HERMES_GATEWAY_MAX_STARTS |
起動を繰り返してしまうのを止める仕組みです。一定の時間の中でゲートウェイの(再)起動がこの回数を超えると、間隔を延ばしながら待って連鎖を断ち切ります(既定: 5。0 で無効)。config.yaml の gateway.respawn_storm.max_starts でも設定できます。 |
HERMES_GATEWAY_START_WINDOW_S |
その仕組みで見る時間の幅(秒。既定: 120)。config.yaml の gateway.respawn_storm.window_seconds でも設定できます。 |
HERMES_STARTUP_WATCHDOG |
hermes gateway run の起動の見張りです。決めた時間内に処理のループが動き出さず、進行中の印も持たず、CPU も動いていなければ、すべてのスレッドの状態を logs/gateway-startup-watchdog.log へ書き出し、終了コード 75 で終わります。これで監視の仕組み(systemd、s6、Windows のタスク)が起動し直します。0 で切れます。config.yaml の読み込み自体が見張りの対象に入るので、この設定は環境変数だけです。設定が無ければ config.yaml の gateway.startup_watchdog: false がこの変数へ引き継がれます。 |
HERMES_STARTUP_WATCHDOG_TIMEOUT_S |
起動の見張りの制限時間(秒。既定: 300)。遅くても生きている段(state.db の構造の移行、修復、作成時の保管・整理・VACUUM)は自分で進行中の印を持つので、*それ以外*のところで大きな導入の起動が本当に 5 分を超えるとき(多数のプロファイルを多重化している、遅いディスクに何千ものスキルがある)にだけ延ばしてください。設定が無ければ config.yaml の gateway.startup_watchdog_timeout_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(大文字小文字は問いません)です。それ以外は — 0、false、no、off、空文字も含めて — 無効として扱います(既定)。なお GHSA-5qr3-c538-wm9j(#29156)以降、ダッシュボードのウェブサーバーは、この変数が有効でもプロジェクトのプラグインの Python の api ファイルを自動で読み込みません。プロジェクトのプラグインは静的な JS / CSS で画面を拡張できますが、その裏側の経路は ~/.hermes/plugins/ の下へ移したときだけ読み込まれます。 |
HERMES_PLUGINS_DEBUG |
1/true にすると、プラグインの探索の詳しいログを標準エラーへ出します。走査したディレクトリ、読み取った定義、とばした理由、読み取りや register() の失敗の全文が出ます。プラグインを作る人向けです。 |
HERMES_BACKGROUND_NOTIFICATIONS |
ゲートウェイでの、背後のプロセスの知らせ方: concise(既定)、all、result、error、off |
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 |
テストやインストールの検査で使う PM 内部のポリシーです。真とみなされる値を入れると、必要に応じたインストールを拒否します。利用者向けの設定 security.allow_lazy_installs より優先されます。.env には書かないでください。 |
HERMES_DISABLE_FILE_STATE_GUARD |
1 にすると、patch/write_file の「読んだあとにファイルが変わっています」という保護を切ります。 |
HERMES_BUNDLED_SKILLS |
起動時に読み込む同梱スキルの一覧を、カンマ区切りで上書きします。 |
HERMES_OPTIONAL_SKILLS |
初回の実行で自動的に入れる、任意のスキル名をカンマ区切りで。 |
HERMES_DEBUG_INTERRUPT |
1/true にすると、割り込みや取り消しの詳しい記録を agent.log へ出します。0/false/off(または未設定)なら出ません。 |
HERMES_DUMP_REQUESTS |
API リクエストの中身をログファイルへ書き出します(true/false) |
HERMES_DUMP_REQUEST_STDOUT |
API リクエストの中身を、ログファイルではなく標準出力へ書き出します。 |
HERMES_OAUTH_TRACE |
1 にすると、OAuth のトークンの交換と更新の試みを記録します。伏せ字にした時間の情報も含みます。 |
HERMES_AGENT_HELP_GUIDANCE |
独自の運用向けに、システムプロンプトへ案内の文章を追記します。 |
HERMES_AGENT_LOGO |
CLI の起動時に出る ASCII のロゴを差し替えます。 |
DELEGATION_MAX_CONCURRENT_CHILDREN |
delegate_task のひとまとまりで、並行して動かすサブエージェントの上限(既定: 3。下限は 1 で、上限はありません)。config.yaml の delegation.max_concurrent_children でも設定でき、そちらが優先されます。 |
HERMES_WRITE_SAFE_ROOT
この変数を設定すると、write_file と patch は指定したディレクトリの接頭辞の中しか書けなくなります。その外側のパスはその場で拒まれます — 危ないコマンドの承認の仕組みにも回らず、押し切るための確認も出ません。
公式の 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 の状態の両方を許すには、どちらの接頭辞も並べてください(順番は問いません)。
export HERMES_WRITE_SAFE_ROOT=/path/to/project:/home/you/.hermes変数を消すか .env から取り除けば、ふだんどおりの書き込みに戻ります(資格情報のパスの禁止一覧は引き続き効きます。ファイル書き込みの安全 を参照してください)。
内部の橋渡しの変数
Hermes は、まだ config.yaml が存在しない境界や、2つのプロセスが値をそろえる必要がある場面で状態を受け渡すために、これらを自分で設定します。プロセスの環境変数やログで見かけたときに何なのか分かるよう載せています。自分では設定せず、.env にも決して書かないでください。
| 変数 | 説明 |
|---|---|
HERMES_DATA_DIR_SUFFIX |
デスクトップのバンドルの環境に組み込まれ(--bundle-env、HERMES_BUNDLE_ENV_JSON、またはチャンネルごとのデータディレクトリを持つチャンネル版のビルド。この場合は -channel-build-<channel> を使います)、テスト用やチャンネル版のビルドが自分専用のデータを持てるようにします。既定の Hermes のホームと既定の Electron の userData ディレクトリの末尾に、区切り文字なしでそのまま付け足されます。たとえば -channel-build-canary なら、POSIX では ~/.hermes-channel-build-canary になります。明示的に指定した HERMES_HOME と HERMES_DESKTOP_USER_DATA_DIR が優先され、接尾辞は付きません。.env と config.yaml を置くホームを決める値なので、起動前の環境に入っている必要があります。 |
HERMES_REPO_URL |
インストーラー(scripts/install.sh、scripts/install.ps1)が clone に使い、再実行時には origin の向け先にもする Git のリモートです。インストーラーは Hermes の設定がまだ無い段階で動くので、環境変数になっています。CI やリハーサル用のスクリプトが、fork やミラーからインストールするのに使います。設定しなければ公式のリポジトリを使います。 |
HERMES_UPDATE_STATUS_FILE |
デスクトップの更新用 shim(scripts/desktop-update/posix.sh)が、進捗ウィンドウに表示する状態の JSON のパスを入れて export します。hermes update の引き継ぎ先の子プロセスは、時間のかかる段階をこのファイルに書き出し、ウィンドウの表示が止まらないようにします。この変数が無い場合(古い shim)は、更新マーカーに記された shim の pid から決まる状態ファイルを使い、UI が見ていなければ何も書き出しません。 |
HERMES_UPDATE_UI_ACTIVE |
自前のウィンドウを持たない古い shim のために、更新の子プロセスが macOS のネイティブの状態パネルを開いたあと 1 に設定します。子プロセスへ引き継がれるので、1回の更新の流れの中でパネルが開くのは多くても1回です。 |
画面
| 変数 | 説明 |
|---|---|
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 の配色を固定します: light、dark、または背景色の 6 桁の 16 進(たとえば ffffff や 1a1a2e)。設定が無ければ COLORFGBG と端末への問い合わせから自動で判断しますが、COLORFGBG を設定しない端末(Ghostty、Warp、iTerm2 など)ではこの変数がその判断より優先されます。 |
HERMES_INFERENCE_MODEL |
config.yaml を書き換えずに、hermes -z / hermes chat で使うモデルを固定します。--provider と組みで使います。実行ごとに既定のモデルを変えたい、台本からの呼び出し(掃除の処理、CI、まとめて走らせる仕組み)で役に立ちます。 |
セッションの設定
| 変数 | 説明 |
|---|---|
HERMES_SESSION_ID |
Hermes が起動するすべてのツールの子プロセスへ自動で渡されます(terminal、execute_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 の中で動いていることを判別できます。手で設定しないでください。 |
ターミナルのセッションのスナップショットには、注入されたセッションやエージェントの帰属を示す変数は残りません。 Hermes はコマンドごとに現在の値を渡すので、前のターミナルのコマンドの中で export しても、 次のセッションの識別情報は変わりません。
文脈の圧縮(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 の一覧を作り、provider と model のキーを書けば、主モデルがエラーになったときに自動で切り替わります。提供元が auto の補助の処理も、Hermes 内蔵の補助の探索より先にこの連なりを見ます。
fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4最上位に 1 つだけ書く古い形の fallback_model も互換のために今も読まれますが、新しく書くなら fallback_providers を使ってください。処理ごとの補助の方針には config.yaml の auxiliary.<task>.fallback_chain を使います。これに相当する環境変数はありません。
詳しくは 予備の提供元 をご覧ください。
提供元の振り分け(config.yaml のみ)
これらは ~/.hermes/config.yaml の provider_routing の節に書きます。
| キー | 説明 |
|---|---|
sort |
提供元の並べ方: "price"(既定)、"throughput"、"latency" |
only |
許可する提供元の slug の一覧(たとえば ["anthropic", "google"]) |
ignore |
とばす提供元の slug の一覧 |
order |
順に試す提供元の slug の一覧 |
require_parameters |
要求したすべての引数に対応する提供元だけを使います(true/false) |
data_collection |
"allow"(既定)か、データを保存する提供元を外す "deny" |