imladris
Enables multi-LLM deliberation via a council of panel members, judges responses for consensus and contradictions, and returns analysis to the calling model.
README
Imladris
Named for Imladris (Rivendell), seat of the Council of Elrond — where representatives of every free people gathered to weigh a hard decision together.

Design (source of truth)
docs/architecture/ — overview, pipeline, MCP surface,
configuration reference, provider abstraction, judge, security, and deployment.
How it works (one paragraph)
The harness's native model calls the imladris MCP tool (via the /council
or /council-session prompt). The server fans the prompt out to the configured panel (1–8
members) concurrently (each provider is a plain HTTPS call), collects answers
(with partial-result tolerance), then runs an API-side analysis judge
(consensus / contradictions / partial coverage / unique insights / blind spots).
The tool returns that analysis plus all raw panel answers. The native model reads
both and authors the final answer. A session call uses a local
~/.imladris/sessions/<thread_id>.json store to rebuild prior user/assistant turns for
the next panel pass. An MCP server can't call back into the
harness model, so the judge is API-side and the native model is always the outer
author.
Install
Bootstrap uv and install the imladris console
tool with a single command. You do not need a local checkout of this repository:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/FeanorsCodeSL/imladris/main/scripts/install.sh | sh
# Windows
irm https://raw.githubusercontent.com/FeanorsCodeSL/imladris/main/scripts/install.ps1 | iex
Each script installs uv if absent, resolves or installs Python 3.13, removes any
previous imladris uv tool environment, reinstalls with the resolved Python
interpreter, and verifies imladris --help before finishing. This puts two
commands on your console PATH: imladris (the configurator TUI) and
imladris-mcp (the MCP stdio server harnesses spawn).
Until a PyPI release is uploaded, this git-URL install requires git on PATH;
the installer checks that up front.
Use the installer as the supported install workflow, including for local source
testing. Raw uv tool install . is only useful when deliberately debugging uv
itself because it bypasses the installer safeguards.
Then run the configurator:
imladris
The full-screen configurator loads the current config, shows the council roster,
lets you add/edit/delete members, assign the judge role, writes
~/.imladris/config.json + ~/.imladris/.env (0600), and wires selected
harnesses (Claude Code / Codex / OpenCode) with the imladris MCP entry. After
that, continue in your harness and invoke /council, /council-session, or the
imladris tool when you want deliberation.
Run imladris doctor to print the resolved roster, roles, and wired harnesses
(no secrets). Use imladris refresh-catalog or the TUI refresh action to update
the local models.dev cache; runtime deliberation only reads cache/seed data.
Council sessions are local files under ~/.imladris/sessions/. Clear one or all
of them with imladris clear-sessions [thread_id] or the imladris_clear_sessions
MCP tool.
Repository layout
orchestrator/ the service package
mcp_server.py FastMCP server — tools: imladris, imladris_status, imladris_clear_sessions; council + council-session prompts; main()
panel.py panel fan-out orchestration (partial results + degradation)
judge.py API-side analysis judge
model_catalog.py offline-first model metadata, models.dev parser, cache helpers
budget.py advisory context-budget estimates
sessions.py local council-session store and message reconstruction
providers/ single OpenAI-compatible chat provider kind + factory
settings.py JSON/YAML + env config loading/validation; roles panel/judge
models.py Pydantic request/response models
interfaces.py Protocol seams; fakes.py — deterministic test doubles
costing.py cost estimation; json_utils.py — tolerant judge JSON
cli/ imladris configurator: TUI, catalog, config ops, secrets, probe, harness/
tests/ pytest suite (respx for HTTP)
config/ imladris.example.yaml (illustrative providers, presets, pricing)
scripts/ install.sh, install.ps1, stdio smoke (Bash + PowerShell)
docs/architecture/ live architecture, configuration, security, deployment references
.github/workflows/ CI, sonar
.agents/skills/ imladris-deliberate skill
Develop
Requires Python 3.13.
python -m venv .venv
./.venv/bin/python -m pip install -r orchestrator/requirements-dev.txt
./.venv/bin/ruff check orchestrator # lint
./.venv/bin/ruff format --check orchestrator # style gate (CI enforces)
./.venv/bin/python -m pytest # tests
./.venv/bin/python -m orchestrator.mcp_server # run the MCP server over stdio
IMLADRIS_SOURCE="$(pwd)" ./scripts/install.sh # install/test from this checkout
On Windows, use the same installer path:
.\scripts\install.ps1 -Source .
Configuration
Run imladris to write ~/.imladris/config.json and ~/.imladris/.env (0600).
The in-repo config/imladris.example.yaml is illustrative only. Both JSON and
YAML config files are supported by extension; the TUI writes JSON.
Secrets live only in env vars referenced by name (api_key_env) from the
config — never in the config file, never logged, never returned by
imladris_status.
Resolution: --config <path> → IMLADRIS_CONFIG → ./imladris.{json,yaml} →
~/.imladris/config.{json,yaml}.
Integration
Per-harness setup (Claude Code, Codex, OpenCode) is wired automatically by the
imladris configurator. Every entry launches imladris-mcp over stdio with
IMLADRIS_CONFIG pointed at ~/.imladris/config.json. For the manual config
snippets, see docs/architecture/06-deployment.md.
License
MIT. See also SECURITY.md, CONTRIBUTING.md, THIRD-PARTY-NOTICES.md.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.