Skip to main content

Multi-LLM council protocol SDK.

Project description

star-chamber

Multi-LLM council protocol SDK. Fan out code reviews and design questions to multiple LLM providers, then classify findings by consensus.

Installation

pip install star-chamber

Or with uv:

uv add star-chamber

For platform-managed API key resolution, install the optional platform extra:

pip install star-chamber[platform]

Configuration

Create ~/.config/star-chamber/providers.json:

{
  "providers": [
    {"provider": "openai", "model": "gpt-4o", "api_key": "${OPENAI_API_KEY}"},
    {"provider": "anthropic", "model": "claude-sonnet-4-20250514", "api_key": "${ANTHROPIC_API_KEY}"}
  ],
  "timeout_seconds": 90,
  "consensus_threshold": 2
}

API keys can be literal values or ${ENV_VAR} references that are resolved at runtime.

Platform mode (any-llm)

Instead of managing API keys per provider, you can use Mozilla AI's any-llm platform for centralised key management. Set ANY_LLM_KEY in your environment and add "platform": "any-llm" to your config:

{
  "providers": [
    {"provider": "openai", "model": "gpt-4o"},
    {"provider": "anthropic", "model": "claude-sonnet-4-20250514"}
  ],
  "platform": "any-llm",
  "timeout_seconds": 90,
  "consensus_threshold": 2
}

When platform is set, API keys are fetched from the platform service — no api_key fields needed. Install the platform extra: pip install star-chamber[platform].

Override the config path with the STAR_CHAMBER_CONFIG environment variable.

CLI

Code review

star-chamber review src/auth.py src/db.py

Design question

star-chamber ask "Should we use Redis or Memcached for session storage?"

Options

--provider, -p    Provider to include (repeatable)
--config          Path to providers.json
--timeout         Per-provider timeout in seconds
--context-file    File containing project context to include in the prompt
--format          Output format: text or json
--output          Write JSON result to file

List providers

star-chamber list-providers

Protocol schemas

The SDK ships the council protocol specification as package data.

# List available schemas.
star-chamber schema list

# Print a specific schema.
star-chamber schema code-review-result

Python API

from star_chamber import run_council_sync, CouncilConfig, ProviderConfig

config = CouncilConfig(
    providers=(
        ProviderConfig(provider="openai", model="gpt-4o"),
        ProviderConfig(provider="anthropic", model="claude-sonnet-4-20250514"),
    ),
    timeout_seconds=90,
    consensus_threshold=2,
)

# Code review.
result = run_council_sync(
    files={"auth.py": open("auth.py").read()},
    config=config,
    mode="code-review",
)

print(result.summary)
for issue in result.consensus_issues:
    print(f"  [{issue.severity}] {issue.location}: {issue.description}")

# Design question.
result = run_council_sync(
    prompt="Should we use a monorepo or polyrepo?",
    config=config,
    mode="design-question",
)

print(result.consensus_recommendation)

Async

import asyncio
from star_chamber import run_council

result = asyncio.run(run_council(
    files={"auth.py": open("auth.py").read()},
    mode="code-review",
))

Schema access

from star_chamber import get_schema, list_schemas

# List available schema names.
names = list_schemas()

# Get a specific schema as a JSON string.
schema_json = get_schema("code-review-result")

Consensus classification

Issues from multiple providers are grouped by file, line proximity (within 5 lines), and category, then classified as:

  • Consensus -- all providers agree.
  • Majority -- two or more providers agree, but not all.
  • Individual -- flagged by a single provider.

Results are sorted by severity within each bucket.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

star_chamber-0.1.1.tar.gz (95.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

star_chamber-0.1.1-py3-none-any.whl (47.5 kB view details)

Uploaded Python 3

File details

Details for the file star_chamber-0.1.1.tar.gz.

File metadata

  • Download URL: star_chamber-0.1.1.tar.gz
  • Upload date:
  • Size: 95.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for star_chamber-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6b73340139d2bde112df9acd7042b74d915334a1bc045d6740811888cfce4398
MD5 1565fbc054b7c5f1335aed07f8f1eedd
BLAKE2b-256 2064208daf57882a7a72face8bddbfa66571e089260704c767600f2b038b2ea2

See more details on using hashes here.

Provenance

The following attestation bundles were made for star_chamber-0.1.1.tar.gz:

Publisher: release.yaml on peteski22/star-chamber

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file star_chamber-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: star_chamber-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 47.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for star_chamber-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8c8a97239fb0e1399020cc996055b5ae92aa6d6c23523e7670292c792fe2b3e
MD5 d5b7cb7c1139f8aeba3498ff601744d9
BLAKE2b-256 06542932dde55613920481e38452ba05daf8b679698ec183be1e204477d00f73

See more details on using hashes here.

Provenance

The following attestation bundles were made for star_chamber-0.1.1-py3-none-any.whl:

Publisher: release.yaml on peteski22/star-chamber

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page