# Route around failure

Keep a surface answering through a provider outage, spread load across a pool by cost or latency, and change behaviour safely on a stable endpoint. Field-level reference for every block here is in [Resilience and caching →](/products/affinidi-trust-fabric/agent-stream/reference/surfaces/resilience-and-caching.md) and [Routing and variants →](/products/affinidi-trust-fabric/agent-stream/reference/surfaces/routing-and-variants.md).

| Guide | What you will achieve |
| [Fail over to a backup provider on error](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/fail-over-to-a-backup-provider.md) | Add ordered backup providers to a surface, so a request retries against a backup instead of failing outright when the primary provider errors. |
| [Balance traffic across providers by cost or latency](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/balance-traffic-across-providers.md) | Distribute requests across a weighted pool of providers, selecting members by weighted round-robin, lowest observed latency, or lowest price. |
| [Roll out a model with a canary split](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/roll-out-a-new-model-with-a-canary-split.md) | Create a surface variant and route a small percentage of live traffic to it, so you can watch its cost, latency, and rejection figures before promoting it to every caller. |
| [Route requests to a capable model by attachment type](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/route-requests-by-attachment-type.md) | Add the Router element so requests carrying an image, audio file, document, or realtime voice session go to a variant whose model and Inputs elements accept them. |
| [Compare or summarise answers across models](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/compare-or-summarise-answers-across-models.md) | Send every request to several models at once, then return each answer side by side or consolidate them into one with a merger model. |

## Pages in this section
- [Fail over to a backup provider on error](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/fail-over-to-a-backup-provider.md): Add ordered backup providers to a surface, so a request retries against a backup instead of failing outright when the primary provider errors.
- [Balance traffic across providers by cost or latency](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/balance-traffic-across-providers.md): Distribute requests across a weighted pool of providers, selecting members by weighted round-robin, lowest observed latency, or lowest price.
- [Roll out a model with a canary split](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/roll-out-a-new-model-with-a-canary-split.md): Create a surface variant and route a small percentage of live traffic to it, so you can watch its cost, latency, and rejection figures before promoting it to every caller.
- [Route requests to a capable model by attachment type](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/route-requests-by-attachment-type.md): Add the Router element to a surface so requests carrying an image, audio file, document, or realtime voice session go to a variant whose model and Inputs elements accept them, while plain text stays on the surface's default.
- [Compare or summarise answers across models](/products/affinidi-trust-fabric/agent-stream/how-to-guides/resilience/compare-or-summarise-answers-across-models.md): Send every request to several models at once, then return each model's answer side by side for a person to compare, or consolidate them into one answer with a merger model.

