How to Use the `--dry-route` Flag to Preview Provider Assignments in Council of High Intelligence

The --dry-route flag outputs a routing table showing how each of the 18 council members will be assigned to specific LLM providers and models, halting execution before the actual deliberation begins.

The Council of High Intelligence is a multi-agent deliberation framework that distributes reasoning tasks across diverse LLM providers to maximize cognitive diversity. Before committing to a full council run, you can use the --dry-route flag to preview exactly how the system will distribute its agents across available providers, ensuring that polarity-pair members are split across different backends and that your model slots are configured correctly.

What the --dry-route Flag Does

When you append --dry-route to any council command, the system executes the Provider Detection & Routing phase documented in SKILL.md (lines 37‑40) and immediately terminates after printing the routing table. This checkpoint occurs after the framework detects available providers via scripts/detect-providers.sh but before any subagents are spawned or deliberation begins.

The output displays a table mapping each council member to:

  • Selected Provider (e.g., Claude, OpenAI, Ollama)
  • Chosen Model (e.g., opus-v1, gpt-4-turbo, llama-2-13b)
  • Execution Method (e.g., subagent, codex exec, ollama run)

This allows you to verify that the 18 agents are distributed according to the protocol's constraints without consuming API quota or execution time.

Why Provider Assignment Preview Matters

The routing table serves a critical validation function for the council's multi-provider diversity requirement. As implemented in the protocol, the system enforces a hard constraint that polarity-pair members must be split across different providers to prevent homogenized reasoning (see README.md line 226).

Using --dry-route lets you confirm:

  • Balanced Distribution: No single provider is unintentionally overloaded with the majority of council seats
  • Constraint Satisfaction: Opposing viewpoint pairs (polarity-pairs) are routed to different LLM backends
  • Configuration Accuracy: Your configs/provider-model-slots.example.yaml overrides or environment variables (e.g., NVIDIA_API_KEY) are correctly recognized by the auto-routing logic

Running --dry-route with Different Modes

The flag is additive and composes with any mode flag (--quick, --duo, --full, etc.). It does not alter the provider-auto-routing logic; it simply intercepts execution after the routing table generation.

Preview routing for a standard full deliberation:

council --dry-route "Should we adopt this feature?"

Combine with quick mode to verify fast-path assignments:

council --quick --dry-route "Should we add caching?"

Test manual model overrides before committing:

council --models configs/provider-model-slots.example.yaml --dry-route "Is this architecture sound?"

Interpreting the Routing Table Output

Typical output follows this structure:

Member          Provider   Model                Exec Method
-------------------------------------------------------------
council-aristotle   Claude   opus-v1               subagent
council-socrates    OpenAI   gpt-4-turbo          codex exec
council-sun-tzu     Ollama   llama-2-13b          ollama run
...

Each row indicates the exact provider and model assignment for that council member. If you see multiple high-importance agents routed to the same provider, or if polarity-pairs appear on the same backend, adjust your environment variables or model slot configuration and rerun the dry route command.

Key Implementation Files

Understanding the --dry-route implementation requires familiarity with these components:

  • SKILL.md (lines 37‑40): Contains the flag specification table and defines the checkpoint where execution halts after routing table generation.
  • scripts/detect-providers.sh: Performs the auto-detection of installed LLM providers and available API keys that populate the routing table.
  • README.md (line 226): Documents the constraint ensuring polarity-pair members are distributed across different providers.
  • configs/provider-model-slots.example.yaml: Example configuration for manually overriding auto-routing assignments; referenced when using the --models flag with --dry-route.

Summary

  • The --dry-route flag stops execution after the Provider Detection & Routing phase to display a preview table of provider assignments.
  • It verifies that all 18 council members are distributed across providers such that polarity-pairs are separated (a hard constraint) and load is balanced.
  • The flag works with any mode (--quick, --full, etc.) and manual model configurations via --models.
  • Review output from scripts/detect-providers.sh and adjust configs/provider-model-slots.example.yaml or environment variables if assignments appear incorrect.

Frequently Asked Questions

Can I use --dry-route with custom model configurations?

Yes. When you specify a custom model slots file using --models, the --dry-route flag will preview the assignments based on your explicit configuration rather than auto-detected providers. This is useful for verifying that your configs/provider-model-slots.example.yaml overrides are being respected before running the actual council.

Does --dry-route validate my API keys?

No. The flag only executes the routing logic defined in the provider detection phase. It does not verify that your ANTHROPIC_API_KEY, OPENAI_API_KEY, or other credentials are valid or have sufficient quota. It merely confirms that the council knows which providers to assign based on availability and your configuration files.

Why must polarity-pair members use different providers?

This is a hard constraint in the Council of High Intelligence protocol designed to maximize cognitive diversity. By ensuring that opposing viewpoints (polarity-pairs) are processed by different LLM architectures and training datasets, the system prevents echo chambers and promotes robust deliberation. The --dry-route output lets you verify this constraint is satisfied before execution.

How do I fix uneven provider distribution shown in the dry run?

If the routing table shows too many agents assigned to one provider, you can explicitly define provider-model mappings in configs/provider-model-slots.example.yaml and pass it with --models. Alternatively, set or unset environment variables (like NVIDIA_API_KEY or OLLAMA_HOST) to include or exclude specific providers from the auto-detection logic in scripts/detect-providers.sh.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →