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:

SettingForced value
security.fallback_on_gate_failurefalse
security.plugin_evaltrue
security.mcp_scantrue
security.sandboxtrue
Model provider fallbackdisabled
Budget enforcementenabled, 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

VariableRequiredDescription
ANTHROPIC_API_KEYYes (if using Antigravity)Anthropic API key
ZAI_API_KEYYes (if using GLM)z.ai API key
GOOGLE_API_KEYNoGoogle AI API key for vision fallback
LANGFUSE_PUBLIC_KEYNoLangfuse tracing (control plane only)
LANGFUSE_SECRET_KEYNoLangfuse tracing (control plane only)
OMP_CONFIG_PATHNoOverride 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