Multiple Models and Consensus¶
AIA can send one prompt to several models at once. You can read their answers side by side, or have one model merge them into a single consensus answer. In a chat you can also switch models without losing the conversation.
Asking several models at once¶
Give --model (-m) a comma-separated list:
All the models run in parallel. Each answer is labelled with the robot's name, its model and how long it took:
**Tobor [gpt-4o-mini]** (2.1s):
Recursion is when a function calls itself...
**Zen [claude-haiku-4-5]** (1.8s):
A recursive function solves a problem by...
The first robot is always named Tobor. The others are named after their model family (Spark for gpt-4o-mini, Zen for Claude Haiku, Lyric for Claude Sonnet 4, Prism for Gemini Flash, and so on). If two robots would get the same name, the second gets a number (Zen2). These names are the handles you use with @mentions in chat; see Crews.
In the config file, list the models under models:
Models can include a provider prefix, such as ollama/llama3.2 or openai/gpt-4o. See Local Models and Choosing Models.
Consensus: one merged answer¶
Add --consensus and the individual answers go to a synthesizer robot named Weaver. Weaver combines the best points into one answer:
Weaver uses the first model in your list, so put the model you trust most for writing first. The output shows each model's answer followed by Weaver's merged answer under the consensus label.
--no-consensus turns it off again (useful when your config file sets flags.consensus: true).
Giving each model a role¶
A role is a prompt file in your roles directory (~/.prompts/roles/ by default) that shapes how a model behaves. You can give each model its own role with MODEL=ROLE:
AIA stops with an error if a role file doesn't exist. The role is added to that model's system prompt, so the same question gets an architect's answer and a security reviewer's answer.
The same model can appear more than once with different roles:
In YAML:
Roles and Skills explains how roles are written.
Multiple models in chat¶
Each message you type goes to every model, and their answers show up together, or merged if you used --consensus. To talk to just one of them, address it by name:
/robots lists the models in the session and their names. Crews covers @mentions and adding more members.
For a more structured exchange, use /debate (the models answer each other over several rounds) or /verify (two independent answers plus a reconciliation). Both are described in Advanced Modes.
Switching models during a chat¶
/model with no argument shows the current model or models. Give it model names to switch:
> /model
> /model claude-sonnet-4-5
Switching to claude-sonnet-4-5 (conversation: summarize)...
> /model gpt-4o-mini,claude-haiku-4-5
How the conversation is carried over is set by model_switch_history in your config file (or AIA_MODEL_SWITCH_HISTORY):
| Value | What the new model gets |
|---|---|
summarize (default) |
The old model writes a summary of the conversation, and the new model starts from that summary. This costs one request for the summary, plus one request per new model to hand it over. |
replay |
Every message you sent is re-sent to the new model, one at a time. The most faithful option, but one request per message you typed, per new model. |
clean |
Nothing. The new model starts fresh. |
The switch rebuilds the crew from the new model list, so crewmates you added with /add_recruit are dropped. See Crews.
Tools and MCP servers are turned off while AIA replays or summarizes, so the transfer can't cause side effects.
Note
Use /model to switch. It takes model names or aliases such as sonnet or cheap (see /model). Typing a request such as "switch to claude" goes to the model as an ordinary message.
Costs and timing¶
Several models means several bills. Add --tokens to see token counts and response time after each turn, or --cost to see the price as well. See Output and History.