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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9bc136736f52096e005208b47bdb65eda582894264fa8e30b4e29cedb9c567f
|
|
| MD5 |
279671f2ac9f18a6561772c45bc373dd
|
|
| BLAKE2b-256 |
ab2b9fd977f5e587d4d2a6497da9d5ccae5ab8f2e270b40701c8897b2f873499
|
Provenance
The following attestation bundles were made for star_chamber-0.1.3.tar.gz:
Publisher:
release.yaml on peteski22/star-chamber
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
star_chamber-0.1.3.tar.gz -
Subject digest:
a9bc136736f52096e005208b47bdb65eda582894264fa8e30b4e29cedb9c567f - Sigstore transparency entry: 1042954792
- Sigstore integration time:
-
Permalink:
peteski22/star-chamber@c7f67c3c10e6be4295a3dbcf2dc75bb4bb8d056e -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/peteski22
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@c7f67c3c10e6be4295a3dbcf2dc75bb4bb8d056e -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb171cf6132fa79ff502e370e6e359f0caac105aa91859a0eae6c23930bf774d
|
|
| MD5 |
67d961e52feb69c16aa24ce7fe09520a
|
|
| BLAKE2b-256 |
f0468ab92485e1b8bb2e801ff37dcee441b05d2ea4fc4661c7141bca720f06dd
|
Provenance
The following attestation bundles were made for star_chamber-0.1.3-py3-none-any.whl:
Publisher:
release.yaml on peteski22/star-chamber
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
star_chamber-0.1.3-py3-none-any.whl -
Subject digest:
cb171cf6132fa79ff502e370e6e359f0caac105aa91859a0eae6c23930bf774d - Sigstore transparency entry: 1042954798
- Sigstore integration time:
-
Permalink:
peteski22/star-chamber@c7f67c3c10e6be4295a3dbcf2dc75bb4bb8d056e -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/peteski22
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@c7f67c3c10e6be4295a3dbcf2dc75bb4bb8d056e -
Trigger Event:
release
-
Statement type: