Catalog PyPI
Back to packageRELEASE DETAILS

1.4.2

PyPI

ai-decision-council

Multi-model council orchestration with CLI and integration bridge

agentsaicouncildecisionllmmulti-modelopenrouter
Published31 May 2026
Direct dependencies13
Transitive dependenciesNot calculated

README

Version 1.4.2 documentation

ai-decision-council

ai-decision-council is a plug-and-play Python SDK for multi-model council workflows:

  1. Collect first-pass answers from multiple models.
  2. Run peer ranking across those answers.
  3. Synthesize one final decision-style response.

Default behavior uses a curated set of 5 models (configurable from 2 to 20).

Install

pip install ai-decision-council

5-minute startup

# Use your OpenRouter API key here.
export LLM_COUNCIL_API_KEY="..."
ai-decision-council doctor
ai-decision-council run --prompt "Explain CAP theorem in simple terms"

5-minute API integration

pip install "ai-decision-council[api]"
export LLM_COUNCIL_API_KEY="..."
export LLM_COUNCIL_REFERENCE_API_TOKEN="replace-with-long-random-token"
ai-decision-council api serve

Then call POST /v1/conversations on http://localhost:8001.

Python integration

from ai_decision_council import Council

council = Council.from_env()
result = council.run_sync("Summarize vector databases in 5 bullets")
print(result.final_response)

CLI

ai-decision-council doctor
ai-decision-council models --defaults
ai-decision-council models --defaults --count 7
ai-decision-council init
ai-decision-council init --api fastapi
ai-decision-council api bootstrap --path .
ai-decision-council api openapi --output ./openapi.json
ai-decision-council api sdk --output-dir ./sdk
ai-decision-council run --prompt "Your prompt" --json

Legacy alias remains supported:

llm-council ...

Core configuration

  • LLM_COUNCIL_API_KEY (preferred; your OpenRouter API key)
  • LLM_COUNCIL_MODELS (explicit model list)
  • LLM_COUNCIL_MODEL_COUNT (default 5)
  • LLM_COUNCIL_CHAIRMAN_MODEL
  • LLM_COUNCIL_TITLE_MODEL
  • LLM_COUNCIL_API_URL
  • LLM_COUNCIL_REFERENCE_API_TOKEN (required for packaged API auth)

Current provider scope is OpenRouter-first. Fallback key support: OPENROUTER_API_KEY.

Documentation

  • docs/quickstart.md
  • docs/python-integration.md
  • docs/cli-usage.md
  • docs/framework-snippets.md
  • docs/troubleshooting.md
  • docs/migration.md
  • docs/openapi.json

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 20

Native requirements
13 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27.0runtime
python-dotenv
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
python-dotenv>=1.0.0runtime
tomli
Environment
{
  "extras": "",
  "marker": "python_version < \"3.11\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
tomli>=2.0.0; python_version < "3.11"runtime
fastapi
Environment
{
  "extras": "",
  "marker": "extra == \"api\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.115.0; extra == "api"runtime
pydantic
Environment
{
  "extras": "",
  "marker": "extra == \"api\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.9.0; extra == "api"runtime
uvicorn
Environment
{
  "extras": "standard",
  "marker": "extra == \"api\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
uvicorn[standard]>=0.32.0; extra == "api"runtime
fastapi
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.115.0; extra == "dev"runtime
httpx
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27.0; extra == "dev"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mypy>=1.0.0; extra == "dev"runtime
pydantic
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.9.0; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.24.0; extra == "dev"runtime
pytest-cov
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-cov>=5.0.0; extra == "dev"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0.0; extra == "dev"runtime
pyyaml
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyyaml>=6.0; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
ruff>=0.1.0; extra == "dev"runtime
tomli
Environment
{
  "extras": "",
  "marker": "python_version < \"3.11\" and extra == \"dev\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
tomli>=2.0.0; python_version < "3.11" and extra == "dev"runtime
sphinx
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx>=7.0.0; extra == "docs"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.24.0; extra == "test"runtime
pytest-cov
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-cov>=5.0.0; extra == "test"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": "<4.0,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0.0; extra == "test"runtime

Distribution files

2 collected
ai_decision_council-1.4.2-py3-none-any.whl

bdist_wheel · 55.88 KB · Python py3

Source file
ai_decision_council-1.4.2.tar.gz

sdist · 76.14 KB · Python source

Source file

Repository

PENDING
ch1kim0n1/ai-decision-council

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:25 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:f591c6aaefcb03f47323880d5eabc3558692df24b7bfe0cf5c2ea72e02fb4e56

Other collected versions

View all collected versions →