https://github.com/caiopizzol/conclave
Multi-model code review command for Claude Code. Run AI reviews locally before pushing.
https://github.com/caiopizzol/conclave
ai claude-code cli code-review codex developer-tools gemini multi-model
Last synced: 3 months ago
JSON representation
Multi-model code review command for Claude Code. Run AI reviews locally before pushing.
- Host: GitHub
- URL: https://github.com/caiopizzol/conclave
- Owner: caiopizzol
- License: mit
- Created: 2026-01-15T13:40:15.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-16T19:45:23.000Z (5 months ago)
- Last Synced: 2026-01-22T15:49:02.629Z (4 months ago)
- Topics: ai, claude-code, cli, code-review, codex, developer-tools, gemini, multi-model
- Language: HTML
- Homepage: https://caiopizzol.github.io/conclave/
- Size: 94.7 KB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://github.com/caiopizzol/conclave/releases)
Multi-model AI collaboration for [Claude Code](https://claude.com/claude-code). Get consensus-driven code reviews and second opinions from multiple AI models in parallel.
## Commands
| Command | Purpose |
|---------|---------|
| `/review` | Multi-model code review on your staged changes |
| `/consult` | Get a second opinion when stuck on a problem |
## How It Works
```
/review /consult "why is this broken?"
│ │
├── Codex ───► reviews diff ├── Codex ───► reads conversation
├── Gemini ──► reviews diff ├── Gemini ──► reads conversation
├── Claude ──► reviews diff ├── Claude ──► reads conversation
└── ... └── ...
│ │
▼ ▼
Consensus: issues flagged Synthesis: consensus suggestions,
by 2+ models highlighted unique perspectives, disagreements
```
**Why multiple models?**
- Different training data → different blind spots
- 2+ models flagging the same issue → stronger signal
- Diverse perspectives surface better solutions
## Inspiration
Inspired by [LLM Council](https://github.com/karpathy/llm-council) — the idea that multiple LLMs reviewing the same problem surfaces stronger signals than any single model.
## Installation
```bash
git clone https://github.com/caiopizzol/conclave ~/dev/conclave
cd ~/dev/conclave
bun run register
```
To unregister:
```bash
bun run unregister
```
## Configuration
### Tools (`~/.config/conclave/tools.json`)
```json
{
"persistence": {
"enabled": true,
"required": false,
"data_dir": "~/.local/share/conclave/reviews"
},
"tools": {
"codex": {
"enabled": true,
"scope": ["review", "consult"],
"command": "codex exec --full-auto -m gpt-5.3-codex -c model_reasoning_effort=\"xhigh\" -",
"model": "gpt-5.3-codex",
"description": "OpenAI Codex CLI"
},
"claude-opus": {
"enabled": true,
"scope": ["consult"],
"command": "claude --print",
"model": "opus",
"description": "Claude Code (Opus)"
},
"gemini": {
"enabled": true,
"scope": ["review", "consult"],
"command": "gemini -o text",
"model": "gemini-3-pro-preview",
"description": "Google Gemini CLI"
}
},
"prompts": {
"review": "~/.config/conclave/prompt.md",
"consult": "~/.config/conclave/consult-prompt.md"
}
}
```
#### Tool Fields
| Field | Required | Description |
|-------|----------|-------------|
| `enabled` | Yes | Whether to use this tool |
| `scope` | No | Array of commands: `["review"]`, `["consult"]`, or `["review", "consult"]`. If omitted, tool is used for all commands |
| `command` | Yes | CLI command to run |
| `model` | No | Model to use (injected via `--model` or `-m` flag) |
| `description` | No | Human-readable description |
You can define multiple entries for the same provider with different models (e.g., `claude-opus` and `claude-sonnet`).
#### Persistence Fields
| Field | Default | Description |
|-------|---------|-------------|
| `enabled` | `true` | Save review results to disk for later analysis |
| `required` | `false` | If `true`, halt on persistence failure instead of continuing |
| `data_dir` | `~/.local/share/conclave/reviews` | Directory for saved review data |
Review results are saved as JSON files containing raw model outputs, timestamps, and investigation results. This enables:
- Tracking review history across PRs
- Analyzing model performance over time
- Recovering from context compaction
**Supported models:**
| Tool | Models | Documentation |
| ------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- |
| Codex | `gpt-5.3-codex`, `gpt-5.2-codex`, `gpt-5.1-codex-mini`, `gpt-5.1-codex-max` | [Codex Models](https://developers.openai.com/codex/models/) |
| Claude | `opus`, `sonnet`, `haiku` (aliases) or full names like `claude-opus-4-5-20251101` | [CLI Reference](https://code.claude.com/docs/en/cli-reference) |
| Gemini | `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-3-pro-preview`, `gemini-3-flash-preview` | [Gemini CLI](https://geminicli.com/docs/cli/model/) |
| Qwen | `coder-model` (default), `vision-model` | [Qwen Code Docs](https://qwenlm.github.io/qwen-code-docs/) |
| Mistral | Config-based (`~/.vibe/config.toml`) | [Mistral Vibe Docs](https://docs.mistral.ai/mistral-vibe/) |
| Grok | `grok-code-fast-1`, `grok-4-1-fast-*`, `grok-4-fast-*`, `grok-3`, `grok-3-mini` | [xAI API Models](https://docs.x.ai/docs/models) |
| Ollama | Cloud: `minimax-m2.5:cloud`, `glm-5:cloud`, `kimi-k2.5:cloud`, or any model from [library](https://ollama.com/library). Local: `qwen2.5-coder:7b` | [Ollama Library](https://ollama.com/library) |
> **Note:** Ollama models use `ollama run` directly. Cloud models (`:cloud` suffix) require an Ollama account — sign up at [ollama.com](https://ollama.com). Local models (e.g., `qwen2.5-coder:7b`) run on your machine and require ~8GB+ RAM for 7B models.
> **Note:** Mistral and Grok use command-line argument passing (not stdin), which has a ~200KB limit on macOS. Very large diffs may cause these tools to fail while other tools succeed.
> **Note:** Grok uses the community CLI ([`@vibe-kit/grok-cli`](https://github.com/superagent-ai/grok-cli)) until xAI releases the official "Grok Build" CLI.
### Prompts
Customize prompts for each command:
| File | Template Variables |
|------|-------------------|
| `~/.config/conclave/prompt.md` | `{{branch}}`, `{{target_branch}}`, `{{diff}}` |
| `~/.config/conclave/consult-prompt.md` | `{{history_file}}`, `{{question}}`, `{{cwd}}` |
### Authentication
| Tool | Install |
| ------- | ----------------------------------------------------------------------------- |
| Codex | `npm install -g @openai/codex` |
| Claude | Built-in |
| Gemini | `npm install -g @google/gemini-cli` |
| Qwen | `npm install -g @qwen-code/qwen-code` |
| Mistral | `pipx install mistral-vibe` |
| Grok | `bun add -g @vibe-kit/grok-cli`; `export GROK_API_KEY="key"` in `~/.zshrc` |
| Ollama | [ollama.com/download](https://ollama.com/download); cloud: `ollama login`; local: `ollama pull ` |
## Usage
### Code Review
```bash
# Review staged changes
git add -p
/review
```
### Second Opinion
```bash
# When stuck on a problem
/consult "why is the table rendering broken after paste?"
# When going in circles
/consult "I've tried X, Y, Z but none work"
# Validate an approach
/consult "is this the right way to handle state here?"
```
`/consult` passes your Claude Code conversation history to external models, so they can see what's already been tried and avoid suggesting the same things.
## Philosophy
More models ≠ better. The value is **consensus**:
- 1 model flags issue → might be noise
- 2+ models flag same issue → likely real
- Different perspectives → surface blind spots
Conclave surfaces what matters.
## Workflow
`/review` follows a state machine pattern with checkpoints to ensure reliability:
```
[INIT] → [GATHERING] → [SPAWNING] → [TOOLS_COMPLETE]
│
⛔ CHECKPOINT
│
[PERSISTED] → [SYNTHESIZING] → [INVESTIGATING] → [COMPLETE]
```
The ⛔ checkpoint ensures review data is persisted before synthesis. If `persistence.required` is `true`, the workflow halts on persistence failure.
## License
MIT