Configuration reference
gdm configuration uses a 7-layer precedence system (highest wins):
CLI flags
> Environment variables (GDM_* prefix)
> Team policy (.gdm/team.toml [policy])
> Team preferences (.gdm/team.toml [preferences])
> Project config (.gdm/config.toml)
> User config (~/.config/gdm/config.toml)
> Built-in defaults
Secrets (API keys, tokens) must be stored in the OS keychain via gdm login. They must
not appear in any TOML file.
config.toml reference
Place this file at ~/.config/gdm/config.toml (user-wide) or .gdm/config.toml (project).
[models]
| Key |
Type |
Default |
Env var |
Description |
models.primary |
string |
"grok-4-0106" |
GDM_MODELS_PRIMARY |
Primary model for all tasks |
models.fallback |
string |
"o3-mini" |
GDM_MODELS_FALLBACK |
Fallback model when primary is unavailable |
models.grok.scout |
string |
(built-in) |
GDM_MODEL_GROK_SCOUT |
Override Grok scout-tier model ID |
models.grok.coder |
string |
(built-in) |
GDM_MODEL_GROK_CODER |
Override Grok coder-tier model ID |
models.grok.thinker |
string |
(built-in) |
GDM_MODEL_GROK_THINKER |
Override Grok thinker-tier model ID |
models.grok.reasoner |
string |
(built-in) |
GDM_MODEL_GROK_REASONER |
Override Grok reasoner-tier model ID |
models.grok.debate |
string |
(built-in) |
GDM_MODEL_GROK_DEBATE |
Override Grok debate-tier model ID |
models.gemini.* |
string |
(built-in) |
GDM_MODEL_GEMINI_* |
Same tiers for Gemini |
models.codex.* |
string |
(built-in) |
GDM_MODEL_CODEX_* |
Same tiers for Codex |
[budget]
| Key |
Type |
Default |
Env var |
Description |
budget.session_limit_usd |
float (>=0) |
10.0 |
GDM_BUDGET_SESSION_LIMIT_USD |
Max cost per session in USD; 0 = unlimited |
budget.monthly_limit_usd |
float (>=0) |
200.0 |
GDM_BUDGET_MONTHLY_LIMIT_USD |
Monthly cap across all sessions in USD |
[autonomy]
| Key |
Type |
Default |
Env var |
Description |
autonomy.level |
int (0-5) |
2 |
GDM_AUTONOMY_LEVEL |
0 = ask everything, 3 = balanced, 5 = fully autonomous |
[audit]
| Key |
Type |
Default |
Env var |
Description |
audit.retain_days |
int (>=1) |
90 |
GDM_AUDIT_RETAIN_DAYS |
Delete audit entries older than N days |
[analytics]
| Key |
Type |
Default |
Env var |
Description |
analytics.consent_required |
bool |
false |
GDM_ANALYTICS_CONSENT_REQUIRED |
Require per-user opt-in before collecting analytics |
analytics.roi_estimation |
bool |
false |
GDM_ANALYTICS_ROI_ESTIMATION |
Enable estimated time-saved reporting |
analytics.anonymise |
bool |
true |
GDM_ANALYTICS_ANONYMISE |
Hash actor IDs before storing (recommended) |
[agent]
| Key |
Type |
Default |
Env var |
Description |
agent.max_turns |
int |
150 |
GDM_MAX_TURNS |
Maximum consecutive no-progress agent rounds before stopping |
agent.cost_limit_usd |
float |
10.0 |
GDM_COST_LIMIT |
Session cost cap (alias for budget.session_limit_usd) |
agent.quiet |
bool |
false |
GDM_QUIET |
Suppress non-essential startup output |
| Key |
Type |
Default |
Env var |
Description |
tools.timeout_secs |
int |
30 |
GDM_TOOLS_TIMEOUT |
Per-tool execution timeout in seconds |
[debug]
| Key |
Type |
Default |
Env var |
Description |
debug.auto_search_iteration |
int |
3 |
GDM_DEBUG_AUTO_SEARCH_ITERATION |
Run web search after this many failed debug iterations; 0 = disabled |
[context]
| Key |
Type |
Default |
Description |
context.whole_codebase |
string |
"auto" |
Load all source files into context: "auto", "always", "never" |
[artifacts]
| Key |
Type |
Default |
Description |
artifacts.auto_detect |
bool |
false |
Automatically detect and surface build artifacts |
[debate]
| Key |
Type |
Default |
Description |
debate.model |
string |
"" |
Override model used for debate/consensus tier; empty = use tier default |
[spinner]
| Key |
Type |
Default |
Description |
spinner.extra_verbs |
list[string] |
[] |
Additional verbs to display in the spinner animation |
[fallback]
| Key |
Type |
Default |
Env var |
Description |
fallback.provider |
string |
null |
GDM_FALLBACK_PROVIDER |
Provider to use when primary fails: grok, gemini, codex |
fallback.model_id_map |
table |
{} |
— |
Map provider.tier to model ID for fallback routing |
[providers.ollama]
| Key |
Type |
Default |
Description |
providers.ollama.enabled |
bool |
false |
Enable Ollama local model provider |
providers.ollama.base_url |
string |
"http://localhost:11434" |
Ollama server URL |
providers.ollama.model |
string |
"" |
Model name to use (e.g. "llama3") |
providers.ollama.local_only |
bool |
true |
Block cloud fallback when using Ollama |
providers.ollama.allow_cloud_fallback |
bool |
false |
Allow falling back to a cloud provider on error |
providers.ollama.allow_external |
bool |
false |
Allow the agent to make external network calls |
[providers.vllm]
| Key |
Type |
Default |
Description |
providers.vllm.enabled |
bool |
false |
Enable vLLM local model provider |
providers.vllm.base_url |
string |
"http://localhost:8000" |
vLLM server URL |
providers.vllm.model |
string |
"" |
Model name to use |
team.toml reference
Place at .gdm/team.toml. Shared via version control. Do not put secrets here.
[preferences] — team defaults (can be overridden by individuals)
Uses the same keys as config.toml (e.g. autonomy.level, models.primary).
[policy] — enforced for all team members (cannot be overridden)
| Key |
Type |
Default |
Description |
policy.policy_enforced |
bool |
false |
Enable policy enforcement |
policy.max_autonomy_level |
int (0-5) |
5 |
Cap autonomy level for all users |
policy.allow_git_push |
bool |
true |
Allow git push operations |
policy.allow_network |
bool |
true |
Allow external network tool calls |
policy.network_allowlist |
list[string] |
[] |
Allowed hostnames/CIDRs for network tools (empty = allow all) |
policy.require_audit_log |
bool |
false |
Refuse to run if audit log is not writable |
Environment variables (quick reference)
| Variable |
Description |
XAI_API_KEY |
xAI Grok API key |
GEMINI_API_KEY |
Google Gemini API key |
OPENAI_API_KEY |
OpenAI Codex API key |
GDM_PROVIDER |
Force provider: grok, gemini, codex |
GDM_QUIET |
Set to 1 / true / yes to suppress startup output |
GDM_HTTPS_PROXY |
HTTPS proxy for all outbound API calls |
All GDM_* listed above |
See individual sections |