Configuration Reference
Focusgroup uses TOML configuration files for full session control. This document describes all available options.
Complete Example
[session]
name = "my-review"
mode = "structured" # single | discussion | structured
moderator = true # Enable synthesis at the end
parallel_agents = true # Query agents concurrently
exploration = false # Let agents run the tool
[session.moderator_agent] # Optional: customize the moderator
provider = "claude"
[tool]
type = "cli" # cli | docs
command = "mytool" # Command name or path
help_args = ["--help"] # Args to get help output
working_dir = "/path/to/dir" # Optional working directory
[[agents]]
provider = "claude"
name = "Claude-Sonnet"
system_prompt = "You are a DevOps engineer..."
exploration = false # Per-agent exploration override
[[agents]]
provider = "codex"
name = "Codex"
[questions]
rounds = [
"What's your first impression of this tool?",
"What improvements would you suggest?",
]
[output]
format = "markdown" # json | markdown | text
directory = "./output" # Where to save files
save_log = true # Persist session log
Section Reference
[session]
Controls overall session behavior.
| Field | Type | Default | Description |
|---|---|---|---|
name |
string | auto-generated | Session identifier |
mode |
string | "single" |
Session mode: single, discussion, or structured (see modes) |
moderator |
bool | false |
Enable a moderator agent to synthesize feedback |
parallel_agents |
bool | true |
Query agents concurrently vs sequentially |
exploration |
bool | false |
Allow agents to run tool commands (see exploration) |
agent_timeout |
integer | none | Timeout in seconds for all agents (overrides defaults) |
[session.moderator_agent]
Optional custom configuration for the moderator. If omitted, uses Claude CLI with default synthesis prompt.
| Field | Type | Default | Description |
|---|---|---|---|
provider |
string | "claude" |
claude or codex |
[tool]
Specifies the tool being evaluated.
| Field | Type | Default | Description |
|---|---|---|---|
type |
string | "cli" |
Tool type: cli or docs |
command |
string | required | CLI command name or path to docs |
help_args |
array | ["--help"] |
Arguments to get help output |
working_dir |
string | current dir | Working directory for tool execution |
path_additions |
array | [] |
Additional directories to add to PATH for agents |
[[agents]]
Define one or more agents. At least one agent is required.
| Field | Type | Default | Description |
|---|---|---|---|
provider |
string | required | claude, codex, or custom provider name (see providers) |
name |
string | auto-generated | Display name for this agent |
system_prompt |
string | none | Custom system prompt for this agent |
exploration |
bool | false |
Enable tool exploration for this agent |
timeout |
integer | none | Agent timeout in seconds (overrides session default) |
[questions]
Define the questions/prompts for the session.
| Field | Type | Default | Description |
|---|---|---|---|
rounds |
array | required | List of questions (at least one) |
In single mode, only the first question is used. In discussion and structured modes, agents see all questions in sequence.
[output]
Configure session output.
| Field | Type | Default | Description |
|---|---|---|---|
format |
string | "text" |
Output format: json, markdown, or text |
directory |
string | none | Directory to save output files |
save_log |
bool | true |
Whether to save session log for later review |
Minimal Config
The smallest valid config:
[tool]
command = "git"
[[agents]]
provider = "claude"
[questions]
rounds = ["What do you think of this tool?"]
Built-in Providers
| Provider | Description | Notes |
|---|---|---|
claude |
Anthropic Claude via claude CLI |
Requires claude CLI installed and authenticated |
codex |
OpenAI Codex via codex CLI |
Requires codex CLI installed |
Custom Providers
You can define custom providers in ~/.config/focusgroup/providers.toml:
[myagent]
name = "My Custom Agent"
command = "my-agent-cli"
prompt_arg = "--prompt" # How to pass the prompt
context_arg = "--context" # How to pass context (optional)
model_arg = "--model" # How to specify model (optional)
description = "My custom CLI agent"
Then use in configs:
[[agents]]
provider = "myagent"
name = "Custom Agent"
Model Defaults
When model is not specified:
- claude: Uses claude CLI's default model
- codex: Uses codex CLI's default model
- Custom providers: Use their CLI defaults