Skip to content

Environment

Gormes resolves settings in this order:

  1. CLI flags
  2. Environment variables (including values loaded from $GORMES_HOME/.env)
  3. config.toml
  4. Built-in defaults

The dotenv file at $GORMES_HOME/.env is read before config.toml and populates os.Setenv for any key the shell did not already set — so shell env always wins. There is no project-local dotenv search; only the file at $GORMES_HOME/.env is loaded automatically.

The variables below are grouped by what they affect at runtime. Every name and default in this page is verified against the binary source. Variables not listed here are either test-only fixtures or aliases of variables shown here.

These variables affect process-wide behavior — paths, language, voice, and the inference identity Gormes uses when starting a turn.

NameDefaultPurpose
GORMES_HOME~/.gormesNative Gormes state/config root. Drives every other path in this table.
GORMES_CONTEXT_HOME$GORMES_HOME (with a memory/ migration fallback, then ancestor walk for SOUL.md)Override the live-turn profile directory.
GORMES_CONTEXT_MEMORY_DIRresolved relative to context homeOverride the live-turn memory directory.
GORMES_SOURCE_ROOT / GORMES_SOURCE_DIRunsetOverride the managed source checkout location used by gormes update.
GORMES_BUNDLED_SKILLS_ROOTbinary-bundled skills treeOverride the bundled-skill root used by skill discovery.
GORMES_LANGUAGE"" (falls back to LANG)UI language code (e.g. en, zh).
GORMES_LOCALES_DIRbinary-bundled locales/Override the locale file directory.
GORMES_NO_CLEAR_SCREENunsetWhen truthy, suppress wizard screen clears for sandboxed terminals.
GORMES_TUI_MOUSE_TRACKINGtrue (from [tui])Enable or disable TUI mouse capture.
GORMES_VOICE_RECORD_KEYctrl+bVoice-record hot-key.
GORMES_INFERENCE_PROVIDERunsetProvider override for TUI/scripted chat startup. Must be set together with GORMES_INFERENCE_MODEL; setting only one is a hard error.
GORMES_INFERENCE_MODELunsetModel override for TUI/scripted chat startup. Must be set together with GORMES_INFERENCE_PROVIDER.
GORMES_ENDPOINTfrom [hermes].endpoint (default "")Provider base URL override.
GORMES_MODELfrom [hermes].model (default "hermes-agent")Persistent default model override.
GORMES_API_KEYfrom [hermes].api_key (default "")Provider API key. Stored in .env.
GORMES_ALLOW_PRIVATE_URLSunsetWhen truthy, web tools may target private IPs.
GORMES_ENABLE_PROJECT_PLUGINS (or legacy HERMES_ENABLE_PROJECT_PLUGINS)unsetOpt in to per-project plugin discovery.
GORMES_EXTRACTOR_API_KEYunsetAPI key used by the memory extractor’s HTTP client during integration tests.
GORMES_SEMANTIC_MODELnomic-embed-textEmbedding model name for semantic memory paths.

Native Kanban storage lives under $GORMES_HOME by default. Override only when running side-by-side fleets or migrating from Hermes.

NameDefaultPurpose
GORMES_KANBAN_DB$GORMES_HOME/kanban.dbAbsolute path to the Kanban SQLite database.
GORMES_KANBAN_HOME$GORMES_HOMERoot for the Kanban board registry. Named boards live at <home>/kanban/boards/<slug>/kanban.db.
HERMES_KANBAN_BOARDunsetHermes-compatible alias for selecting a named board.

Routing for web search, browser tools, and the outbound gateway proxy.

NameDefaultPurpose
GORMES_WEB_BACKENDfrom [web].backend (default "")Web search backend name. Lowercased on read.
GORMES_WEB_USE_GATEWAYfrom [web].use_gateway (default false)Route web requests through the gateway.
GORMES_BROWSER_CDP_URL, BROWSER_CDP_URL, CHROME_REMOTE_DEBUGGING_URLfrom [browser].cdp_url (default "")CDP endpoint. The three are evaluated in this order; the first non-empty value wins.
GORMES_BROWSER_HARNESS_STATE_DIROS temp dirOverride the browser harness state directory.
GORMES_DASHBOARD_API_KEYgormes-dashboard-dev when starting the dashboard; required for cross-process discoveryBearer token for the local dashboard and gateway discovery clients.
GATEWAY_PROXY_URLfrom [gateway].proxy_url (default "")Outbound HTTP proxy URL.
GATEWAY_PROXY_KEYfrom [gateway].proxy_key (default "")Outbound proxy bearer. Auto-stored in .env.

Honcho-compatible memory facade. Every variable below maps 1:1 onto a [goncho] config field. Defaults come from the goncho package, mirrored into config defaults at startup.

NameDefaultPurpose
GORMES_GONCHO_ENABLEDtrueMaster toggle.
GORMES_GONCHO_WORKSPACEgoncho.DefaultWorkspaceIDWorkspace identifier.
GORMES_GONCHO_OBSERVER_PEERgoncho.DefaultObserverPeerIDObserver peer identifier.
GORMES_GONCHO_RECENT_MESSAGESgoncho.DefaultRecentMessagesRecent-window message count.
GORMES_GONCHO_MAX_MESSAGE_SIZEgoncho.DefaultMaxMessageSizePer-message byte ceiling.
GORMES_GONCHO_MAX_FILE_SIZEgoncho.DefaultMaxFileSizePer-file byte ceiling.
GORMES_GONCHO_GET_CONTEXT_MAX_TOKENSgoncho.DefaultGetContextMaxTokensToken budget for get_context.
GORMES_GONCHO_REASONING_ENABLEDtruePersist reasoning blocks.
GORMES_GONCHO_PEER_CARD_ENABLEDtruePersist peer cards.
GORMES_GONCHO_SUMMARY_ENABLEDtruePersist summaries.
GORMES_GONCHO_DREAM_ENABLEDfalseEnable idle/dream consolidation.
GORMES_GONCHO_DREAM_IDLE_TIMEOUT_MINUTESderived from goncho.DefaultDreamIdleTimeoutIdle minutes before dream runs.
GORMES_GONCHO_DERIVER_WORKERSgoncho.DefaultDeriverWorkersDeriver worker pool size.
GORMES_GONCHO_REPRESENTATION_BATCH_MAX_TOKENSgoncho.DefaultRepresentationBatchMaxTokensRepresentation batch token cap.
GORMES_GONCHO_DIALECTIC_DEFAULT_LEVEL"low"Default dialectic level.

Gormes prefers GORMES_TELEGRAM_* and accepts the Hermes-compatible TELEGRAM_* names so a copied .env keeps working. Native names win when both are set. See Telegram for the intended setup path.

NameDefaultPurpose
GORMES_TELEGRAM_BOT_TOKEN / GORMES_TELEGRAM_TOKEN / TELEGRAM_BOT_TOKEN / TELEGRAM_TOKENfrom [telegram].bot_token (default "")Bot token. First non-empty wins.
GORMES_TELEGRAM_CHAT_ID / TELEGRAM_HOME_CHANNEL / TELEGRAM_CHAT_IDfrom [telegram].allowed_chat_id (default 0)Single allowed chat ID for cron delivery and gateway allow-listing.
GORMES_TELEGRAM_ALLOWED_USERS / TELEGRAM_ALLOWED_USERSfrom [telegram].allowed_user_idsComma-separated user IDs allowed to message the bot.
GORMES_TELEGRAM_ALLOWED_CHATS / TELEGRAM_ALLOWED_CHATSfrom [telegram].allowed_chatsComma-separated additional allow-list chat IDs.
GORMES_TELEGRAM_GUEST_MODE / TELEGRAM_GUEST_MODEfrom [telegram].guest_mode (default false)Allow unknown users in read-only mode.
GORMES_TELEGRAM_NOTIFICATIONS / HERMES_TELEGRAM_NOTIFICATIONS / TELEGRAM_NOTIFICATIONSfrom [telegram].notifications (default "important")Notification level.
NameDefaultPurpose
GORMES_DISCORD_TOKENfrom [discord].token (default "")Bot token.
GORMES_DISCORD_CHANNEL_IDfrom [discord].allowed_channel_id (default "")Primary allow-list channel ID.
GORMES_DISCORD_ALLOWED_CHANNELS / DISCORD_ALLOWED_CHANNELSfrom [discord].allowed_channelsCSV of channel IDs.
GORMES_DISCORD_IGNORED_CHANNELS / DISCORD_IGNORED_CHANNELSfrom [discord].ignored_channelsCSV of ignored channel IDs.
GORMES_DISCORD_FREE_RESPONSE_CHANNELS / DISCORD_FREE_RESPONSE_CHANNELSfrom [discord].free_response_channelsChannels where mentions are not required.
GORMES_DISCORD_NO_THREAD_CHANNELS / DISCORD_NO_THREAD_CHANNELSfrom [discord].no_thread_channelsChannels where threads must not be created.
GORMES_DISCORD_REQUIRE_MENTION / DISCORD_REQUIRE_MENTIONfrom [discord].require_mention (default false)Require @bot mention.
GORMES_DISCORD_AUTO_THREAD / DISCORD_AUTO_THREADfrom [discord].auto_threadAuto-thread incoming requests.
GORMES_DISCORD_REPLY_TO_MODE / DISCORD_REPLY_TO_MODEfrom [discord].reply_to_mode (default "first")One of first, all, off.
GORMES_DISCORD_ALLOW_BOTS / DISCORD_ALLOW_BOTSfrom [discord].allow_bots (default "none")One of none, mentions, all.
GORMES_DISCORD_SERVER_ACTIONSfrom [discord].server_actionsCSV of allowed server actions.
NameDefaultPurpose
GORMES_SLACK_ENABLEDfrom [slack].enabled (default false)Master toggle.
GORMES_SLACK_BOT_TOKENfrom [slack].bot_token (default "")xoxb token.
GORMES_SLACK_APP_TOKENfrom [slack].app_token (default "")xapp token.
GORMES_SLACK_CHANNEL_IDfrom [slack].allowed_channel_id (default "")Primary allow-list channel ID. Slack has no default_channel_id.
GORMES_SLACK_ALLOWED_CHANNELS / SLACK_ALLOWED_CHANNELSfrom [slack].allowed_channelsCSV of channel IDs.
GORMES_SLACK_COALESCE_MSfrom [slack].coalesce_ms (default 1000)Edit coalescer interval in milliseconds.
GORMES_SLACK_FIRST_RUN_DISCOVERYfrom [slack].first_run_discovery (default false)Discover channels on first run.
GORMES_SLACK_REQUIRE_MENTIONfrom [slack].require_mention (default true)Require @mention.
GORMES_SLACK_STRICT_MENTIONfrom [slack].strict_mentionReject indirect mentions.
GORMES_SLACK_FREE_RESPONSE_CHANNELSfrom [slack].free_response_channelsChannels where mentions are not required.
GORMES_SLACK_REPLY_IN_THREADfrom [slack].reply_in_thread (default true)Reply in thread.

Microsoft Teams uses bare TEAMS_* names rather than GORMES_TEAMS_*. Only the master toggle is namespaced.

NameDefaultPurpose
GORMES_TEAMS_ENABLEDfrom [teams].enabled (default false)Master toggle.
TEAMS_CLIENT_IDfrom [teams].client_id (default "")Azure app client ID.
TEAMS_CLIENT_SECRETfrom [teams].client_secret (default "")Azure app secret.
TEAMS_TENANT_IDfrom [teams].tenant_id (default "")Azure tenant ID.
TEAMS_PORTfrom [teams].port (default 3978)Local webhook port.
TEAMS_ALLOWED_USERSfrom [teams].allowed_users (default [])CSV of allowed user IDs.
TEAMS_ALLOW_ALL_USERSfrom [teams].allow_all_users (default false)Skip the user allow-list.

Voice synthesis and transcription. TTS routes through [runtime].tts_provider (default "edge"), then per-provider env vars apply.

NameDefaultPurpose
GORMES_TTS_COMMANDunsetExternal command for the command TTS provider.
GORMES_TTS_VOICEunsetVoice name passed to the active TTS provider.
GORMES_TTS_OPENAI_KEY (or OPENAI_API_KEY)unsetAPI key for OpenAI TTS.
GORMES_TTS_EDGE_KEY / GORMES_AZURE_TTS_KEYunsetAPI key for Edge TTS.
GORMES_TTS_EDGE_REGIONunsetAzure region for Edge TTS.
GORMES_TTS_EDGE_BASE_URLunsetEndpoint override for Edge TTS.
GORMES_STT_OPENAI_KEY (or OPENAI_API_KEY, VOICE_TOOLS_OPENAI_KEY)unsetAPI key for OpenAI Whisper STT.
GORMES_STT_OPENAI_BASE_URLunsetEndpoint override for OpenAI Whisper STT.
GORMES_STT_CACHE_DIROS tempLocal cache directory for STT artifacts.
GORMES_WASI_WHISPER_MODELbundled defaultModel identifier for the WASI Whisper transcriber.
GORMES_WHISPER_COMMANDunsetExternal whisper command for Telegram audio transcription.
GORMES_WHISPER_MODELunsetModel passed to GORMES_WHISPER_COMMAND.

These variables are read by install.sh and scripts/install.ps1 only — the running binary does not inspect them. See Paths & logs for the resolved install layout.

NameDefaultPurpose
GORMES_PREFIXunsetCompatibility prefix: installer publishes into $GORMES_PREFIX/bin.
GORMES_BIN_DIRplatform-default bin/Published binary directory override.
GORMES_RESTART_GATEWAYautoRestart policy for the gateway after install: auto, always, or never.
GORMES_UNINSTALL_FORCE_PURGEunsetWhen truthy, gormes uninstall permanently deletes instead of moving artifacts to a quarantine directory.