Configuration
godotz.ai’s runtime behavior is controlled by two files: config.yml (runtime settings, gateway, approval policy) and models.yml (model family definitions and routing rules). This page covers both in full.
config.yml Structure
A fully annotated config.yml:
# config.yml
# --- Gateway ---
# Controls how OMP reaches model providers.
# 'direct' makes API calls directly using provider keys.
# 'litellm' routes through the local LiteLLM proxy (requires control plane).
gateway:
provider: direct # direct | litellm
base_url: http://localhost:4000 # only used when provider: litellm
anthropic_api_key: ${ANTHROPIC_API_KEY}
zai_api_key: ${ZAI_API_KEY}
google_api_key: ${GOOGLE_API_KEY}
# --- Defaults ---
# Fallback model assignments used when swarm.yaml doesn't specify a model.
defaults:
orchestrator_model: anthropic/claude-sonnet-4-6
worker_model: z.ai/glm-5.1
critic_model: z.ai/glm-4.7
vision_fallback: google/gemini-3.1-pro-low # used for image inputs automatically
# --- Approval Mode ---
# Controls how much human intervention OMP requires before acting.
# See the Approval Modes section below.
approval_mode: auto # auto | manual | hardcore
# --- Budget ---
# Per-run spending limits. Requests that would exceed the limit are
# rejected before reaching the model API (fail-closed).
budget:
per_run_usd: 0.50 # hard cap per swarm run
per_day_usd: 10.00 # rolling 24-hour cap across all runs
warn_at_pct: 80 # emit warning at 80% of limit
# --- Concurrency ---
# Maximum simultaneous API requests across all agents in a run.
concurrency:
max_parallel_agents: 8
per_model_limits:
z.ai/glm-5.1: 10
z.ai/glm-4.7: 2
z.ai/glm-4.5-air: 5
z.ai/glm-5-turbo: 1
# --- Security ---
# Plugin and MCP server security gates. See security docs for details.
security:
plugin_eval: true # Layer 1: static analysis + signature check
mcp_scan: true # Layer 2: CVE database check
sandbox: true # Layer 3: isolated execution environment
fallback_on_gate_failure: false # fail-closed: deny on any gate failure
# --- Memory ---
# Mnemopi session and long-term memory configuration.
memory:
session_ttl: 7d # how long session memories persist
max_entries: 500 # maximum memories per session
relevance_threshold: 0.4 # minimum score for memory retrieval
# --- Observability ---
# Langfuse tracing (requires control plane).
observability:
langfuse_enabled: false # set true when control plane is running
langfuse_url: http://localhost:3000
langfuse_public_key: ${LANGFUSE_PUBLIC_KEY}
langfuse_secret_key: ${LANGFUSE_SECRET_KEY}
# --- Preset ---
# Apply a named preset that overrides individual fields above.
# Overrides happen after file parsing, so preset wins.
# preset: normal # normal | hardcore (commented = no preset)
Approval Modes
Approval mode controls how much godotz.ai requires human confirmation before agents act.
auto (default)
Agents execute tool calls, file writes, and shell commands without confirmation. Suitable for development and trusted automation pipelines.
approval_mode: auto
manual
godotz.ai pauses before each tool call and prints the proposed action. You type y to approve or n to skip. Useful when running unfamiliar swarms or working in production environments.
approval_mode: manual
Example pause prompt:
[omp] Agent 'actor' wants to execute:
Tool: bash
Command: npm run build
Approve? [y/N]:
hardcore
Maximum restriction. godotz.ai blocks all tool calls that are not on the explicit allowlist. Any attempt to call an unlisted tool, write outside the declared output directory, or exceed per-agent token limits terminates the run immediately with a non-zero exit code.
approval_mode: hardcore
Hardcore mode also forces these settings regardless of what the rest of config.yml says:
| Setting | Forced value |
|---|---|
security.fallback_on_gate_failure | false |
security.plugin_eval | true |
security.mcp_scan | true |
security.sandbox | true |
| Model provider fallback | disabled |
| Budget enforcement | enabled, no override |
Use hardcore mode for swarms that touch production systems, handle secrets, or run unattended overnight.
Presets
Presets are named configuration bundles. Specify a preset at the bottom of config.yml; it merges on top of your file settings.
normal preset
Balanced defaults for everyday development:
preset: normal
Equivalent to:
approval_mode: auto
security:
plugin_eval: true
mcp_scan: true
sandbox: false # sandbox off for speed in dev
fallback_on_gate_failure: false
budget:
per_run_usd: 1.00
per_day_usd: 20.00
hardcore preset
Zero-tolerance security and auditability:
preset: hardcore
Equivalent to:
approval_mode: hardcore
security:
plugin_eval: true
mcp_scan: true
sandbox: true
fallback_on_gate_failure: false
budget:
per_run_usd: 0.25
per_day_usd: 5.00
observability:
langfuse_enabled: true # tracing required in hardcore
models.yml Structure
models.yml defines model family memberships and per-model routing rules. godotz.ai reads this at startup and rejects swarms that reference unlisted models.
# models.yml
families:
antigravity:
description: "Anthropic family — high capability, high cost"
models:
- id: anthropic/claude-opus-4-6
context_window: 200000
cost_per_1m_input: 15.00
cost_per_1m_output: 75.00
roles: [orchestrator, critic, arbiter]
- id: anthropic/claude-sonnet-4-6
context_window: 200000
cost_per_1m_input: 3.00
cost_per_1m_output: 15.00
roles: [orchestrator, actor, critic]
glm:
description: "z.ai GLM family — high throughput, lower cost"
models:
- id: z.ai/glm-5.1
context_window: 128000
cost_per_1m_input: 0.14
cost_per_1m_output: 0.14
concurrency: 10
roles: [actor, worker]
- id: z.ai/glm-4.7
context_window: 128000
cost_per_1m_input: 0.28
cost_per_1m_output: 0.28
concurrency: 2
roles: [critic, worker]
- id: z.ai/glm-4.5-air
context_window: 8000
cost_per_1m_input: 0.07
cost_per_1m_output: 0.07
concurrency: 5
roles: [worker]
- id: z.ai/glm-5-turbo
context_window: 32000
cost_per_1m_input: 0.10
cost_per_1m_output: 0.10
concurrency: 1
roles: [worker, fast-draft]
vision:
description: "Vision-capable models for image inputs"
models:
- id: google/gemini-3.1-pro-low
context_window: 1000000
roles: [vision-fallback]
# --- Echo Chamber Guard ---
# Prevents assigning critic and actor roles to models from the same family.
# Set to false only if you understand and accept the risk.
echo_chamber_guard: true
# --- Role Routing Rules ---
# When a swarm specifies a role without a model, OMP selects the cheapest
# model from the approved families for that role.
routing:
prefer_cheapest: true
require_heterogeneous_critic: true # critic must differ from actor's family
Environment Variables Reference
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY | Yes (if using Antigravity) | Anthropic API key |
ZAI_API_KEY | Yes (if using GLM) | z.ai API key |
GOOGLE_API_KEY | No | Google AI API key for vision fallback |
LANGFUSE_PUBLIC_KEY | No | Langfuse tracing (control plane only) |
LANGFUSE_SECRET_KEY | No | Langfuse tracing (control plane only) |
OMP_CONFIG_PATH | No | Override default config path (~/.config/omp/config.yml) |
Next Steps
- First Swarm — Use these settings to write and run a production-quality swarm
- Quick Start — See configuration in action with a working 3-agent example
- Architecture — Understand how config maps to the L0–L6 layers