Skip to main content
Glama

Imladris

Named for Imladris (Rivendell), seat of the Council of Elrond — where representatives of every free people gathered to weigh a hard decision together.

Imladris Council

Design (source of truth)

docs/architecture/ — overview, pipeline, MCP surface, configuration reference, provider abstraction, judge, security, and deployment.

Related MCP server: LLM Council MCP

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

Imladris TUI dashboard

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.

Available Tools

3 tools
imladrisA

Convene a panel of independent AI models to deliberate on a hard question, then return a structured analysis (consensus, disagreements, gaps, unique insights, blind spots) plus all raw panel answers. Use for research, expert critique, "compare and contrast", architecture/design trade-offs, or any task where being wrong is costly. You (the calling model) remain the final author: read the analysis + raw answers and write the answer.

Inputs: prompt (required), context, thread_id, prior_answer, +7 more. Returns: object

imladris_clear_sessionsA

Clear local Imladris council-session history.

Pass a thread_id to clear one session, or omit it to clear all local session JSON files under ~/.imladris/sessions.

Inputs: thread_id. Returns: object

imladris_statusA

Return resolved non-secret config: presets, provider roles, per-provider egress (on-prem/off-prem), and advisory context-budget state. Performs no liveness probe.

Never returns secret values or api_key_env names (plan §6.2).

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool serves a distinct purpose: the main tool for convening panels, clear_sessions for session cleanup, and status for configuration. No overlap in functionality.

    Naming Consistency3/5

    The main tool is named simply 'imladris' while the auxiliary tools follow a 'imladris_verb_noun' pattern. This inconsistency breaks the pattern and could cause confusion.

    Tool Count4/5

    Three tools is minimal but reasonable for a focused server covering core functionality, session management, and status. Slightly thin but not insufficient.

    Completeness3/5

    Missing operations for listing past sessions or retrieving cached results. The clear_sessions tool only removes sessions without providing overview or retrieval capabilities.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables orchestrating a panel of frontier AI models that independently propose, critique, revise, and converge on a single agreed answer to a problem, using existing vendor subscriptions or API keys.
      19 npm
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables a structured multi-perspective deliberation workflow where three independent advisors propose strategies, cross-examine one another, and a final arbiter converges on a verdict, with all generation performed by the host agent.
      3
      MIT