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
--council-context File containing prior council round feedback (debate mode)
--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.3.tar.gz (96.8 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.3-py3-none-any.whl (48.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: star_chamber-0.1.3.tar.gz
  • Upload date:
  • Size: 96.8 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.3.tar.gz
Algorithm Hash digest
SHA256 a9bc136736f52096e005208b47bdb65eda582894264fa8e30b4e29cedb9c567f
MD5 279671f2ac9f18a6561772c45bc373dd
BLAKE2b-256 ab2b9fd977f5e587d4d2a6497da9d5ccae5ab8f2e270b40701c8897b2f873499

See more details on using hashes here.

Provenance

The following attestation bundles were made for star_chamber-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: star_chamber-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 48.1 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cb171cf6132fa79ff502e370e6e359f0caac105aa91859a0eae6c23930bf774d
MD5 67d961e52feb69c16aa24ce7fe09520a
BLAKE2b-256 f0468ab92485e1b8bb2e801ff37dcee441b05d2ea4fc4661c7141bca720f06dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for star_chamber-0.1.3-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