CouncilEx: multi-model LLM council workflows for Elixir
CouncilEx runs several LLMs as a council instead of trusting one model’s answer. You define members with different roles, send them through rounds like independent analysis, peer review, and voting, then aggregate or judge the results into one answer.
It talks to OpenAI, Anthropic, Gemini, Ollama, and OpenRouter through a single adapter behaviour, so switching providers is a config change. Structured output, streaming, tool calls, and per-member confidence are opt-in per member. You turn each one on only where you need it.
It’s a library, not a server. Runs are plain pids you own, started from either the use CouncilEx DSL or a pipeable builder. PubSub events, telemetry, a tracer, and diagram tooling come with it, so you can see what the council actually did.
Inspired by Andrej Karpathy’s llm-council.
