# LLM Council

Provider-agnostic multi-LLM deliberation.

- Repository: https://github.com/rohitg00/pro-workflow (2940 stars)
- Category: AI and agents
- License: see repository
- Last updated: 2026-09-29
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add rohitg00/pro-workflow --skill llm-council -g -a claude-code -y`
Codex: `npx skills add rohitg00/pro-workflow --skill llm-council -g -a codex -y`
Cursor: `npx skills add rohitg00/pro-workflow --skill llm-council -g -a cursor -y`
Gemini CLI: `npx skills add rohitg00/pro-workflow --skill llm-council -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add rohitg00/pro-workflow`

## Description

Provider-agnostic multi-LLM deliberation. Three phases, independent responses, cross-model anonymized ranking, chairman synthesis. Credentials come from explicit plugin configuration or pro-workflow-specific CLI variables. Persists transcript to a wiki page when --wiki <slug> is passed. Use when the user wants multiple AI perspectives, consensus-building, or the "LLM Council" approach for high-stakes reviews, plan critique, or contested learning rules.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# LLM Council

Karpathy's LLM Council pattern with Anthropic and OpenAI-compatible providers.

## When to use

- High-stakes plan review (`/plan` crosses N-file threshold)
- Conflicting learning-rules → re-resolve via vote
- User invokes `/council "<query>"` or `/wiki council`
- Architecture decisions where you want multiple viewpoints captured
- Persisting deliberation as a wiki page for future reference

## Three phases

1. **Independent**: each model answers in parallel
2. **Ranking**: each model ranks anonymized peer responses
3. **Synthesis**: chairman model reads all responses + rankings → final answer

## Provider config

Configure optional keys in the plugin configuration dialog. Use the `providers` MCP server's `run_provider_task` tool with `task: "council"` and `args: ["run", "<query>", "--provider", "openai"]`. For provider status, pass `args: ["providers"]`. Never request keys in chat or read them from existing credentials or shell configuration.

For standalone CLI use, explicitly set a pro-workflow-specific variable below. The first configured provider is the default; `--provider` selects one explicitly. See [provider configuration](../../references/provider-configuration.md).

| Standalone CLI variable | Provider | Default base URL |
|---------|----------|------------------|
| `PRO_WORKFLOW_ANTHROPIC_API_KEY` | Anthropic | `https://api.anthropic.com` |
| `PRO_WORKFLOW_OPENAI_API_KEY` | OpenAI | `https://api.openai.com/v1` |
| `PRO_WORKFLOW_OPENROUTER_API_KEY` | OpenRouter | `https://openrouter.ai/api/v1` |
| `PRO_WORKFLOW_FIREWORKS_API_KEY` | Fireworks | `https://api.fireworks.ai/inference/v1` |
| `LLM_COUNCIL_BASE_URL` + `PRO_WORKFLOW_LLM_COUNCIL_API_KEY` | Custom OpenAI-compat | (user-supplied) |

Override per-run with `--provider openai|anthropic|openrouter|fireworks|custom`.

Default model rosters per provider live in `scripts/council.js` and can be overridden via `--models` CSV and `--chairman <id>`.

## Commands

The rest: https://github.com/rohitg00/pro-workflow/blob/HEAD/skills/llm-council/SKILL.md
