Skip to content

Configuration

Zenus reads configuration from ~/.zenus/config.yaml. Every key can also be set via environment variable — the rule is config.yaml wins, env var is the fallback.

Run zenus config --path to see the active config file location.


Minimal config

version: "1.1.0"

llm:
  provider: anthropic
  model: claude-sonnet-4-6
  api_key: ""          # or ANTHROPIC_API_KEY env var

LLM

llm:
  provider: anthropic       # anthropic | openai | deepseek | ollama
  model: claude-sonnet-4-6
  api_key: ""               # ANTHROPIC_API_KEY / OPENAI_API_KEY / DEEPSEEK_API_KEY
  temperature: 0.3
  max_tokens: 4096
  timeout: 30
  ollama_base_url: "http://localhost:11434"  # only for provider: ollama

Execution

execution:
  max_retries: 3
  confirmation_required: true   # prompt before risk≥2 operations
  dry_run: false                 # global dry-run toggle
  sandbox_enabled: true
  max_parallel_workers: 4
  task_queue_max_size: 100

Memory & caching

memory:
  session_enabled: true
  world_model_enabled: true
  intent_history_enabled: true
  max_session_turns: 50

cache:
  intent_cache_enabled: true
  intent_cache_ttl: 3600        # seconds
  intent_cache_max_size: 1000

search:
  brave_api_key: ""             # BRAVE_SEARCH_API_KEY — free tier: 2,000 req/month

Get a free key at brave.com/search/api. Without it, Zenus falls back to the 7-source parallel chain (Wikipedia, HN, GitHub, Reddit, arXiv, RSS).


MCP

mcp:
  server:
    enabled: false
    transport: stdio            # stdio | sse
    host: "127.0.0.1"           # only for transport: sse
    port: 8765                  # only for transport: sse
    allow_privileged: false     # expose ShellOps and CodeExec

  client:
    enabled: false
    servers:
      - name: filesystem
        transport: stdio
        command: "uvx mcp-server-filesystem /home/user/projects"
      - name: remote
        transport: sse
        url: "http://localhost:9000/sse"

Start the server: zenus mcp-server (or zenus mcp-server --transport sse).


Debug flags

All flags default to false. Enable only what you need — each one scopes to a subsystem.

debug:
  enabled: false          # master switch — enables all flags at once
  orchestrator: false     # routing decisions, cache hits, provider overrides
  brain: false            # prompt evolution, model internals
  execution: false        # per-step results, parallel-fallback notices
  search: false           # query category, source breakdown, raw snippets
  voice: false            # TTS/STT init, pipeline state transitions

Environment variable equivalents:

ZENUS_DEBUG=1                  # enable all
ZENUS_DEBUG_ORCHESTRATOR=1     # orchestrator only
ZENUS_DEBUG_SEARCH=1           # search only
# etc.

Secrets (HashiCorp Vault)

secrets:
  vault_enabled: false
  vault_addr: "http://127.0.0.1:8200"
  vault_token: ""               # VAULT_TOKEN env var
  vault_mount: "secret"
  vault_path: "zenus"

When enabled, Vault values override environment variables.


Rollback

rollback:
  max_history: 100
  auto_backup: true