Справочник переменных окружения

Все переменные задаются в ~/.hermes/.env. Также можно установить их командой hermes config set VAR value.

Провайдеры LLM

ПеременнаяОписание
OPENROUTER_API_KEYAPI-ключ OpenRouter (рекомендуется для гибкости)
OPENROUTER_BASE_URLПереопределить базовый URL совместимого с OpenRouter эндпоинта
HERMES_OPENROUTER_CACHEВключить кэширование ответов OpenRouter (1/true/yes/on). Переопределяет openrouter.response_cache в config.yaml. См. Response Caching.
HERMES_OPENROUTER_CACHE_TTLTTL кэша в секундах (1–86400). Переопределяет openrouter.response_cache_ttl в config.yaml.
NOUS_BASE_URLПереопределить базовый URL Nous Portal (редко нужно; только для разработки и тестирования)
NOUS_INFERENCE_BASE_URLНапрямую переопределить эндпоинт инференса Nous
OPENAI_API_KEYAPI-ключ для пользовательских эндпоинтов, совместимых с OpenAI (используется вместе с OPENAI_BASE_URL)
OPENAI_BASE_URLБазовый URL пользовательского эндпоинта (VLLM, SGLang и др.)
LM_API_KEYAPI-ключ для LM Studio (провайдер lmstudio). Часто это заглушка для локальных серверов
LM_BASE_URLБазовый URL LM Studio (по умолчанию: http://localhost:1234/v1)
COPILOT_GITHUB_TOKENGitHub-токен для Copilot API — высший приоритет (OAuth gho_* или fine-grained PAT github_pat_*; классические PAT вида ghp_* не поддерживаются)
GH_TOKENGitHub-токен — второй приоритет для Copilot (также используется CLI gh)
GITHUB_TOKENGitHub-токен — третий приоритет для Copilot
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Переопределить базовый URL Copilot ACP
COPILOT_API_BASE_URLПереопределить базовый URL Copilot API (провайдер copilot)
GLM_API_KEYAPI-ключ z.ai / ZhipuAI GLM (z.ai)
ZAI_API_KEYПсевдоним для GLM_API_KEY
Z_AI_API_KEYПсевдоним для GLM_API_KEY
GLM_BASE_URLПереопределить базовый URL z.ai (по умолчанию: https://api.z.ai/api/paas/v4)
KIMI_API_KEYAPI-ключ Kimi / Moonshot AI (moonshot.ai)
KIMI_CODING_API_KEYКлюч-псевдоним для провайдера kimi-coding (принимается наряду с KIMI_API_KEY)
KIMI_BASE_URLПереопределить базовый URL Kimi (по умолчанию: https://api.moonshot.ai/v1)
KIMI_CN_API_KEYAPI-ключ Kimi / Moonshot для Китая (moonshot.cn)
ARCEEAI_API_KEYAPI-ключ Arcee AI (chat.arcee.ai)
ARCEE_BASE_URLПереопределить базовый URL Arcee (по умолчанию: https://api.arcee.ai/api/v1)
GMI_API_KEYAPI-ключ GMI Cloud (gmicloud.ai)
GMI_BASE_URLПереопределить базовый URL GMI Cloud (по умолчанию: https://api.gmi-serving.com/v1)
MINIMAX_API_KEYAPI-ключ MiniMax — глобальный эндпоинт (minimax.io). Не используется провайдером minimax-oauth (OAuth-путь использует вход через браузер).
MINIMAX_BASE_URLПереопределить базовый URL MiniMax (по умолчанию: https://api.minimax.io/anthropic — Hermes использует совместимый с Anthropic Messages эндпоинт MiniMax). Не используется minimax-oauth.
MINIMAX_CN_API_KEYAPI-ключ MiniMax — китайский эндпоинт (minimaxi.com). Не используется minimax-oauth.
MINIMAX_CN_BASE_URLПереопределить базовый URL MiniMax для Китая (по умолчанию: https://api.minimaxi.com/anthropic). Не используется minimax-oauth.
KILOCODE_API_KEYAPI-ключ Kilo Code (kilo.ai)
KILOCODE_BASE_URLПереопределить базовый URL Kilo Code (по умолчанию: https://api.kilo.ai/api/gateway)
XIAOMI_API_KEYAPI-ключ Xiaomi MiMo (platform.xiaomimimo.com)
XIAOMI_BASE_URLПереопределить базовый URL Xiaomi MiMo (по умолчанию: https://api.xiaomimimo.com/v1)
TOKENHUB_API_KEYAPI-ключ Tencent TokenHub (tokenhub.tencentmaas.com)
TOKENHUB_BASE_URLПереопределить базовый URL Tencent TokenHub (по умолчанию: https://tokenhub.tencentmaas.com/v1)
AZURE_FOUNDRY_API_KEYAPI-ключ Microsoft Foundry / Azure OpenAI (ai.azure.com). Не нужен при model.auth_mode: entra_id
AZURE_FOUNDRY_BASE_URLURL эндпоинта Microsoft Foundry (например, https://<resource>.openai.azure.com/openai/v1 для стиля OpenAI или https://<resource>.services.ai.azure.com/anthropic для стиля Anthropic)
AZURE_ANTHROPIC_KEYAPI-ключ Azure Anthropic для provider: anthropic + base_url, указывающего на развёртывание Claude в Microsoft Foundry (альтернатива ANTHROPIC_API_KEY при одновременной настройке Anthropic и Azure Anthropic)
AZURE_TENANT_IDTenant ID Entra ID (для сервис-принципалов; используется azure-identity при model.auth_mode: entra_id)
AZURE_CLIENT_IDClient ID Entra ID (сервис-принципал, workload identity или managed identity с назначенным пользователем)
AZURE_CLIENT_SECRETСекрет сервис-принципала, используемый EnvironmentCredential
AZURE_CLIENT_CERTIFICATE_PATHСертификат сервис-принципала (альтернатива AZURE_CLIENT_SECRET)
AZURE_FEDERATED_TOKEN_FILEПуть к файлу федеративного токена для AKS Workload Identity / OIDC
AZURE_AUTHORITY_HOSTПереопределение authority для суверенного облака (например, https://login.microsoftonline.us для Azure Government). См. руководство по Azure Foundry
IDENTITY_ENDPOINT / MSI_ENDPOINTЭндпоинт Managed Identity для App Service, Functions и Container Apps; VM обычно используют IMDS и не задают эти переменные
HF_TOKENТокен Hugging Face для Inference Providers (huggingface.co/settings/tokens)
HF_BASE_URLПереопределить базовый URL Hugging Face (по умолчанию: https://router.huggingface.co/v1)
GOOGLE_API_KEYAPI-ключ Google AI Studio (aistudio.google.com/app/apikey)
GEMINI_API_KEYПсевдоним для GOOGLE_API_KEY
GEMINI_BASE_URLПереопределить базовый URL Google AI Studio
HERMES_GEMINI_CLIENT_IDOAuth client ID для PKCE-входа google-gemini-cli (необязательно; по умолчанию используется публичный клиент gemini-cli от Google)
HERMES_GEMINI_CLIENT_SECRETOAuth client secret для google-gemini-cli (необязательно)
HERMES_GEMINI_PROJECT_IDID проекта GCP для платных уровней Gemini (бесплатный уровень выдаётся автоматически)
ANTHROPIC_API_KEYAPI-ключ Anthropic Console (console.anthropic.com)
ANTHROPIC_BASE_URLПереопределить базовый URL Anthropic API
ANTHROPIC_TOKENРучное или устаревшее переопределение OAuth/setup-token для Anthropic
DASHSCOPE_API_KEYAPI-ключ Qwen Cloud (Alibaba DashScope) для моделей Qwen (modelstudio.console.alibabacloud.com)
DASHSCOPE_BASE_URLПользовательский базовый URL DashScope (по умолчанию: https://dashscope-intl.aliyuncs.com/compatible-mode/v1; используйте https://dashscope.aliyuncs.com/compatible-mode/v1 для материкового Китая)
ALIBABA_CODING_PLAN_API_KEYAPI-ключ Qwen Coding Plan (провайдер alibaba-coding-plan)
ALIBABA_CODING_PLAN_BASE_URLПереопределить базовый URL Qwen Coding Plan
DEEPSEEK_API_KEYAPI-ключ DeepSeek для прямого доступа (platform.deepseek.com)
DEEPSEEK_BASE_URLПользовательский базовый URL DeepSeek API
NOVITA_API_KEYAPI-ключ NovitaAI — AI-native облако для Model API, Agent Sandbox и GPU Cloud (novita.ai/settings/key-management)
NOVITA_BASE_URLПереопределить базовый URL NovitaAI (по умолчанию: https://api.novita.ai/openai/v1)
NVIDIA_API_KEYAPI-ключ NVIDIA NIM — Nemotron и открытые модели (build.nvidia.com)
NVIDIA_BASE_URLПереопределить базовый URL NVIDIA (по умолчанию: https://integrate.api.nvidia.com/v1; задайте http://localhost:8000/v1 для локального эндпоинта NIM)
STEPFUN_API_KEYAPI-ключ StepFun — модели серии Step (platform.stepfun.com)
STEPFUN_BASE_URLПереопределить базовый URL StepFun (по умолчанию: https://api.stepfun.com/v1)
OLLAMA_API_KEYAPI-ключ Ollama Cloud — управляемый каталог Ollama без локального GPU (ollama.com/settings/keys)
OLLAMA_BASE_URLПереопределить базовый URL Ollama Cloud (по умолчанию: https://ollama.com/v1)
XAI_API_KEYAPI-ключ xAI (Grok) для чата, TTS и веб-поиска (console.x.ai)
XAI_BASE_URLПереопределить базовый URL xAI (по умолчанию: https://api.x.ai/v1)
MISTRAL_API_KEYAPI-ключ Mistral для Voxtral TTS и Voxtral STT (console.mistral.ai)
AWS_REGIONРегион AWS для Bedrock-инференса (например, us-east-1, eu-central-1). Читается boto3.
AWS_PROFILEИменованный профиль AWS для аутентификации Bedrock (читает ~/.aws/credentials). Не задавайте, чтобы использовать стандартную цепочку учётных данных boto3.
BEDROCK_BASE_URLПереопределить базовый URL Bedrock runtime (по умолчанию: https://bedrock-runtime.us-east-1.amazonaws.com; обычно не нужно — используйте AWS_REGION)
HERMES_QWEN_BASE_URLПереопределить базовый URL Qwen Portal (по умолчанию: https://portal.qwen.ai/v1)
OPENCODE_ZEN_API_KEYAPI-ключ OpenCode Zen — оплата по факту использования для избранных моделей (opencode.ai)
OPENCODE_ZEN_BASE_URLПереопределить базовый URL OpenCode Zen
OPENCODE_GO_API_KEYAPI-ключ OpenCode Go — подписка $10/месяц для открытых моделей (opencode.ai)
OPENCODE_GO_BASE_URLПереопределить базовый URL OpenCode Go
CLAUDE_CODE_OAUTH_TOKENЯвное переопределение токена Claude Code при ручном экспорте
HERMES_MODELПереопределить название модели на уровне процесса (используется планировщиком cron; для обычного использования предпочтительнее config.yaml)
VOICE_TOOLS_OPENAI_KEYПредпочтительный ключ OpenAI для провайдеров speech-to-text и text-to-speech от OpenAI
HERMES_LOCAL_STT_COMMANDНеобязательный шаблон команды для локального speech-to-text. Поддерживает подстановки {input_path}, {output_dir}, {language} и {model}
HERMES_LOCAL_STT_LANGUAGEЯзык по умолчанию для HERMES_LOCAL_STT_COMMAND или авто-определяемого локального CLI whisper (по умолчанию: en)
HERMES_HOMEПереопределить директорию конфигурации Hermes (по умолчанию: ~/.hermes). Также задаёт область видимости для PID-файла шлюза и имени systemd-сервиса, что позволяет запускать несколько установок одновременно
HERMES_GIT_BASH_PATHТолько Windows. Переопределить поиск bash.exe для инструмента терминала. Указывает на любой bash — полная установка Git-for-Windows, WSL bash через симлинк, MSYS2, Cygwin. Установщик задаёт это автоматически для PortableGit. См. руководство по Windows (Native)
HERMES_DISABLE_WINDOWS_UTF8Только Windows. Задайте 1, чтобы отключить UTF-8 stdio shim (configure_windows_stdio()) и вернуться к кодовой странице консоли. Полезно для диагностики ошибок кодировки; редко нужна в штатной работе
HERMES_KANBAN_HOMEПереопределить общий корневой каталог Hermes для канбан-доски (БД + рабочие пространства + логи воркеров). По умолчанию — get_default_hermes_root() (родитель активного профиля). Полезно для тестов и нестандартных развёртываний
HERMES_KANBAN_BOARDПривязать активную канбан-доску для текущего процесса. Приоритет выше ~/.hermes/kanban/current; диспетчер внедряет это в env дочерних процессов воркеров, чтобы воркеры физически не видели задачи на других досках. По умолчанию: default. Валидация slug: строчные буквы и цифры + дефисы + подчёркивания, 1–64 символа
HERMES_KANBAN_DBНапрямую задать путь к файлу канбан-базы данных (наивысший приоритет; превышает HERMES_KANBAN_BOARD и HERMES_KANBAN_HOME). Диспетчер внедряет это в env дочерних процессов воркеров
HERMES_KANBAN_WORKSPACES_ROOTНапрямую задать корневой каталог рабочих пространств канбан (наивысший приоритет для workspaces; превышает HERMES_KANBAN_HOME). Диспетчер внедряет это в env дочерних процессов воркеров
HERMES_KANBAN_DISPATCH_IN_GATEWAYПереопределить kanban.dispatch_in_gateway во время выполнения. Задайте 0, false, no или off, чтобы шлюз не запускал встроенный диспетчер Kanban; любое другое непустое значение включает его. Полезно, когда отдельный процесс-диспетчер владеет доской.

Аутентификация провайдеров (OAuth)

При нативной аутентификации Anthropic Hermes предпочитает собственные файлы учётных данных Claude Code, если они существуют — эти учётные данные умеют автоматически обновляться. OAuth против Anthropic требует плана Claude Max с дополнительными приобретёнными кредитами использования — Hermes маршрутизируется как Claude Code, который расходует только дополнительные/overage-кредиты плана Max, а не базовый лимит Max, и не работает с Claude Pro. Без Max + дополнительных кредитов используйте API-ключ. Переменные вроде ANTHROPIC_TOKEN остаются полезны как ручные переопределения, но больше не являются предпочтительным путём для входа через Claude Max.

ПеременнаяОписание
HERMES_PORTAL_BASE_URLПереопределить URL Nous Portal (для разработки/тестирования)
NOUS_INFERENCE_BASE_URLПереопределить URL Nous inference API
HERMES_NOUS_MIN_KEY_TTL_SECONDSМинимальный TTL ключа агента до пересоздания (по умолчанию: 1800 = 30 мин)
HERMES_NOUS_TIMEOUT_SECONDSHTTP-таймаут для потоков учётных данных / токенов Nous
HERMES_DUMP_REQUESTSДамп полезных нагрузок API-запросов в лог-файлы (true/false)
HERMES_PREFILL_MESSAGES_FILEПуть к JSON-файлу с эфемерными prefill-сообщениями, внедряемыми во время API-вызова
HERMES_TIMEZONEПереопределение часового пояса IANA (например, America/New_York)

Tool APIs

ПеременнаяОписание
PARALLEL_API_KEYAI-native веб-поиск (parallel.ai)
FIRECRAWL_API_KEYВеб-скрапинг и облачный браузер (firecrawl.dev)
FIRECRAWL_API_URLПользовательский эндпоинт Firecrawl API для self-hosted инстансов (необязательно)
TAVILY_API_KEYAPI-ключ Tavily для AI-native веб-поиска, извлечения и обхода (app.tavily.com)
SEARXNG_URLURL инстанса SearXNG для бесплатного self-hosted веб-поиска — API-ключ не нужен (searxng.github.io)
TAVILY_BASE_URLПереопределить эндпоинт Tavily API. Полезно для корпоративных прокси и self-hosted бэкендов, совместимых с Tavily. Тот же паттерн, что и GROQ_BASE_URL.
EXA_API_KEYAPI-ключ Exa для AI-native веб-поиска и получения контента (exa.ai)
BROWSERBASE_API_KEYАвтоматизация браузера (browserbase.com)
BROWSERBASE_PROJECT_IDID проекта Browserbase
BROWSER_USE_API_KEYAPI-ключ облачного браузера Browser Use (browser-use.com)
FIRECRAWL_BROWSER_TTLTTL браузерной сессии Firecrawl в секундах (по умолчанию: 300)
BROWSER_CDP_URLURL Chrome DevTools Protocol для локального браузера (задаётся через /browser connect, например ws://localhost:9222)
CAMOFOX_URLURL локального анти-детект браузера Camofox (по умолчанию: http://localhost:9377)
CAMOFOX_USER_IDНеобязательный внешне управляемый ID пользователя Camofox для совместных видимых сессий
CAMOFOX_SESSION_KEYНеобязательный ключ сессии Camofox при создании вкладок для CAMOFOX_USER_ID
CAMOFOX_ADOPT_EXISTING_TABЗадайте true, чтобы переиспользовать существующую вкладку Camofox вместо создания новой
BROWSER_INACTIVITY_TIMEOUTТаймаут неактивности браузерной сессии в секундах
AGENT_BROWSER_ARGSДополнительные флаги запуска Chromium (через запятую или новую строку). Hermes автоматически добавляет --no-sandbox,--disable-dev-shm-usage при запуске от root или в AppArmor-ограниченных пространствах имён без привилегий (Ubuntu 23.10+, DGX Spark, многие контейнерные образы); задавайте вручную только для переопределения или добавления других флагов.
FAL_KEYГенерация изображений (fal.ai)
GROQ_API_KEYAPI-ключ Groq Whisper STT (groq.com)
ELEVENLABS_API_KEYПремиум TTS-голоса ElevenLabs (elevenlabs.io)
STT_GROQ_MODELПереопределить модель Groq STT (по умолчанию: whisper-large-v3-turbo)
GROQ_BASE_URLПереопределить совместимый с OpenAI STT-эндпоинт Groq
STT_OPENAI_MODELПереопределить модель OpenAI STT (по умолчанию: whisper-1)
STT_OPENAI_BASE_URLПереопределить совместимый с OpenAI STT-эндпоинт
GITHUB_TOKENGitHub-токен для Skills Hub (повышенные лимиты API, публикация навыков)
HONCHO_API_KEYКросс-сессионное моделирование пользователей (honcho.dev)
HONCHO_BASE_URLБазовый URL для self-hosted инстансов Honcho (по умолчанию — Honcho cloud). Для локальных инстансов API-ключ не нужен
HINDSIGHT_TIMEOUTТаймаут в секундах для API-вызовов провайдера памяти Hindsight (по умолчанию: 60). Увеличьте, если ваш инстанс Hindsight медленно отвечает при /sync или on_session_switch и вы видите таймауты в errors.log.
SUPERMEMORY_API_KEYСемантическая долгосрочная память с восстановлением профиля и инжестом сессий (supermemory.ai)
DAYTONA_API_KEYОблачные sandbox-среды Daytona (daytona.io)

Наблюдаемость через 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_URLURL сервера Langfuse (по умолчанию: https://cloud.langfuse.com). Задайте для self-hosted.
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_DEBUGtrue включает подробное логирование плагина в agent.log
LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY / LANGFUSE_BASE_URLСтандартные имена Langfuse SDK. Принимаются как запасные варианты, когда не заданы аналоги HERMES_LANGFUSE_*.

Nous Tool Gateway (шлюз инструментов)

Эти переменные настраивают Tool Gateway для платных подписчиков Nous или self-hosted развёртываний шлюза. Большинству пользователей их задавать не нужно — шлюз настраивается автоматически через hermes model или hermes tools.

ПеременнаяОписание
TOOL_GATEWAY_DOMAINБазовый домен для маршрутизации Tool Gateway (по умолчанию: nousresearch.com)
TOOL_GATEWAY_SCHEMEHTTP- или HTTPS-схема для URL шлюза (по умолчанию: https)
TOOL_GATEWAY_USER_TOKENТокен аутентификации для Tool Gateway (обычно заполняется автоматически из аутентификации Nous)
FIRECRAWL_GATEWAY_URLПереопределить URL конкретного эндпоинта шлюза Firecrawl

Терминальный бэкенд

ПеременнаяОписание
TERMINAL_ENVБэкенд: local, docker, ssh, singularity, modal, daytona
HERMES_DOCKER_BINARYПереопределить бинарный файл контейнера, вызываемый Hermes (например, podman, /usr/local/bin/docker). Если не задано, Hermes автоматически обнаруживает docker или podman в PATH. Нужно, когда оба установлены и нужен не тот, что по умолчанию, или бинарный файл находится вне PATH.
TERMINAL_DOCKER_IMAGEDocker-образ (по умолчанию: nikolaik/python-nodejs:python3.11-nodejs20)
TERMINAL_DOCKER_FORWARD_ENVJSON-массив имён переменных окружения для явной передачи в Docker-сессии терминала. Примечание: переменные, объявленные в required_environment_variables навыка, передаются автоматически — это нужно только для переменных, не объявленных ни одним навыком.
TERMINAL_DOCKER_VOLUMESДополнительные монтирования томов Docker (пары host:container через запятую)
TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACEРасширенная опция: монтировать рабочий каталог запуска в Docker /workspace (true/false, по умолчанию: false)
TERMINAL_SINGULARITY_IMAGEОбраз Singularity или путь к файлу .sif
TERMINAL_MODAL_IMAGEОбраз контейнера Modal
TERMINAL_DAYTONA_IMAGEОбраз sandbox Daytona
TERMINAL_TIMEOUTТаймаут команды в секундах
TERMINAL_LIFETIME_SECONDSМаксимальное время жизни терминальных сессий в секундах
TERMINAL_CWDУстаревшее прямое переопределение рабочего каталога для сессий шлюза/cron. Предпочтительнее terminal.cwd в config.yaml; CLI по-прежнему использует каталог запуска.
SUDO_PASSWORDВключить sudo без интерактивного запроса пароля

Для облачных sandbox-бэкендов персистентность ориентирована на файловую систему. TERMINAL_LIFETIME_SECONDS контролирует, когда Hermes завершает простаивающую терминальную сессию; при повторном подключении sandbox может быть создан заново, а не продолжать работу тех же процессов.

SSH-бэкенд

ПеременнаяОписание
TERMINAL_SSH_HOSTИмя хоста удалённого сервера
TERMINAL_SSH_USERИмя пользователя SSH
TERMINAL_SSH_PORTПорт SSH (по умолчанию: 22)
TERMINAL_SSH_KEYПуть к приватному ключу
TERMINAL_SSH_PERSISTENTПереопределить persistent shell для SSH (по умолчанию следует TERMINAL_PERSISTENT_SHELL)

Ресурсы контейнера (Docker, Singularity, Modal, Daytona)

ПеременнаяОписание
TERMINAL_CONTAINER_CPUЯдра CPU (по умолчанию: 1)
TERMINAL_CONTAINER_MEMORYПамять в МБ (по умолчанию: 5120)
TERMINAL_CONTAINER_DISKДиск в МБ (по умолчанию: 51200)
TERMINAL_CONTAINER_PERSISTENTСохранять файловую систему контейнера между сессиями (по умолчанию: true)
TERMINAL_SANDBOX_DIRДиректория хоста для рабочих пространств и оверлеев (по умолчанию: ~/.hermes/sandboxes/)

Персистентный shell

ПеременнаяОписание
TERMINAL_PERSISTENT_SHELLВключить persistent shell для не-локальных бэкендов (по умолчанию: true). Также задаётся через terminal.persistent_shell в config.yaml
TERMINAL_LOCAL_PERSISTENTВключить persistent shell для локального бэкенда (по умолчанию: false)
TERMINAL_SSH_PERSISTENTПереопределить persistent shell для SSH-бэкенда (по умолчанию следует TERMINAL_PERSISTENT_SHELL)

Мессенджеры

ПеременнаяОписание
TELEGRAM_BOT_TOKENТокен Telegram-бота (от @BotFather)
TELEGRAM_ALLOWED_USERSID пользователей через запятую, которым разрешено использовать бота (применяется к ЛС, группам и форумам)
TELEGRAM_GROUP_ALLOWED_USERSID отправителей через запятую, авторизованных только в группах/форумах (НЕ даёт доступа к ЛС). Значения в формате Chat ID (начинающиеся с -) по-прежнему трактуются как chat ID для обратной совместимости с конфигами до #17686 — с предупреждением об устаревании.
TELEGRAM_GROUP_ALLOWED_CHATSID чатов групп/форумов через запятую; любой участник авторизован
TELEGRAM_HOME_CHANNELЧат/канал Telegram по умолчанию для доставки cron
TELEGRAM_HOME_CHANNEL_NAMEОтображаемое имя домашнего канала Telegram
TELEGRAM_CRON_THREAD_IDID темы форума для получения cron-доставок; переопределяет TELEGRAM_HOME_CHANNEL_THREAD_ID только для cron. Используйте в режиме тем, чтобы ответы на cron-сообщения открывали новую сессию вместо обращения к системному лобби (#24409).
TELEGRAM_WEBHOOK_URLПубличный HTTPS URL для режима вебхука (включает вебхук вместо поллинга)
TELEGRAM_WEBHOOK_PORTЛокальный порт прослушивания для сервера вебхука (по умолчанию: 8443)
TELEGRAM_WEBHOOK_SECRETСекретный токен, который Telegram возвращает в каждом обновлении для верификации. Обязателен при задании TELEGRAM_WEBHOOK_URL — шлюз откажется запускаться без него (GHSA-3vpc-7q5r-276h). Сгенерируйте через openssl rand -hex 32.
TELEGRAM_REACTIONSВключить эмодзи-реакции на сообщения во время обработки (по умолчанию: false)
TELEGRAM_REQUIRE_MENTIONТребовать явное упоминание перед ответом в группах Telegram. Аналог telegram.require_mention в config.yaml.
TELEGRAM_MENTION_PATTERNSJSON-массив, список через новую строку или запятую с регулярными выражениями для wake-word при включённой фильтрации по упоминанию в группах Telegram. Аналог telegram.mention_patterns.
TELEGRAM_EXCLUSIVE_BOT_MENTIONSПри включении явные упоминания @...bot в группах Telegram маршрутизируются только к упомянутым именам ботов перед запасными вариантами ответа или wake-word. По умолчанию: true. Аналог telegram.exclusive_bot_mentions.
TELEGRAM_REPLY_TO_MODEПоведение ссылок на ответы: off, first (по умолчанию) или all. Повторяет паттерн Discord.
TELEGRAM_IGNORED_THREADSID тем/тредов форума Telegram через запятую, в которых бот никогда не отвечает
TELEGRAM_PROXYURL прокси для соединений Telegram — переопределяет HTTPS_PROXY. Поддерживает http://, https://, socks5://
DISCORD_BOT_TOKENТокен бота Discord
DISCORD_ALLOWED_USERSID пользователей Discord через запятую, которым разрешено использовать бота
DISCORD_ALLOWED_ROLESID ролей Discord через запятую, которым разрешено использовать бота (OR с DISCORD_ALLOWED_USERS). Автоматически включает Members intent. Удобно, когда состав команды модерации часто меняется — назначение роли распространяется автоматически.
DISCORD_ALLOWED_CHANNELSID каналов Discord через запятую. Если задано, бот отвечает только в этих каналах (плюс ЛС, если разрешено). Переопределяет discord.allowed_channels в config.yaml.
DISCORD_PROXYURL прокси для соединений Discord — переопределяет HTTPS_PROXY. Поддерживает http://, https://, socks5://
DISCORD_HOME_CHANNELКанал Discord по умолчанию для cron-доставки
DISCORD_HOME_CHANNEL_NAMEОтображаемое имя домашнего канала Discord
DISCORD_COMMAND_SYNC_POLICYПолитика синхронизации slash-команд Discord при запуске: safe (сравнение и согласование), bulk (устаревший tree.sync()) или off
DISCORD_REQUIRE_MENTIONТребовать @упоминание перед ответом в каналах сервера
DISCORD_FREE_RESPONSE_CHANNELSID каналов через запятую, где упоминание не требуется
DISCORD_AUTO_THREADАвтоматически создавать тред для длинных ответов при поддержке платформой
DISCORD_ALLOW_ANY_ATTACHMENTПри true принимать вложения любого типа (не только встроенный список PDF/текст/zip/офис). Неизвестные типы кэшируются и передаются агенту как локальный путь для проверки через terminal / read_file / ffprobe. По умолчанию false.
DISCORD_MAX_ATTACHMENT_BYTESМаксимальный размер вложения в байтах, которое шлюз кэширует. По умолчанию 33554432 (32 МиБ). Задайте 0 для отсутствия ограничения (вложения хранятся в памяти при записи).
DISCORD_REACTIONSВключить эмодзи-реакции на сообщения во время обработки (по умолчанию: true)
DISCORD_IGNORED_CHANNELSID каналов через запятую, в которых бот никогда не отвечает
DISCORD_NO_THREAD_CHANNELSID каналов через запятую, где бот отвечает без создания треда
DISCORD_REPLY_TO_MODEПоведение ссылок на ответы: off, first (по умолчанию) или all
DISCORD_ALLOW_MENTION_EVERYONEРазрешить боту пинговать @everyone/@here (по умолчанию: false). См. Mention Control.
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_TOKENApp-level токен Slack (xapp-..., требуется для Socket Mode)
SLACK_ALLOWED_USERSID пользователей Slack через запятую
SLACK_HOME_CHANNELКанал Slack по умолчанию для cron-доставки
SLACK_HOME_CHANNEL_NAMEОтображаемое имя домашнего канала Slack
GOOGLE_CHAT_PROJECT_IDGCP-проект, в котором размещена тема Pub/Sub (запасное: GOOGLE_CLOUD_PROJECT)
GOOGLE_CHAT_SUBSCRIPTION_NAMEПолный путь подписки Pub/Sub, projects/{proj}/subscriptions/{sub} (устаревший псевдоним: GOOGLE_CHAT_SUBSCRIPTION)
GOOGLE_CHAT_SERVICE_ACCOUNT_JSONПуть к JSON Service Account или JSON прямо в переменной (запасное: GOOGLE_APPLICATION_CREDENTIALS)
GOOGLE_CHAT_ALLOWED_USERSEmail-адреса пользователей через запятую, которым разрешено писать боту
GOOGLE_CHAT_ALLOW_ALL_USERSРазрешить любому пользователю Google Chat запускать бота (только для разработки)
GOOGLE_CHAT_HOME_CHANNELПространство по умолчанию (например, spaces/AAAA...) для cron-доставки
GOOGLE_CHAT_HOME_CHANNEL_NAMEОтображаемое имя домашнего пространства Google Chat
GOOGLE_CHAT_MAX_MESSAGESМаксимальное количество сообщений в полёте FlowControl Pub/Sub (по умолчанию: 1)
GOOGLE_CHAT_MAX_BYTESМаксимальный объём байт в полёте FlowControl Pub/Sub (по умолчанию: 16777216, 16 МиБ)
GOOGLE_CHAT_BOOTSTRAP_SPACESID дополнительных пространств через запятую для проверки при запуске для определения собственного users/{id} бота
GOOGLE_CHAT_DEBUG_RAWЗадайте любое значение, чтобы логировать редактированные конверты Pub/Sub на уровне DEBUG (только для отладки)
WHATSAPP_ENABLEDВключить мост WhatsApp (true/false)
WHATSAPP_MODEbot (отдельный номер) или self-chat (сообщение себе)
WHATSAPP_ALLOWED_USERSНомера телефонов через запятую (с кодом страны, без +), или * для всех отправителей
WHATSAPP_ALLOW_ALL_USERSРазрешить всем отправителям WhatsApp без списка допуска (true/false)
WHATSAPP_DEBUGЛогировать сырые события сообщений в мосте для диагностики (true/false)
WHATSAPP_CLOUD_PHONE_NUMBER_IDMeta Phone Number ID из WhatsApp Business Cloud API (15–17 цифр; не сам номер телефона)
WHATSAPP_CLOUD_ACCESS_TOKENТокен доступа Meta (начинается с EAA); временные токены истекают через 24ч, токены System User бессрочны
WHATSAPP_CLOUD_APP_SECRET32-символьный hex app secret для проверки подписи входящих вебхуков
WHATSAPP_CLOUD_VERIFY_TOKENОбщий секрет для рукопожатия верификации вебхука Meta (генерируется мастером настройки автоматически)
WHATSAPP_CLOUD_ALLOWED_USERSwa_id через запятую (номера телефонов с кодом страны, без +), которым разрешено писать боту
WHATSAPP_CLOUD_ALLOW_ALL_USERSРазрешить всем отправителям WhatsApp Cloud без списка допуска (true/false)
WHATSAPP_CLOUD_APP_IDНеобязательный Meta App ID (для будущей интеграции аналитики)
WHATSAPP_CLOUD_WABA_IDНеобязательный ID аккаунта WhatsApp Business (для будущей интеграции аналитики)
WHATSAPP_CLOUD_WEBHOOK_HOSTИнтерфейс, к которому привязывается сервер входящих вебхуков (по умолчанию 0.0.0.0)
WHATSAPP_CLOUD_WEBHOOK_PORTПорт, к которому привязывается сервер входящих вебхуков (по умолчанию 8090)
WHATSAPP_CLOUD_WEBHOOK_PATHURL-путь, по которому Meta присылает входящие сообщения (по умолчанию /whatsapp/webhook)
WHATSAPP_CLOUD_API_VERSIONВерсия Meta Graph API для вызовов (по умолчанию v20.0)
WHATSAPP_CLOUD_HOME_CHANNELwa_id, используемый как домашний канал бота (для cron-заданий и т.п.)
WHATSAPP_CLOUD_DM_POLICYФильтрация ЛС для Cloud-адаптера (open/allowlist/disabled); при отсутствии задания берётся WHATSAPP_DM_POLICY
WHATSAPP_CLOUD_ALLOW_FROMОтправители через запятую, разрешённые при dm_policy: allowlist (голые wa_id; JID в стиле Baileys нормализуются)
WHATSAPP_CLOUD_GROUP_POLICYФильтрация групп для Cloud-адаптера (open/allowlist/disabled); при отсутствии задания берётся WHATSAPP_GROUP_POLICY
WHATSAPP_CLOUD_GROUP_ALLOW_FROMID групповых чатов через запятую, разрешённые при group_policy: allowlist
SIGNAL_HTTP_URLHTTP-эндпоинт демона signal-cli (например, http://127.0.0.1:8080)
SIGNAL_ACCOUNTНомер телефона бота в формате E.164
SIGNAL_ALLOWED_USERSНомера телефонов или UUID в формате E.164 через запятую
SIGNAL_GROUP_ALLOWED_USERSID групп через запятую или * для всех групп
SIGNAL_HOME_CHANNEL_NAMEОтображаемое имя домашнего канала Signal
SIGNAL_IGNORE_STORIESИгнорировать истории/статусы Signal
SIGNAL_ALLOW_ALL_USERSРазрешить всем пользователям Signal без списка допуска
TWILIO_ACCOUNT_SIDAccount SID Twilio (общий с навыком телефонии)
TWILIO_AUTH_TOKENAuth Token Twilio (общий с навыком телефонии; также для валидации подписи вебхука)
TWILIO_PHONE_NUMBERНомер телефона Twilio в формате E.164 (общий с навыком телефонии)
SMS_WEBHOOK_URLПубличный URL для валидации подписи Twilio — должен совпадать с URL вебхука в Twilio Console (обязательно)
SMS_WEBHOOK_PORTПорт слушателя вебхука для входящих SMS (по умолчанию: 8080)
SMS_WEBHOOK_HOSTАдрес привязки вебхука (по умолчанию: 0.0.0.0)
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
EMAIL_PASSWORDПароль или пароль приложения для учётной записи email
EMAIL_IMAP_HOSTИмя хоста IMAP для адаптера email
EMAIL_IMAP_PORTПорт IMAP
EMAIL_SMTP_HOSTИмя хоста SMTP для адаптера email
EMAIL_SMTP_PORTПорт SMTP
EMAIL_ALLOWED_USERSEmail-адреса через запятую, которым разрешено писать боту
EMAIL_HOME_ADDRESSПолучатель по умолчанию для проактивной доставки email
EMAIL_HOME_ADDRESS_NAMEОтображаемое имя домашнего получателя email
EMAIL_POLL_INTERVALИнтервал опроса email в секундах
EMAIL_ALLOW_ALL_USERSРазрешить всем входящим отправителям email
DINGTALK_CLIENT_IDAppKey бота DingTalk из портала разработчика (open.dingtalk.com)
DINGTALK_CLIENT_SECRETAppSecret бота DingTalk из портала разработчика
DINGTALK_ALLOWED_USERSID пользователей DingTalk через запятую, которым разрешено писать боту
FEISHU_APP_IDApp ID бота Feishu/Lark с open.feishu.cn
FEISHU_APP_SECRETApp Secret бота Feishu/Lark
FEISHU_DOMAINfeishu (Китай) или lark (международный). По умолчанию: feishu
FEISHU_CONNECTION_MODEwebsocket (рекомендуется) или webhook. По умолчанию: websocket
FEISHU_ENCRYPT_KEYНеобязательный ключ шифрования для режима вебхука
FEISHU_VERIFICATION_TOKENНеобязательный токен верификации для режима вебхука
FEISHU_ALLOWED_USERSID пользователей Feishu через запятую, которым разрешено писать боту
FEISHU_ALLOW_BOTSnone (по умолчанию) / mentions / all — принимать входящие сообщения от других ботов. См. bot-to-bot messaging
FEISHU_REQUIRE_MENTIONtrue (по умолчанию) / false — требовать ли @упоминание бота в групповых сообщениях. Переопределяется для конкретного чата через group_rules.<chat_id>.require_mention.
FEISHU_HOME_CHANNELID чата Feishu для cron-доставки и уведомлений
WECOM_BOT_IDID AI-бота WeCom из консоли администратора
WECOM_SECRETСекрет AI-бота WeCom
WECOM_WEBSOCKET_URLПользовательский URL WebSocket (по умолчанию: wss://openws.work.weixin.qq.com)
WECOM_ALLOWED_USERSID пользователей WeCom через запятую, которым разрешено писать боту
WECOM_HOME_CHANNELID чата WeCom для cron-доставки и уведомлений
WECOM_CALLBACK_CORP_IDCorp ID предприятия WeCom для callback self-built app
WECOM_CALLBACK_CORP_SECRETCorp secret самостоятельно разработанного приложения
WECOM_CALLBACK_AGENT_IDAgent ID самостоятельно разработанного приложения
WECOM_CALLBACK_TOKENТокен верификации callback
WECOM_CALLBACK_ENCODING_AES_KEYAES-ключ для шифрования callback
WECOM_CALLBACK_HOSTАдрес привязки сервера callback (по умолчанию: 0.0.0.0)
WECOM_CALLBACK_PORTПорт сервера callback (по умолчанию: 8645)
WECOM_CALLBACK_ALLOWED_USERSID пользователей через запятую для списка допуска
WECOM_CALLBACK_ALLOW_ALL_USERSЗадайте true, чтобы разрешить всех без списка допуска
WEIXIN_ACCOUNT_IDID аккаунта Weixin, полученный через QR-логин через iLink Bot API
WEIXIN_TOKENТокен аутентификации Weixin, полученный через QR-логин через iLink Bot API
WEIXIN_BASE_URLПереопределить базовый URL Weixin iLink Bot API (по умолчанию: https://ilinkai.weixin.qq.com)
WEIXIN_CDN_BASE_URLПереопределить базовый URL CDN Weixin для медиа (по умолчанию: https://novac2c.cdn.weixin.qq.com/c2c)
WEIXIN_DM_POLICYПолитика прямых сообщений: open, allowlist, pairing, disabled (по умолчанию: open)
WEIXIN_GROUP_POLICYПолитика групповых сообщений: open, allowlist, disabled (по умолчанию: disabled)
WEIXIN_ALLOWED_USERSID пользователей Weixin через запятую, которым разрешено писать боту в ЛС
WEIXIN_GROUP_ALLOWED_USERSID групповых чатов Weixin через запятую (не ID участников), которым разрешено взаимодействовать с ботом. Название переменной унаследовано — ожидаются ID групп. Работает только если iLink доставляет групповые события; QR-login iLink bot identity (...@im.bot) обычно не получает обычные групповые сообщения WeChat.
WEIXIN_HOME_CHANNELID чата Weixin для cron-доставки и уведомлений
WEIXIN_HOME_CHANNEL_NAMEОтображаемое имя домашнего канала Weixin
WEIXIN_ALLOW_ALL_USERSРазрешить всем пользователям Weixin без списка допуска (true/false)
BLUEBUBBLES_SERVER_URLURL сервера BlueBubbles (например, http://192.168.1.10:1234)
BLUEBUBBLES_PASSWORDПароль сервера BlueBubbles
BLUEBUBBLES_WEBHOOK_HOSTАдрес привязки слушателя вебхука (по умолчанию: 127.0.0.1)
BLUEBUBBLES_WEBHOOK_PORTПорт слушателя вебхука (по умолчанию: 8645)
BLUEBUBBLES_HOME_CHANNELТелефон/email для cron/уведомлений
BLUEBUBBLES_ALLOWED_USERSАвторизованные пользователи через запятую
BLUEBUBBLES_ALLOW_ALL_USERSРазрешить всех пользователей (true/false)
QQ_APP_IDApp ID бота QQ с q.qq.com
QQ_CLIENT_SECRETApp Secret бота QQ с q.qq.com
QQ_STT_API_KEYAPI-ключ внешнего провайдера STT (необязательно; используется, когда встроенный ASR QQ не возвращает текст)
QQ_STT_BASE_URLБазовый URL внешнего провайдера STT (необязательно)
QQ_STT_MODELНазвание модели для внешнего провайдера STT (необязательно)
QQ_ALLOWED_USERSopenID пользователей QQ через запятую, которым разрешено писать боту
QQ_GROUP_ALLOWED_USERSID групп QQ через запятую для доступа к @-сообщениям в группах
QQ_ALLOW_ALL_USERSРазрешить всех пользователей (true/false, переопределяет QQ_ALLOWED_USERS)
QQBOT_HOME_CHANNELopenID пользователя/группы QQ для cron-доставки и уведомлений
QQBOT_HOME_CHANNEL_NAMEОтображаемое имя домашнего канала QQ
QQ_PORTAL_HOSTПереопределить хост портала QQ (задайте sandbox.q.qq.com для маршрутизации через sandbox; по умолчанию: q.qq.com).
MATTERMOST_URLURL сервера Mattermost (например, https://mm.example.com)
MATTERMOST_TOKENТокен бота или персональный токен доступа для Mattermost
MATTERMOST_ALLOWED_USERSID пользователей Mattermost через запятую, которым разрешено писать боту
MATTERMOST_HOME_CHANNELID канала для проактивной доставки сообщений (cron, уведомления)
MATTERMOST_REQUIRE_MENTIONТребовать @упоминание в каналах (по умолчанию: true). Задайте false, чтобы отвечать на все сообщения.
MATTERMOST_FREE_RESPONSE_CHANNELSID каналов через запятую, где бот отвечает без @упоминания
MATTERMOST_REPLY_MODEСтиль ответов: thread (ответы в треде) или off (плоские сообщения, по умолчанию)
MATRIX_HOMESERVERURL домашнего сервера Matrix (например, https://matrix.org)
MATRIX_ACCESS_TOKENТокен доступа Matrix для аутентификации бота
MATRIX_USER_IDID пользователя Matrix (например, @hermes:matrix.org) — обязателен для входа по паролю, необязателен с токеном доступа
MATRIX_PASSWORDПароль Matrix (альтернатива токену доступа)
MATRIX_ALLOWED_USERSID пользователей Matrix через запятую, которым разрешено писать боту (например, @alice:matrix.org)
MATRIX_ALLOWED_ROOMSID комнат Matrix через запятую, которым разрешено вызывать ответы бота
MATRIX_HOME_ROOMID комнаты для проактивной доставки сообщений (например, !abc123:matrix.org)
MATRIX_ENCRYPTIONВключить сквозное шифрование (true/false, по умолчанию: false)
MATRIX_E2EE_MODEПоведение E2EE в Matrix: off, optional или required. При задании переопределяет MATRIX_ENCRYPTION.
MATRIX_DEVICE_IDСтабильный ID устройства Matrix для сохранения E2EE между перезапусками (например, HERMES_BOT). Без него E2EE-ключи меняются при каждом запуске и расшифровка исторических сообщений ломается.
MATRIX_REACTIONSВключить эмодзи-реакции жизненного цикла обработки на входящие сообщения (по умолчанию: true). Задайте false для отключения.
MATRIX_REQUIRE_MENTIONТребовать @упоминание в комнатах (по умолчанию: true). Задайте false, чтобы отвечать на все сообщения.
MATRIX_FREE_RESPONSE_ROOMSID комнат через запятую, где бот отвечает без @упоминания
MATRIX_IGNORE_USER_PATTERNSРегулярные выражения через запятую для ID ghost-пользователей мостов/appservice Matrix, которых нужно игнорировать
MATRIX_PROCESS_NOTICESОбрабатывать входящие события Matrix m.notice (по умолчанию: false)
MATRIX_SESSION_SCOPEОбласть сессии Matrix для проектных комнат: auto, room или thread (по умолчанию: auto)
MATRIX_TOOLS_ALLOW_CROSS_ROOMРазрешить инструментам Matrix обращаться к явно указанным комнатам, отличным от текущей (по умолчанию: false)
MATRIX_TOOLS_ALLOW_CROSS_ROOM_DESTRUCTIVEРазрешить кросс-комнатные инструменты Matrix вроде redaction/invite; требует MATRIX_TOOLS_ALLOW_CROSS_ROOM=true (по умолчанию: false)
MATRIX_TOOLS_ALLOW_REDACTIONРазрешить выполнение инструмента 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_MENTION_THREADSСоздавать тред при @упоминании бота в ЛС (по умолчанию: 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Ключ восстановления для верификации кросс-подписи после ротации ключей устройства. Рекомендуется для E2EE-конфигураций с включённой кросс-подписью.
MATRIX_RECOVERY_KEY_OUTPUT_FILEНеобязательный одноразовый путь для сгенерированного ключа восстановления Matrix. Создаётся с режимом 0600 и никогда не перезаписывается.
HASS_TOKENДолгосрочный токен доступа Home Assistant (включает платформу HA + инструменты)
HASS_URLURL Home Assistant (по умолчанию: http://homeassistant.local:8123)
WEBHOOK_ENABLEDВключить адаптер платформы webhook (true/false)
WEBHOOK_PORTПорт HTTP-сервера для получения вебхуков (по умолчанию: 8644)
WEBHOOK_SECRETГлобальный HMAC-секрет для валидации подписи вебхука (используется как запасной вариант, когда маршруты не задают свой собственный)
API_SERVER_ENABLEDВключить OpenAI-совместимый API-сервер (true/false). Работает параллельно с другими платформами.
API_SERVER_KEYBearer-токен для аутентификации API-сервера. Обязателен при включённом API-сервере.
API_SERVER_CORS_ORIGINSБраузерные 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 по-прежнему требуется на loopback; используйте строгий список API_SERVER_CORS_ORIGINS для доступа из браузера.
API_SERVER_MODEL_NAMEИмя модели, объявляемое на /v1/models. По умолчанию — имя профиля (или hermes-agent для профиля по умолчанию). Полезно в многопользовательских конфигурациях, где фронтенды вроде Open WebUI нуждаются в уникальных именах моделей на соединение.
GATEWAY_PROXY_URLURL удалённого API-сервера Hermes для пересылки сообщений (режим прокси). При задании шлюз обрабатывает только ввод/вывод платформы — вся работа агента делегируется удалённому серверу. Также настраивается через gateway.proxy_url в config.yaml.
GATEWAY_PROXY_KEYBearer-токен для аутентификации на удалённом API-сервере в режиме прокси. Должен совпадать с API_SERVER_KEY на удалённом хосте.
MESSAGING_CWDУстаревший запасной вариант для рабочего каталога шлюза. Предпочтительнее terminal.cwd в config.yaml.
GATEWAY_ALLOWED_USERSID пользователей через запятую, разрешённых на всех платформах
GATEWAY_ALLOW_ALL_USERSРазрешить всех пользователей без списков допуска (true/false, по умолчанию: false)

Веб-дашборд и Hermes Desktop

Аутентификация для веб-дашборда и подключения Hermes Desktop к удалённому бэкенду. По принятому правилу хранить только секреты, учётные данные размещаются в ~/.hermes/.env; OAuth client_id лучше задать в dashboard.oauth в config.yaml (переменная окружения побеждает при наличии).

В комплект входят три провайдера аутентификации дашборда. Для удалённого подключения Hermes Desktop или любого дашборда, доступного из интернета, рекомендуется OAuth (Nous Portal) — задайте HERMES_DASHBOARD_OAUTH_CLIENT_ID (получите через hermes dashboard register). Встроенный провайдер имя пользователя/пароль (HERMES_DASHBOARD_BASIC_AUTH_*) — самый быстрый вариант для бэкенда в доверенной локальной сети или за VPN, но не подходит для прямого публичного доступа. Для аутентификации через собственный identity provider используйте self-hosted OIDC (HERMES_DASHBOARD_OIDC_*). В любом случае не-loopback привязка (hermes dashboard --host 0.0.0.0) активирует шлюз аутентификации. Полная картина — в Web Dashboard → Authentication.

ПеременнаяОписание
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_HASHscrypt-хэш пароля для базового провайдера (предпочтительно — нет открытого пароля на диске). Вычислите через python -c "from plugins.dashboard_auth.basic import hash_password; print(hash_password('PW'))". Переопределяет dashboard.basic_auth.password_hash.
HERMES_DASHBOARD_BASIC_AUTH_SECRETHMAC-ключ (32+ байта, base64/hex/raw) для подписи stateless-токенов сессий базового провайдера. Задавайте явно, чтобы сессии переживали перезапуски и охватывали несколько воркеров; пустое значение — случайное на процесс (при каждом перезапуске будете выходить из системы). Переопределяет dashboard.basic_auth.secret.
HERMES_DASHBOARD_BASIC_AUTH_TTL_SECONDSВремя жизни токена доступа для базового провайдера (по умолчанию 12ч). Переопределяет dashboard.basic_auth.session_ttl_seconds.
HERMES_DASHBOARD_OAUTH_CLIENT_IDOAuth client id (agent:{instance_id}) для защищённого/публичного дашборда, активирующий провайдер Nous (plugins/dashboard_auth/nous). Переопределяет dashboard.oauth.client_id. Получите через hermes dashboard register.
HERMES_DASHBOARD_PUBLIC_URLПолный публичный URL дашборда для построения OAuth callback за обратными прокси. Переопределяет dashboard.public_url.
HERMES_DASHBOARD_OIDC_ISSUERURL эмитента OIDC для встроенного self-hosted OIDC провайдера (plugins/dashboard_auth/self_hosted). Обязателен для активации. Переопределяет dashboard.oauth.self_hosted.issuer.
HERMES_DASHBOARD_OIDC_CLIENT_IDПубличный client id OIDC (authorization-code + PKCE) для self-hosted OIDC провайдера. Обязателен для активации. Переопределяет dashboard.oauth.self_hosted.client_id.
HERMES_DASHBOARD_OIDC_SCOPESЗапрашиваемые области OIDC для self-hosted OIDC провайдера (по умолчанию openid profile email). Переопределяет dashboard.oauth.self_hosted.scopes.
HERMES_DESKTOP_REMOTE_URL(Сторона Desktop) Базовый URL удалённого бэкенда, например http://host:9119. При задании переопределяет URL шлюза в приложении; вход по-прежнему выполняется из панели настроек шлюза (OAuth redirect или имя пользователя/пароль — в зависимости от того, что объявляет бэкенд).

Microsoft Graph (встречи Teams)

App-only учётные данные для REST-клиента Microsoft Graph, используемого в пайплайне суммаризации встреч Teams. См. Регистрация приложения Microsoft Graph — пошаговое руководство по порталу Azure с точными требованиями к разрешениям API.

ПеременнаяОписание
MSGRAPH_TENANT_IDTenant ID Azure AD (GUID директории) для регистрации приложения Graph.
MSGRAPH_CLIENT_IDApplication (client) ID регистрации приложения Azure.
MSGRAPH_CLIENT_SECRETЗначение client secret для регистрации приложения. Храните в ~/.hermes/.env с chmod 600; периодически обновляйте через портал Azure.
MSGRAPH_SCOPEОбласть OAuth2 для запроса токена по client credentials (по умолчанию: https://graph.microsoft.com/.default).
MSGRAPH_AUTHORITY_URLAuthority платформы Microsoft Identity (по умолчанию: https://login.microsoftonline.com). Переопределяйте только для национальных/суверенных облаков (например, https://login.microsoftonline.us для GCC High).

Слушатель вебхуков Microsoft Graph

Слушатель входящих уведомлений об изменениях для событий Graph (встречи Teams, календарь, чат и др.). См. Microsoft Graph Webhook Listener — настройка и усиление безопасности.

ПеременнаяОписание
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Диапазоны CIDR через запятую, которым разрешено POST на слушатель (например, 52.96.0.0/14,52.104.0.0/14). Пусто = разрешить всё (по умолчанию). В продакшне ограничьте опубликованными диапазонами исходящих IP Microsoft Graph.

Доставка суммаризации встреч Teams

Используется только при включённом плагине teams_pipeline. Параметры также настраиваются в platforms.teams.extra в config.yaml — переменные окружения имеют приоритет при совместном задании. См. Microsoft Teams → Meeting Summary Delivery.

ПеременнаяОписание
TEAMS_DELIVERY_MODEgraph или incoming_webhook.
TEAMS_INCOMING_WEBHOOK_URLURL вебхука, сгенерированного Teams; обязателен при TEAMS_DELIVERY_MODE=incoming_webhook.
TEAMS_GRAPH_ACCESS_TOKENПредварительно полученный делегированный токен доступа для доставки через Graph. Редко нужен — при отсутствии writer использует учётные данные MSGRAPH_*.
TEAMS_TEAM_IDID целевой команды для доставки в канал (режим graph).
TEAMS_CHANNEL_IDID целевого канала (вместе с TEAMS_TEAM_ID).
TEAMS_CHAT_IDID личного или группового чата (альтернатива team+channel для режима graph).

LINE Messaging API

Используется встроенным плагином платформы LINE (plugins/platforms/line/). Полная настройка — в Messaging Gateway → LINE.

ПеременнаяОписание
LINE_CHANNEL_ACCESS_TOKENДолгосрочный токен доступа канала из LINE Developers Console (вкладка Messaging API). Обязательно.
LINE_CHANNEL_SECRETChannel secret (вкладка Basic settings); используется для верификации подписи вебхука HMAC-SHA256. Обязательно.
LINE_HOSTХост привязки вебхука (по умолчанию: 0.0.0.0).
LINE_PORTПорт привязки вебхука (по умолчанию: 8646).
LINE_PUBLIC_URLПубличный HTTPS базовый URL (например, https://my-tunnel.example.com). Обязателен для отправки изображений / аудио / видео — LINE принимает только HTTPS-URL.
LINE_ALLOWED_USERSID пользователей через запятую, которым разрешено писать боту в ЛС (с префиксом U).
LINE_ALLOWED_GROUPSID групп через запятую, в которых бот будет отвечать (с префиксом C).
LINE_ALLOWED_ROOMSID комнат через запятую, в которых бот будет отвечать (с префиксом R).
LINE_ALLOW_ALL_USERSЛазейка только для разработки — принимать любой источник. По умолчанию: false.
LINE_HOME_CHANNELЦель доставки по умолчанию для cron-заданий с deliver: line.
LINE_SLOW_RESPONSE_THRESHOLDСекунды до срабатывания постбэка Template Buttons для медленного LLM (по умолчанию: 45). Задайте 0 для отключения и всегда Push-fallback.
LINE_PENDING_TEXTТекст пузыря, отображаемый вместе с кнопкой постбэка.
LINE_BUTTON_LABELМетка кнопки постбэка (по умолчанию: Get answer).
LINE_DELIVERED_TEXTОтвет при повторном нажатии уже доставленной кнопки постбэка (по умолчанию: Already replied ✅).
LINE_INTERRUPTED_TEXTОтвет при нажатии кнопки постбэка, осиротевшей из-за /stop (по умолчанию: Run was interrupted before completion.).

ntfy (push-уведомления)

ntfy — лёгкий HTTP-сервис push-уведомлений. Подпишитесь на тему в мобильном приложении ntfy и публикуйте в эту тему для общения с агентом.

ПеременнаяОписание
NTFY_TOPICТема для подписки (входящие сообщения). Обязательно.
NTFY_SERVER_URLURL сервера (по умолчанию: https://ntfy.sh). Укажите self-hosted ntfy для конфиденциальности.
NTFY_TOKENНеобязательный токен аутентификации. Bearer-токен (например, tk_xyz) или user:pass для Basic auth.
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Цель доставки по умолчанию для cron-заданий с deliver: ntfy.
NTFY_HOME_CHANNEL_NAMEЧеловекочитаемая метка домашнего канала (по умолчанию — имя темы).

Перед развёртыванием с ненадёжными темами обязательно ознакомьтесь с руководством по ntfy — особенно с разделом модели идентификации.

Тонкая настройка мессенджеров

Продвинутые настройки буферизации исходящих сообщений для каждой платформы. Большинству пользователей никогда не понадобится их трогать; значения по умолчанию соблюдают лимиты частоты запросов каждой платформы без лишних задержек.

ПеременнаяОписание
HERMES_TELEGRAM_TEXT_BATCH_DELAY_SECONDSЗадержка перед сбросом накопленного фрагмента текста Telegram (по умолчанию: 0.6).
HERMES_TELEGRAM_TEXT_BATCH_SPLIT_DELAY_SECONDSЗадержка между частями, когда одно сообщение Telegram превышает лимит длины (по умолчанию: 2.0).
HERMES_TELEGRAM_MEDIA_BATCH_DELAY_SECONDSЗадержка перед сбросом накопленных медиа Telegram (по умолчанию: 0.6).
HERMES_TELEGRAM_FOLLOWUP_GRACE_SECONDSЗадержка перед отправкой follow-up после завершения агента, чтобы избежать гонки с последним фрагментом стрима.
HERMES_TELEGRAM_HTTP_CONNECT_TIMEOUT / _READ_TIMEOUT / _WRITE_TIMEOUT / _POOL_TIMEOUTПереопределить HTTP-таймауты python-telegram-bot (в секундах).
HERMES_TELEGRAM_HTTP_POOL_SIZEМаксимальное количество одновременных HTTP-соединений с API Telegram.
HERMES_TELEGRAM_DISABLE_FALLBACK_IPSОтключить жёстко заданные запасные IP Cloudflare, используемые при отказе DNS (true/false).
HERMES_DISCORD_TEXT_BATCH_DELAY_SECONDSЗадержка перед сбросом накопленного фрагмента текста Discord (по умолчанию: 0.6).
HERMES_DISCORD_TEXT_BATCH_SPLIT_DELAY_SECONDSЗадержка между частями, когда сообщение Discord превышает лимит длины (по умолчанию: 2.0).
HERMES_MATRIX_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDSАналоги batch-параметров Telegram для Matrix.
HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS / _MAX_CHARS / _MAX_MESSAGESНастройка буферизации Feishu — задержка, задержка разбивки, максимум символов на сообщение, максимум сообщений в батче.
HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDSЗадержка сброса медиа Feishu.
HERMES_FEISHU_DEDUP_CACHE_SIZEРазмер кэша дедупликации вебхуков Feishu (по умолчанию: 1024).
HERMES_WECOM_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDSНастройка буферизации WeCom.
HERMES_VISION_DOWNLOAD_TIMEOUTТаймаут в секундах для загрузки изображения перед передачей в vision-модели (по умолчанию: 30).
HERMES_RESTART_DRAIN_TIMEOUTШлюз: секунды ожидания завершения активных запусков при /restart перед принудительным перезапуском (по умолчанию: 900).
HERMES_GATEWAY_PLATFORM_CONNECT_TIMEOUTТаймаут подключения каждой платформы при запуске шлюза (в секундах).
HERMES_GATEWAY_BUSY_INPUT_MODEПоведение шлюза при занятом агенте: queue, steer или interrupt. Может быть переопределено для каждого чата через /busy.
HERMES_GATEWAY_BUSY_ACK_ENABLEDОтправлять ли шлюзу подтверждение (⚡/⏳/⏩), когда пользователь пишет, пока агент занят (по умолчанию: true). Задайте false для полного отключения этих сообщений — ввод по-прежнему ставится в очередь/перенаправляется/прерывает в обычном режиме, только ответ в чате подавляется. Синхронизируется с display.busy_ack_enabled в config.yaml.
HERMES_GATEWAY_NO_SUPERVISEВ Docker-образе с s6-overlay — отказаться от авто-наблюдения при запуске hermes gateway run и использовать семантику foreground без s6 (без авто-перезапуска, шлюз — основной процесс контейнера). Истинные значения: 1, true, yes. Аналог флага --no-supervise. Игнорируется вне образа с s6.
HERMES_GATEWAY_BOOTSTRAP_STATEВ Docker-образе с s6-overlay — объявить начальное состояние supervised шлюза на свежем томе. На пустом томе нет сохранённого gateway_state.json, поэтому загрузчик регистрирует слот gateway-default, но оставляет его остановленным (авто-запуск только если последнее записанное состояние было running). Задайте running — хук первого запуска заполнит gateway_state.json до запуска загрузчика, шлюз поднимется при первой загрузке. Реагирует только на буквальное значение running. Только первый запуск: существующий gateway_state.json никогда не перезаписывается. Игнорируется вне образа с s6.
HERMES_FILE_MUTATION_VERIFIERВключить верификатор мутаций файлов в конце каждого хода (по умолчанию: true). При включении Hermes добавляет предупреждение со списком вызовов write_file / patch, которые не удались в ходе хода и не были заменены успешной записью. Задайте 0, false, no или off для отключения. Зеркалирует display.file_mutation_verifier в config.yaml; переменная окружения побеждает при задании.
HERMES_CRON_TIMEOUTТаймаут неактивности для запусков агента cron-заданий в секундах (по умолчанию: 600). Агент может работать неограниченно долго, пока активно вызывает инструменты или получает токены стрима — таймаут срабатывает только при простое. Задайте 0 для неограниченного времени.
HERMES_CRON_SCRIPT_TIMEOUTТаймаут для скриптов предварительного запуска cron-заданий в секундах (по умолчанию: 120). Увеличьте для скриптов, требующих длительного выполнения (например, рандомизированные задержки для anti-bot тайминга). Также настраивается через cron.script_timeout_seconds в config.yaml.
HERMES_CRON_MAX_PARALLELМаксимальное количество параллельно запускаемых cron-заданий за тик (по умолчанию: 4).

Поведение агента

ПеременнаяОписание
HERMES_MAX_ITERATIONSМаксимальное количество итераций вызова инструментов за разговор (по умолчанию: 90)
HERMES_INFERENCE_MODELПереопределить имя модели на уровне процесса (приоритет над config.yaml для сессии). Также задаётся флагом -m/--model.
HERMES_YOLO_MODEЗадайте 1 для обхода запросов подтверждения опасных команд. Аналог --yolo.
HERMES_ACCEPT_HOOKSАвтоматически принимать любые незнакомые shell-хуки, объявленные в config.yaml, без TTY-запроса. Аналог --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-серверов. Задаётся автоматически флагом --safe-mode (который также включает два флага выше).
HERMES_MD_NAMESСписок имён файлов правил через запятую для авто-инжекта (по умолчанию: AGENTS.md,CLAUDE.md,.cursorrules,SOUL.md).
HERMES_TOOL_PROGRESSУстаревшая переменная для отображения прогресса инструментов. Предпочтительнее display.tool_progress в config.yaml.
HERMES_TOOL_PROGRESS_MODEУстаревшая переменная для режима отображения прогресса инструментов. Предпочтительнее display.tool_progress в config.yaml.
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 задачи). Воркеры и порождённый subprocess hermes-tools MCP наследуют его для корректного контроля доступа к инструментам канбана. Не задавайте вручную.
HERMES_API_TIMEOUTТаймаут LLM API-вызова в секундах (по умолчанию: 1800)
HERMES_API_CALL_STALE_TIMEOUTТаймаут устаревшего не-стримингового вызова в секундах (по умолчанию: 300). Автоматически отключается для локальных провайдеров при отсутствии задания. Также настраивается через providers.<id>.stale_timeout_seconds или providers.<id>.models.<model>.stale_timeout_seconds в config.yaml.
HERMES_STREAM_READ_TIMEOUTТаймаут чтения стримингового сокета в секундах (по умолчанию: 120). Автоматически увеличивается до HERMES_API_TIMEOUT для локальных провайдеров. Увеличьте при таймаутах локальных LLM при генерации большого кода.
HERMES_STREAM_STALE_TIMEOUTТаймаут обнаружения устаревшего стрима в секундах (по умолчанию: 180). Автоматически отключается для локальных провайдеров. Запускает разрыв соединения, если в течение этого времени не поступают фрагменты.
HERMES_STREAM_RETRIESКоличество попыток переподключения в середине стрима при временных сетевых ошибках (по умолчанию: 3).
HERMES_AGENT_TIMEOUTТаймаут неактивности работающего агента в шлюзе в секундах (по умолчанию: 900). Сбрасывается при каждом вызове инструмента и токене стрима. Задайте 0 для отключения.
HERMES_AGENT_TIMEOUT_WARNINGШлюз: отправить предупреждение после этого количества секунд неактивности (по умолчанию: 75% от HERMES_AGENT_TIMEOUT).
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-файл проектного плагина даже при включённой переменной — проектные плагины могут расширять UI через статические JS/CSS, но их бэкенд-маршруты загружаются только при перемещении в ~/.hermes/plugins/.
HERMES_PLUGINS_DEBUG1/true для вывода подробных логов обнаружения плагинов в stderr — сканируемые директории, разобранные манифесты, причины пропуска и полные трейсбэки при ошибках разбора или register(). Предназначено для авторов плагинов.
HERMES_BACKGROUND_NOTIFICATIONSРежим уведомлений о фоновых процессах в шлюзе: all (по умолчанию), result, error, off
HERMES_EPHEMERAL_SYSTEM_PROMPTЭфемерный системный промпт, внедряемый во время API-вызова (никогда не сохраняется в сессиях)
HERMES_PREFILL_MESSAGES_FILEПуть к JSON-файлу с эфемерными prefill-сообщениями, внедряемыми во время API-вызова.
HERMES_ALLOW_PRIVATE_URLStrue/false — разрешить инструментам обращаться к localhost/адресам приватных сетей. Отключено по умолчанию в режиме шлюза.
HERMES_REDACT_SECRETStrue/false — управлять редактированием секретов в выводе инструментов, логах и ответах в чате (по умолчанию: true).
HERMES_WRITE_SAFE_ROOTНеобязательный префикс директории, ограничивающий запись write_file/patch; пути за его пределами требуют подтверждения.
HERMES_DISABLE_LAZY_INSTALLSВнутренняя связующая переменная, задаётся автоматически в официальном Docker-образе, чтобы предотвратить установку зависимостей во время выполнения в неизменяемое дерево /opt/hermes. Пользовательский аналог — security.allow_lazy_installs: false в config.yaml; не задавайте её в .env.
HERMES_DISABLE_FILE_STATE_GUARDЗадайте 1 для отключения защиты “файл изменился с момента чтения” в patch/write_file.
HERMES_CORE_TOOLSПереопределение списка базовых инструментов через запятую (продвинутый режим; редко нужно).
HERMES_BUNDLED_SKILLSПереопределение списка встроенных навыков, загружаемых при запуске, через запятую.
HERMES_OPTIONAL_SKILLSСписок имён необязательных навыков через запятую для авто-установки при первом запуске.
HERMES_DEBUG_INTERRUPTЗадайте 1 для подробного логирования трассировки прерываний/отмены в agent.log.
HERMES_DUMP_REQUESTSДамп полезных нагрузок API-запросов в лог-файлы (true/false)
HERMES_DUMP_REQUEST_STDOUTДамп полезных нагрузок API-запросов в stdout вместо лог-файлов.
HERMES_OAUTH_TRACEЗадайте 1 для логирования обмена OAuth-токенами и попыток обновления. Включает редактированную информацию о времени.
HERMES_OAUTH_FILEПереопределить путь для хранения OAuth-учётных данных (по умолчанию: ~/.hermes/auth.json).
HERMES_AGENT_HELP_GUIDANCEДобавить дополнительный текст инструкций в системный промпт для пользовательских развёртываний.
HERMES_AGENT_LOGOПереопределить ASCII-баннер при запуске CLI.
DELEGATION_MAX_CONCURRENT_CHILDRENМаксимальное количество параллельных подагентов на батч delegate_task (по умолчанию: 3, минимум 1, без верхней границы). Также настраивается через delegation.max_concurrent_children в config.yaml — значение из конфига имеет приоритет.

Интерфейс

ПеременнаяОписание
HERMES_TUIЗапустить TUI вместо классического CLI при задании 1. Аналог --tui.
HERMES_TUI_DIRПуть к собранной директории ui-tui/ (должна содержать dist/entry.js и заполненные node_modules). Используется дистрибутивами и Nix для пропуска npm install при первом запуске.
HERMES_TUI_RESUMEВозобновить конкретную TUI-сессию по ID при запуске. При задании hermes --tui пропускает создание новой сессии и подхватывает указанную — удобно для повторного подключения после разрыва или краша терминала.
HERMES_TUI_THEMEПринудительно задать цветовую тему TUI: light, dark или шестизначный HEX фона (например, ffffff или 1a1a2e). Без задания Hermes авто-определяет тему через COLORFGBG и запросы фона терминала; переменная переопределяет авто-определение в терминалах (Ghostty, Warp, iTerm2 и др.), которые не задают COLORFGBG.
HERMES_INFERENCE_MODELПринудительно задать модель для hermes -z / hermes chat без изменения config.yaml. Работает вместе с флагом --provider. Удобно для скриптовых вызовов (sweeper, CI, пакетные запуски), которым нужно переопределять модель по умолчанию для каждого запуска.

Настройки сессии

ПеременнаяОписание
SESSION_IDLE_MINUTESСброс сессий после N минут неактивности (по умолчанию: 1440)
SESSION_RESET_HOURЧас ежедневного сброса в 24-часовом формате (по умолчанию: 4 = 4:00)
HERMES_SESSION_IDАвтоматически экспортируется в каждый дочерний процесс инструмента, порождённый Hermes (terminal, execute_code, persistent shell, бэкенды Docker/Singularity, делегированные запуски подагентов). Задаётся агентом как ID текущей сессии; пользовательские скрипты, вызываемые из инструментов, могут читать его для корреляции вывода, телеметрии или побочных эффектов с исходной сессией Hermes. Не задавайте вручную — переопределение из родительского shell работает только вне запуска агента и перезаписывается в момент старта сессии агентом.

Сжатие контекста (только config.yaml)

Сжатие контекста настраивается исключительно через config.yaml — переменных окружения для него нет. Пороговые параметры находятся в блоке compression:, а модель суммаризации — в auxiliary.compression:.

compression:
  enabled: true
  threshold: 0.50
  target_ratio: 0.20         # доля threshold для сохранения как недавний хвост
  protect_last_n: 20         # минимальное число недавних сообщений без сжатия
инфо
Миграция с устаревшего формата

Старые конфиги с compression.summary_model, compression.summary_provider и compression.summary_base_url автоматически мигрируют в auxiliary.compression.* при первой загрузке.

Переопределения вспомогательных задач

ПеременнаяОписание
AUXILIARY_VISION_PROVIDERПереопределить провайдер для задач vision
AUXILIARY_VISION_MODELПереопределить модель для задач vision
AUXILIARY_VISION_BASE_URLПрямой OpenAI-совместимый эндпоинт для задач vision
AUXILIARY_VISION_API_KEYAPI-ключ в паре с AUXILIARY_VISION_BASE_URL
AUXILIARY_WEB_EXTRACT_PROVIDERПереопределить провайдер для задач веб-извлечения/суммаризации
AUXILIARY_WEB_EXTRACT_MODELПереопределить модель для задач веб-извлечения/суммаризации
AUXILIARY_WEB_EXTRACT_BASE_URLПрямой OpenAI-совместимый эндпоинт для задач веб-извлечения/суммаризации
AUXILIARY_WEB_EXTRACT_API_KEYAPI-ключ в паре с AUXILIARY_WEB_EXTRACT_BASE_URL

Для прямых эндпоинтов конкретных задач 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

Устаревший формат с одним провайдером fallback_model по-прежнему поддерживается для обратной совместимости, но для новых конфигов используйте fallback_providers. Для политики вспомогательных задач задайте auxiliary.<task>.fallback_chain в config.yaml; эквивалента в виде переменной окружения нет.

Подробности — в Fallback Providers.

Маршрутизация провайдеров (только 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" для исключения провайдеров, хранящих данные
совет

Используйте hermes config set для задания переменных окружения — команда автоматически сохраняет их в нужный файл (.env для секретов, config.yaml для всего остального).

ESC