MoA is distinct from Multi-Agent Orchestration: there the axis is specialist agents (planner, reviewer…) dispatched in parallel within a task. Here the axis is model/provider diversity answering the same question. Triggered by the
/moa command.How it works
- Parallel proposal — each proposer receives the same prompt, concurrently.
- Fault tolerance — a proposer’s error is tolerated; MoA proceeds as long as at least one answered. It only fails if the aggregator itself fails.
- Aggregation — the aggregator gets a synthesis prompt with all proposals and produces one correct, cohesive answer (without mentioning that aggregation happened).
Configuration
| Variable | Description |
|---|---|
CHATCLI_MOA_MODELS | Optional. Proposers as CSV provider:model. Without it, /moa and @moa use the configured providers (sorted, capped at 4). |
CHATCLI_MOA_AGGREGATOR | Optional. Aggregator model (provider:model). Default: the session’s active provider/model. |
Auth: works with OAuth, not just API keys — when a proposer/aggregator matches the session’s active provider, MoA reuses the session client, honoring the OAuth token (preferred over an API key when logged in) or forwarded tokens (server/gateway mode). Provider names are resolved case-insensitively (
openai → OPENAI). The /moa command and the @moa tool share the same resolution and defaults.Usage
@moa tool (for the agent)
Besides the /moa command, there’s the @moa tool, which the agent can invoke inside an agent/coder flow to query several models and synthesize the best answer:
ask {prompt, models?, aggregator?}—modelsoptional (e.g.["openai","anthropic:claude-opus-4-8"]); defaults to a set of configured providers.aggregatordefaults to the session model.list— providers available to participate.
See also
- Multi-Agent Orchestration — parallel specialist agents (different axis)
- Environment Variables → Mixture-of-Agents