Quorum searches for configuration in this order:
- Project-local:
./quorum.yaml(or legacy./counsel.yaml) - Global:
~/.quorum/config.yaml
# ~/.quorum/config.yaml
providers:
- name: claude
provider: anthropic
model: claude-sonnet-4-20250514
auth:
method: env
envVar: ANTHROPIC_API_KEY
timeout: 120 # seconds (optional)
- name: ollama
provider: ollama
model: llama3
auth:
method: none
baseUrl: http://localhost:11434 # optional
defaultProfile: default
profiles: {}| Field | Type | Required | Description |
|---|---|---|---|
name |
string | β | Unique identifier for this provider |
provider |
string | β | Provider type: openai, anthropic, codex, ollama, google, gemini-cli, mistral, deepseek, kimi, custom |
model |
string | β | Model identifier |
auth |
object | β | Authentication config (see below) |
baseUrl |
string | β | Custom API base URL |
timeout |
number | β | Per-provider timeout in seconds (default: 120) |
# Environment variable (recommended)
auth:
method: env
envVar: OPENAI_API_KEY
# Direct API key (not recommended β use env instead)
auth:
method: api_key
apiKey: sk-...
# OAuth (Claude Code, etc.)
auth:
method: oauth
profileName: claude-code
# macOS Keychain
auth:
method: oauth_keychain
service: com.anthropic.claude-code
# No auth (local models)
auth:
method: noneProfiles live in ~/.quorum/agents/<name>.yaml or inline in config.yaml.
name: my-profile
rounds: 1
focus: [security, performance]
challengeStyle: adversarial # adversarial | collaborative | socratic
isolation: true
blindReview: false
# Phase customization
phases: [gather, debate, adjust, vote, synthesize] # custom pipeline
# Provider roles
roles:
claude: "Security expert focused on OWASP Top 10"
openai: "Performance engineer"
# Voting
votingMethod: borda # borda | ranked-choice | approval | condorcet
weights:
claude: 1.5
openai: 1.0
# Evidence
evidence: strict # off | advisory | strict
# Adaptive debate
adaptive: balanced # fast | balanced | critical | off
# Topology
topology: mesh # mesh | star | tournament | map_reduce | adversarial_tree | pipeline | panel
topologyConfig:
hub: claude # for star topology
moderator: openai # for panel topology
# Tools
tools: true
allowShellTool: false
# Red team
redTeam: true
attackPacks: [security, code]
# Human-in-the-loop
hitl: true
hitlPhases: [debate, vote]
# Hooks
hooks:
pre-gather: "./scripts/fetch-context.sh"
post-synthesis: "./scripts/notify-slack.sh"
# Scoring weights
scoringWeights:
accuracy: 0.3
reasoning: 0.25
completeness: 0.2
novelty: 0.15
consensus: 0.1
# Custom phase prompts
prompts:
gather:
system: "You are an expert analyst..."
debate:
system: "Challenge every assumption..."| Field | Type | Default | Description |
|---|---|---|---|
name |
string | β | Profile name |
rounds |
number | 1 | Number of deliberation rounds |
focus |
string[] | [] | Topics to focus on |
challengeStyle |
string | adversarial |
How providers critique: adversarial, collaborative, socratic |
isolation |
boolean | true | Whether providers see each other in gather phase |
blindReview |
boolean | false | Hide provider names during review |
phases |
string[] | all 7 | Custom phase pipeline |
roles |
object | β | Per-provider role descriptions |
votingMethod |
string | borda |
Voting algorithm |
weights |
object | β | Per-provider vote weights |
evidence |
string | off |
Evidence mode: off, advisory, strict |
adaptive |
string | off |
Adaptive preset: fast, balanced, critical, off |
topology |
string | mesh |
Debate topology |
tools |
boolean | false | Enable tool use in gather |
allowShellTool |
boolean | false | Enable shell tool |
redTeam |
boolean | false | Enable red team analysis |
attackPacks |
string[] | β | Red team attack pack names |
devilsAdvocate |
boolean | false | Force one provider contrarian |
decisionMatrix |
boolean | false | Structured decision scoring |
hitl |
boolean | false | Enable HITL checkpoints |
hooks |
object | β | Shell commands per phase |
convergenceThreshold |
number | β | Score threshold for early consensus |
excludeFromDeliberation |
string[] | β | Provider names to skip |
prompts |
object | β | Custom system prompts per phase |
scoringWeights |
object | β | Scoring dimension weights |
| Profile | Description |
|---|---|
default |
Balanced deliberation |
brainstorm |
Creative, collaborative style |
code-review |
Focused on code quality |
research |
Deep analysis with evidence |
decision |
Structured decision matrix |
panel |
Panel-style with moderator |
quick |
Fast, fewer phases |
thorough |
Maximum depth |
evidence |
Evidence-strict mode |
research-tools |
Research with web search enabled |
Policies live in ~/.quorum/policies/ or .quorum/policies/.
name: production
rules:
- condition: confidence < 0.7
action: block
message: "Confidence too low for production decisions"
- condition: evidence_grade < C
action: warn
message: "Evidence quality below threshold"
- condition: providers_count < 3
action: pause
message: "Consider adding more providers"Actions: block, warn, log, pause. Rules evaluate pre- and post-deliberation.
Create .quorumrc in your project root. Quorum walks from cwd to homedir looking for it.
| Variable | Description |
|---|---|
QUORUM_CONFIG |
Override config file path |
QUORUM_HOME |
Override config directory (default: ~/.quorum) |
| Provider API keys | See providers.md |