Gormes loads exactly one config file:
The default $GORMES_HOME is ~/.gormes. There is no project-local override,
no XDG path, and no implicit YAML location — the only YAML fallback is
$GORMES_HOME/config.yaml, which exists solely so a Hermes user can paste
their config.yaml while migrating. Secrets are never written to
config.toml; they live in $GORMES_HOME/.env.
Precedence: CLI flag > environment variable > config.toml > built-in default.
Use the binary to inspect and edit the file:
gormes config path # absolute path to the active config
gormes config show # resolved config with secrets redacted
gormes config get <key> # read one value
gormes config set <k> <v> # write to config.toml or .env (auto-routed)
gormes config check # schema + dotenv presence
gormes config edit # open in $EDITOR / $VISUAL
gormes config migrate # apply Gormes-native schema migrations
Every section below is read by internal/config. Defaults are the values the
binary applies when the key is missing. Boolean values default to false
unless noted.
Provider and model identity for the default agent.
Field Default Purpose endpoint"" (empty — provider client picks the URL)Override the provider’s base URL. provider""Provider name (e.g. openai, anthropic, openrouter). model"hermes-agent"Default model. The literal hermes-agent is a sentinel that triggers per-provider default-model resolution. api_key""API key. Always written to .env, never to config.toml. api_key_refunset Optional SecretRef pointing at an external secrets provider.
Per-turn runtime knobs for the default agent.
Field Default Purpose max_turns60Hard cap on agent turns per session. reasoning_effort"medium"Reasoning effort hint for compatible providers. gateway_timeout1800 (seconds)Hermes-compatible gateway request timeout. gateway_timeout_warning0Warning threshold for slow turns. api_max_retries3Retry budget for provider calls. image_input_mode""Image input handling for vision-capable models. verbosefalseVerbose turn diagnostics. active_personality""Name of the personality preset to apply. personalitiesbuilt-in map (helpful, concise, technical, creative, teacher, kawaii, catgirl, noir, pirate, philosopher, hype, shakespeare) Personality preset text. Operators may add or override entries.
Cross-agent runtime policy.
Field Default Purpose max_tool_iterations90Per-turn tool call ceiling. terminal_backend"local"Default terminal backend label. tts_provider"edge"Default TTS provider. compression_threshold0.5History compression trigger. session_reset_policy"inactivity"One of inactivity, daily, off. session_reset_after_minutes1440Inactivity window (24 hours). session_reset_daily_hour4Hour of the day for daily reset. session_reset_memory_summarytrueCapture a memory summary on reset.
Free-form provider-keyed TTS settings (map[string]any). Provider-specific
keys live under [tts.<provider>]. Defaults to {}.
Free-form provider-keyed image generation settings. Defaults to {}.
Hermes-compatible gateway transport.
Field Default Purpose proxy_url""Outbound proxy URL. Mirror of GATEWAY_PROXY_URL. proxy_key""Proxy bearer token. Auto-routed to .env when set via gormes config set. platforms.<name>.gateway_restart_notificationunset Per-platform restart-notification toggle.
Field Default Purpose backend"" (uses runtime.terminal_backend)Override terminal backend per-section. cwd"."Default working directory for terminal sessions.
Field Default Purpose mode"strict"execute_code policy. strict blocks anything outside the shell sandbox.
Field Default Purpose language""UI language. Overridden by GORMES_LANGUAGE. personality""Personality preset name shown in UI. tool_progress""Tool progress display mode. tool_progress_commandfalseShow the command for each tool step. show_reasoningfalseRender reasoning blocks in the TUI/transcripts. streamingfalseStream provider output. bell_on_completefalseTerminal bell at end of turn. compactfalseCompact transcript layout. cleanup_progressfalseErase progress lines after completion. interim_assistant_messagesfalseShow interim assistant turns. background_process_notifications""Background-task notification mode. busy_input_mode""TUI behavior while a turn is in flight. platforms.<name>.tool_progressunset Per-platform tool progress override.
Field Default Purpose theme"dark"TUI theme. mouse_trackingtrueEnable mouse capture. Override with GORMES_TUI_MOUSE_TRACKING.
Field Default Purpose max_bytes200000Maximum bytes the input box accepts in one submission. max_lines10000Maximum lines per submission.
Field Default Purpose cron_mode"deny"Approval policy for cron-scheduled actions.
Field Default Purpose record_key"ctrl+b"TUI hot-key for voice recording. Override with GORMES_VOICE_RECORD_KEY.
Field Default Purpose enabledfalseEnable STT for voice inputs. provider""STT provider name (e.g. openai, local). local.model""Local model identifier. local.language""Local model language hint. openai.model""OpenAI Whisper model name.
Auxiliary inference tasks (curator, vision). Each subkey accepts the same
shape.
Field Default Purpose auxiliary.curator.provider"auto"Provider override (auto, main, or any provider name). auxiliary.curator.model""Model override. auxiliary.curator.base_url""Endpoint override. auxiliary.curator.api_key""API key override (routed to .env). auxiliary.curator.timeout600Timeout seconds. auxiliary.curator.extra_body{}Free-form provider request extras. auxiliary.vision.*empty Same shape, vision provider.
Legacy alias for [auxiliary.curator]. curator.auxiliary accepts the same
fields as auxiliary.curator for Hermes parity.
The Telegram bot adapter. See Telegram for the
intended setup path. Selected defaults:
Field Default Purpose bot_token""Bot token (routed to .env). allowed_chat_id0Single allow-list chat ID. allowed_chatsunset List of allow-list chat IDs. allowed_user_ids[]Allow-list user IDs. require_mentionfalseRequire @bot mention in groups. guest_modefalseAllow unknown users (read-only). coalesce_ms1000Edit coalescer interval (milliseconds). fresh_final_after_seconds60.0Mark a message as final after this idle window. notifications"important"Notification level. first_run_discoverytrueDiscover the home chat on first run. memory_queue_cap1024Async memory queue capacity. extractor_batch_size5Memory extractor batch size. extractor_poll_interval10sMemory extractor poll interval. recall_enabledtrueEnable graph recall. recall_weight_threshold1.0Recall weight cutoff. recall_max_facts10Max recalled facts per turn. recall_depth2Graph traversal depth. recall_decay_horizon_days180Linear weight decay horizon. mirror_enabledtrueMirror memory to USER.md. mirror_path$GORMES_HOME/memory/USER.mdMirror destination. mirror_interval30sMirror flush interval. semantic_enabledfalseOpt-in semantic fusion. semantic_endpoint / semantic_model / semantic_top_k / semantic_min_similarity"" / "" / 3 / 0.35Semantic recall tuning. embedder_poll_interval30sEmbedder poll interval. embedder_batch_size10Embedder batch size. embedder_call_timeout10sEmbedder request timeout. query_embed_timeout60msQuery-side embedding timeout.
Field Default Purpose token""Bot token (routed to .env). allowed_channel_id""Primary allowed channel ID. allowed_channelsunset List of allowed channel IDs. ignored_channelsunset List of channels to ignore. free_response_channelsunset Channels where mentions are not required. no_thread_channelsunset Channels where threads must not be created. require_mentionunset Require @bot mention (defaults to false when unset). auto_threadunset Auto-create threads. reply_to_mode"first"One of first, all, off. allow_bots"none"One of none, mentions, all. server_actions[]Server action allow-list. coalesce_ms1000Edit coalescer interval. first_run_discoveryfalseDiscover channels on first run.
Field Default Purpose enabledfalseMaster toggle for the Slack adapter. bot_token""xoxb token (routed to .env). app_token""xapp token (routed to .env). allowed_channel_id""Primary allowed channel ID. There is no default_channel_id field. allowed_channelsunset List of allowed channel IDs. coalesce_ms1000Edit coalescer interval. first_run_discoveryfalseChannel discovery on first run. require_mentiontrueRequire @mention in shared channels. strict_mentionunset Reject indirect mentions. reply_in_threadtrueReply in thread by default. free_response_channelsunset Channels where mentions are not required.
Microsoft Teams adapter. Uses TEAMS_* env vars rather than GORMES_TEAMS_*.
Field Default Purpose enabledfalseMaster toggle. client_id""Azure app client ID. client_secret""Azure app secret (routed to .env). tenant_id""Azure tenant ID. port3978Local webhook port. allowed_users[]Allow-list of user IDs. allow_all_usersfalseSkip the user allow-list.
Disabled-by-default adapter. enabled=false, login_token="", hy_source="",
agent_id="", allowed_conversation_id="", coalesce_ms=0,
first_run_discovery=false.
Field Default Purpose backend""Web search backend (e.g. tavily, serper). Override with GORMES_WEB_BACKEND. use_gatewayfalseRoute web requests through the gateway. Override with GORMES_WEB_USE_GATEWAY.
Field Default Purpose cdp_url""CDP endpoint URL. Overridden by GORMES_BROWSER_CDP_URL, BROWSER_CDP_URL, or CHROME_REMOTE_DEBUGGING_URL.
Field Default Purpose website_blocklist.enabledfalseEnable the website blocklist. website_blocklist.domains[]Hostname blocklist entries. website_blocklist.shared_files[]Paths to shared blocklist files.
External secret-provider routing for SecretRef lookups.
Field Default Purpose defaults.env"default"Provider alias used by SecretRef{source="env"}. defaults.file""Provider alias for file-backed refs. defaults.exec""Provider alias for exec-backed refs. providers.<alias>.sourceunset Provider source kind (env, file, exec). providers.<alias>.path / mode / allowlist / max_bytes / allow_insecure_pathunset Provider-specific knobs.
Multi-agent registry. agents.defaults carries fallback workspace/model;
[[agents.list]] defines named agents with id, name, workspace,
model, and default.
Channel-to-agent routing rules. Each entry: agent_id plus a bindings.match
table (channel, account_id, etc.).
Field Default Purpose enabledfalseEnable scheduled tasks. call_timeout60sPer-cron-call timeout. mirror_interval30sCRON.md mirror flush interval. mirror_path"" (defaults to $GORMES_HOME/cron/CRON.md at runtime)CRON.md mirror destination.
Field Default Purpose root"" (defaults to $GORMES_HOME/skills at runtime)Skills root directory. selection_cap3Maximum skills considered per turn. max_document_bytes65536Per-document byte ceiling. usage_log_path"" (defaults to <skills_root>/usage.jsonl)Append-only skill usage log.
Field Default Purpose enabledfalseEnable subagent delegation. max_depth2Maximum recursion depth. max_concurrent_children3Concurrent child cap. default_max_iterations8Per-child iteration cap. default_timeout45sPer-child timeout. run_log_path"" (defaults to $GORMES_HOME/subagents/runs.jsonl)Run log destination. max_waiting128Maximum waiting children.
In-process Honcho-compatible memory facade.
Field Default Purpose enabledtrueEnable Goncho. workspacegoncho.DefaultWorkspaceIDWorkspace identifier. observer_peergoncho.DefaultObserverPeerIDObserver peer identifier. recent_messagesgoncho.DefaultRecentMessagesRecent-window message count. max_message_sizegoncho.DefaultMaxMessageSizePer-message byte ceiling. max_file_sizegoncho.DefaultMaxFileSizePer-file byte ceiling. get_context_max_tokensgoncho.DefaultGetContextMaxTokensToken budget for get_context. reasoning_enabledtruePersist reasoning blocks. peer_card_enabledtruePersist peer cards. summary_enabledtruePersist summaries. dream_enabledfalseEnable dream/idle consolidation. dream_idle_timeout_minutesgoncho.DefaultDreamIdleTimeout (in minutes)Idle window before dream. deriver_workersgoncho.DefaultDeriverWorkersDeriver worker pool size. representation_batch_max_tokensgoncho.DefaultRepresentationBatchMaxTokensRepresentation batch budget. dialectic_default_level"low"Default dialectic level.
Field Default Purpose pre_update_backupfalseSnapshot before gormes update. backup_keep5Backup retention budget.
allowed_user_ids = [ 123456789 ]
Secrets for the same example live in ~/.gormes/.env:
GORMES_TELEGRAM_TOKEN = 123:abc