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

> Preview provider assignments in Council of High Intelligence with the --dry-route flag. See the routing table before actual deliberation begins. Learn how to use this powerful tool.

- Repository: [nyk/council-of-high-intelligence](https://github.com/0xNyk/council-of-high-intelligence)
- Tags: how-to-guide
- Published: 2026-07-03

---

**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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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:

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

```

Combine with quick mode to verify fast-path assignments:

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

```

Test manual model overrides before committing:

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

```

## Interpreting the Routing Table Output

Typical output follows this structure:

```text
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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/scripts/detect-providers.sh)**: Performs the auto-detection of installed LLM providers and available API keys that populate the routing table.
- **[`README.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/README.md)** (line 226): Documents the constraint ensuring polarity-pair members are distributed across different providers.
- **[`configs/provider-model-slots.example.yaml`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/scripts/detect-providers.sh) and adjust [`configs/provider-model-slots.example.yaml`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/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`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/scripts/detect-providers.sh).