Configuration Schema

This document provides a complete reference for all configuration options.

Configuration Files

FileLocationScope
Global~/.config/codeloops/config.tomlAll projects
Project<working-dir>/codeloops.tomlSingle project

Precedence

Settings are resolved in order (highest priority first):

  1. CLI flags
  2. Project configuration
  3. Global configuration
  4. Built-in defaults

Global Configuration

File: ~/.config/codeloops/config.toml

Complete Schema

# Default settings applied to all sessions
[defaults]
# Default agent for both actor and critic roles
# Values: "claude", "opencode", "cursor"
# Default: "claude"
agent = "claude"

# Default model for both roles (optional)
# Value depends on agent (e.g., "sonnet", "opus", "gpt-4o")
# Default: none (uses agent default)
model = "sonnet"

# Actor-specific overrides (optional section)
[defaults.actor]
# Agent for actor role (overrides defaults.agent for actor)
agent = "opencode"

# Model for actor role (overrides defaults.model for actor)
model = "gpt-4o"

# Critic-specific overrides (optional section)
[defaults.critic]
# Agent for critic role (overrides defaults.agent for critic)
agent = "claude"

# Model for critic role (overrides defaults.model for critic)
model = "opus"

Section Reference

[defaults]

Base defaults for all sessions.

KeyTypeDefaultDescription
agentstring"claude"Default agent for both roles
modelstringnoneDefault model for both roles

[defaults.actor]

Override defaults for the actor role.

KeyTypeDefaultDescription
agentstringinheritAgent for actor
modelstringinheritModel for actor

[defaults.critic]

Override defaults for the critic role.

KeyTypeDefaultDescription
agentstringinheritAgent for critic
modelstringinheritModel for critic

Example Configurations

Minimal (use defaults):

[defaults]
agent = "claude"

With model:

[defaults]
agent = "claude"
model = "sonnet"

Different agents per role:

[defaults]
agent = "claude"

[defaults.actor]
agent = "opencode"
model = "gpt-4o"

[defaults.critic]
model = "opus"

Project Configuration

File: <working-dir>/codeloops.toml

Complete Schema

# Default agent for this project
# Values: "claude", "opencode", "cursor"
agent = "claude"

# Default model for this project (optional)
model = "sonnet"

# Actor-specific settings (optional section)
[actor]
agent = "opencode"
model = "gpt-4o"

# Critic-specific settings (optional section)
[critic]
agent = "claude"
model = "opus"

Field Reference

Root Level

KeyTypeDefaultDescription
agentstringinheritDefault agent for this project
modelstringinheritDefault model for this project

[actor]

KeyTypeDefaultDescription
agentstringinheritAgent for actor
modelstringinheritModel for actor

[critic]

KeyTypeDefaultDescription
agentstringinheritAgent for critic
modelstringinheritModel for critic

Example Configurations

Simple project config:

agent = "claude"

Mixed agents:

[actor]
agent = "opencode"
model = "gpt-4o-mini"

[critic]
agent = "claude"
model = "sonnet"

Valid Values

Agent Values

ValueAgent
"claude"Claude Code
"opencode"OpenCode
"cursor"Cursor

Model Values

Model values depend on the agent:

Claude Code:

  • "sonnet" - Claude Sonnet
  • "opus" - Claude Opus
  • "haiku" - Claude Haiku

OpenCode:

  • "gpt-4o" - GPT-4o
  • "gpt-4o-mini" - GPT-4o Mini
  • Other OpenAI models

Cursor:

  • Uses Cursor's configured model

Resolution Examples

Example 1: No config files

Running codeloops with no config:

SettingValueSource
Actor agentclaudedefault
Critic agentclaudedefault
Actor model(none)default
Critic model(none)default

Example 2: Global config only

~/.config/codeloops/config.toml:

[defaults]
agent = "opencode"
model = "gpt-4o"

Running codeloops:

SettingValueSource
Actor agentopencodeglobal
Critic agentopencodeglobal
Actor modelgpt-4oglobal
Critic modelgpt-4oglobal

Example 3: Global + Project config

~/.config/codeloops/config.toml:

[defaults]
agent = "opencode"

codeloops.toml:

agent = "claude"

Running codeloops:

SettingValueSource
Actor agentclaudeproject
Critic agentclaudeproject

Example 4: CLI overrides all

~/.config/codeloops/config.toml:

[defaults]
agent = "opencode"

codeloops.toml:

agent = "claude"

Running codeloops --agent cursor:

SettingValueSource
Actor agentcursorCLI
Critic agentcursorCLI

Example 5: Per-role settings

~/.config/codeloops/config.toml:

[defaults]
agent = "claude"
model = "sonnet"

[defaults.actor]
agent = "opencode"
model = "gpt-4o"

Running codeloops:

SettingValueSource
Actor agentopencodeglobal.actor
Critic agentclaudeglobal.defaults
Actor modelgpt-4oglobal.actor
Critic modelsonnetglobal.defaults

Environment Variables

VariableDescription
CODELOOPS_UI_DIROverride UI assets directory
NO_COLORDisable colored output when set

Creating Configuration

Using init

codeloops init

Interactive prompts create ~/.config/codeloops/config.toml.

Manual creation

mkdir -p ~/.config/codeloops
cat > ~/.config/codeloops/config.toml << 'EOF'
[defaults]
agent = "claude"
EOF

Validating Configuration

Use --dry-run to see resolved configuration:

codeloops --dry-run

Output shows the effective settings without executing.