@rakohq/pi-council

Multi-model LLM Council for adversarial debate, cross-validation, and synthesized decision-making via pi-teams

Package details

extensionskill

Install @rakohq/pi-council from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@rakohq/pi-council
Package
@rakohq/pi-council
Version
0.1.0
Published
Apr 20, 2026
Downloads
71/mo · 16/wk
Author
rakohq
License
MIT
Types
extension, skill
Size
46.8 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "extensions": [
    "extensions/index.ts"
  ],
  "skills": [
    "skills"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-council

Multi-model LLM Council for adversarial debate, cross-validation, and synthesized decision-making.

┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│  claude-opus-4-6│  │  claude-opus-4-7│  │ claude-sonnet-4-6│
│    DRAFTER #1   │  │    DRAFTER #2   │  │    DRAFTER #3   │
└────────┬────────┘  └────────┬────────┘  └────────┬────────┘
         │                    │                    │
┌────────┴────────┐  ┌───────┴─────────┐
│    gpt-5.4      │  │  gpt-5.3-codex  │
│    DRAFTER #4   │  │    DRAFTER #5   │
└────────┬────────┘  └────────┬────────┘
         │                    │
         └────────┬───────────┘
                  ▼
       ╔══════════════════════╗
       ║  ADVERSARIAL DEBATE  ║
       ║    (2 rounds)        ║
       ╚══════════╤═══════════╝
                  ▼
       ┌──────────────────────┐
       │     SYNTHESIS        │
       │  (claude-opus-4-7)   │
       └──────────┬───────────┘
                  ▼
       ┌──────────────────────┐
       │   FINAL VERDICT      │
       │   Confidence: 94%    │
       └──────────────────────┘

Installation

pi install npm:pi-council

Usage

As a Tool (LLM calls it)

The council tool is available to the LLM for tasks that benefit from multi-model deliberation:

council({
  task: "Design a mass hallucination prevention system",
  mode: "full",
  debate_rounds: 2
})

As a Command

/council Design a caching layer for our API
/council --mode draft Quick brainstorm on auth strategies
/council --rounds 3 --mode critique Review this security implementation

Configuration

# Environment variables
export COUNCIL_MODELS="anthropic/claude-opus-4-6,anthropic/claude-opus-4-7,anthropic/claude-sonnet-4-6,openai-codex/gpt-5.4,openai-codex/gpt-5.3-codex"
export COUNCIL_SYNTHESIZER="anthropic/claude-opus-4-7"
export COUNCIL_ROUNDS=2

Or use the council_config tool:

council_config({ action: "set", debate_rounds: 3 })
council_config({ action: "get" })

Pipeline

Phase What Happens
1. Parallel Drafts All models independently answer the task
2. Adversarial Debate Models critique each other through N rounds
3. Synthesis Designated model merges best ideas
4. Validation Optional JSON schema validation with retry

Modes

Mode Phases Use Case
full All 4 Highest quality, default
draft Draft only Quick parallel brainstorm
critique Draft + Debate Get diverse critiques without merging

Models

Default council members:

Model Provider
claude-opus-4-6 anthropic
claude-opus-4-7 anthropic
claude-sonnet-4-6 anthropic
gpt-5.4 openai-codex
gpt-5.3-codex openai-codex

Override per invocation or globally via config.

Structured Output

Pass a JSON schema to get validated structured output:

council({
  task: "Evaluate these 3 database options",
  schema: {
    type: "object",
    required: ["recommendation", "scores", "reasoning"],
    properties: {
      recommendation: { type: "string" },
      scores: { type: "object" },
      reasoning: { type: "string" }
    }
  }
})

The council will retry up to 3 times if the output doesn't conform.

Requirements

  • pi (the coding agent)
  • API keys for Anthropic and OpenAI (or whichever models you configure)
  • Terminal multiplexer (cmux, tmux, iTerm2, Wezterm, or Windows Terminal) for visual pane mode

License

MIT