---
title: "OmniRoute AI Routing Setup: Production Guide 2026"
canonical: https://wavect.io/blog/omniroute-ai-routing-setup/
language: en
description: "Set up OmniRoute AI routing, choose a routing strategy, harden access and test quality, cost and failover before a production rollout. Use the 2026 checklist."
image: "https://wavect.io/img/blog/headers/header_omniroute-ai-routing-setup.png"
---

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

10 min read · 9 Aug 2026 Last reviewed August 9, 2026

[**Next**](/blog/ai-designed-viruses-stanford-biosecurity/)

# OmniRoute AI Routing: Setup and Production Checklist

TL;DR

OmniRoute is a local-first, open-source AI gateway that presents an OpenAI-compatible endpoint and routes requests across configured model providers. A useful setup starts with one primary model, one proven fallback and an explicit routing objective, then validates response quality, tool-call compatibility, latency, failover and cost per accepted task. For production, pin the version, require API keys, set unique secrets and encrypted storage, restrict CORS, terminate TLS, define log retention and test backups. Use OmniRoute when a team wants hands-on control over several provider connections; choose a simpler managed or custom layer when contractual support, stricter isolation or a smaller operational surface matters more.

OmniRoute gives coding tools and applications one local endpoint in front of several AI providers. That makes the first demo easy. The production decision is harder: you still have to prove that routing preserves answer quality, tool calls, latency, security and cost under your own traffic.

This guide owns that narrower question. Our [LLM gateway comparison](/blog/llm-gateway-router-comparison-2026/) covers category choices such as hosted versus self-hosted. Here, the focus is OmniRoute AI routing: how to configure a useful route, what the request path adds, and which gates should block a premature rollout. Research and product documentation were reviewed on 9 August 2026.

**Independence and trademarks:** Wavect publishes this page and is itself a provider, so we have a commercial interest in it. We are not affiliated with, endorsed by or partnered with the other companies named here, and all third-party company names, brands and trademarks are the property of their respective owners. Statements about other providers are taken from publicly available sources, primarily their own published pages, as of the review date shown on this page, and may have changed since. Please verify them directly before you decide. This page was written to the best of our knowledge and with the intent to remain objective. If you believe anything here is inaccurate or unfair, write to us and we will correct it: [office@wavect.io](mailto:office@wavect.io)

## What is OmniRoute AI routing?

**OmniRoute is a local-first, open-source AI gateway that exposes an OpenAI-compatible endpoint and forwards each request to a configured provider or model route.** Its value is the control point: clients keep one base URL while the gateway handles protocol translation, provider selection, fallback, usage tracking and optional prompt compression.

The project's [official repository and current setup documentation](https://github.com/diegosouzapw/OmniRoute) describe npm, Docker and desktop deployment, plus integrations for coding agents that accept a custom endpoint. Provider counts and feature totals change frequently, so this guide does not use them as a buying argument.

## How does an OmniRoute request travel?

The client sends a request to the gateway instead of directly to a model vendor. OmniRoute classifies the route, resolves the selected model or combo, translates the request into the upstream format, executes it, translates the response back and records usage. Its [architecture documentation](https://github.com/diegosouzapw/OmniRoute/blob/main/docs/architecture/ARCHITECTURE.md) also places configuration, usage data and call-log artifacts around that path.

That extra hop creates leverage and responsibility. You gain one place for fallback and provider changes. You also create a control plane that can see prompts, responses and credentials. Treat it like production infrastructure, not a harmless URL alias.

| Layer | What it decides | What you must verify |
| --- | --- | --- |
| Client | Request format, timeout and selected route | Streaming, tool calls and error handling remain compatible |
| OmniRoute | Provider, model, fallback and optional compression | The decision is observable, repeatable and within budget |
| Provider | Inference, safety policy, regional processing and billing | Terms, data flow, rate limits and model behavior meet the workload |

## How do you set up OmniRoute?

For evaluation, keep the first route deliberately small. More providers do not make a route safer if you have not tested the fallback.

1. **Choose the evaluation boundary.** Run locally for personal development traffic. Use an isolated Docker or server deployment for a team pilot, with no production customer data yet.
2. **Install and initialize.** The documented npm path is `npm install -g omniroute`, followed by `omniroute setup`. Start the gateway with `omniroute`.
3. **Add only the providers you will test.** Use separate test credentials and low spending limits. Do not import every available account into the first experiment.
4. **Create one primary and one fallback.** Pick a primary model that already passes your eval. Add a fallback with compatible context, tools and output behavior.
5. **Point one client at the endpoint.** Use the generated API key, the local base URL and the chosen route ID. Keep a direct-provider profile so you can compare results and recover quickly.
6. **Run diagnostics and failure drills.** Use `omniroute doctor`, then inject timeouts, 429 responses, 5xx responses and an interrupted stream in a non-production environment.

## Which OmniRoute routing strategy should you choose?

Start from the business constraint, not the longest feature list. OmniRoute's [current routing documentation](https://github.com/diegosouzapw/OmniRoute/blob/main/docs/routing/AUTO-COMBO.md) includes ordered, weighted, cost, latency, quota-aware, context-aware and automatic strategies. The exact set evolves, but the decision pattern is stable.

| Your objective | Sensible starting pattern | Main risk |
| --- | --- | --- |
| Use a preferred model until it is unavailable | Priority or fill-first with one tested fallback | Fallback quality differs without anyone noticing |
| Spread traffic across equivalent targets | Round-robin, weighted or power-of-two choices | Targets are not actually equivalent on tools or context |
| Reduce model spend | Cost-oriented route with a quality gate | Cheaper tokens increase retries or rejected outputs |
| Reduce tail latency | Latency or SLA-aware route | Fast selection becomes unstable across regions and workloads |
| Route by task type | Task mapping to small, explicit combos | Misclassification sends sensitive or difficult work to the wrong model |

The safest first production candidate is usually boring: one known primary, one compatible fallback and one reason to switch. Add dynamic scoring only after the static path has an eval baseline.

## What must you harden before production?

Production hardening begins with access control. The project's [authorization guide](https://github.com/diegosouzapw/OmniRoute/blob/main/docs/architecture/AUTHZ_GUIDE.md) distinguishes public, client API and management routes, supports scoped keys and documents when client endpoints require a bearer key. The [official production environment example](https://github.com/diegosouzapw/OmniRoute/blob/main/docs/ENVIRONMENT.md) calls for generated secrets, encrypted storage, secure cookies, required API keys, a restricted CORS origin and production mode.

- Pin a reviewed version. Do not deploy a floating npm or container tag. Record the version, dependency scan and rollback image.
- Set unique secrets. Generate the JWT, API-key and storage-encryption values outside source control. Rotate provider credentials separately by environment.
- Require authentication. Turn on API-key enforcement, use least-privilege scopes and keep management interfaces off the public internet.
- Terminate TLS and restrict origins. Put the gateway behind an approved reverse proxy, allow only the required client origins and test that direct ports are not exposed.
- Control logs. Decide whether prompts and responses may be stored. Set redaction, retention, access and deletion rules before real customer traffic arrives.
- Back up and restore. Protect the data directory and test a restore. A backup that has never been restored is only a hope.
- Review every upstream. Routing through your own gateway does not erase provider processing, terms, regional transfer or retention.

## How should you test OmniRoute AI routing?

A router is successful when the task succeeds, not when the cheapest model answers. Build an evaluation set from real, approved prompts and score each route against the direct-provider baseline.

| Gate | Measure | Example release rule |
| --- | --- | --- |
| Quality | Accepted outputs and task-specific rubric score | No statistically meaningful loss on critical tasks |
| Tool compatibility | Valid tool calls, arguments and structured outputs | No new schema or execution failures |
| Resilience | Recovery from timeout, 429, 5xx and broken streams | Known errors fail over once, without duplicate side effects |
| Latency | Time to first token and end-to-end p95 | Within the product's latency budget by route |
| Economics | Cost per accepted task, including retries | Lower total cost without moving failure cost to users |
| Operations | Decision logs, alerts, backup and rollback drill | An on-call engineer can explain and reverse a route |

For the cost model behind this gate, use our [LLM cost calculator and architecture worksheet](/blog/llm-cost-calculator-2026/). Token price alone misses retries, failed tasks, human review and the gateway's operating cost.

## Is OmniRoute production-ready?

**OmniRoute can be part of a production architecture, but production readiness is a result of your configuration, workload tests and operating model.** A local demo does not prove secure remote access, stable upgrades, provider-policy alignment or correct failover for a state-changing agent.

It is a strong candidate when a technical team wants local control, many provider connections and hands-on routing for developer tools or bounded internal workloads. A simpler managed gateway can be the better choice when the team lacks operational capacity. A narrow custom routing layer can be better when only two providers, strict contracts or application-specific idempotency matter. Use the broader [gateway decision guide](/blog/llm-gateway-router-comparison-2026/) if OmniRoute is not yet the settled product choice.

## What should a buyer ask before approving the rollout?

1. Which exact workload and data classes may cross the gateway?
2. Which route owns each task, and why is its fallback compatible?
3. What quality threshold blocks a cheaper model from taking traffic?
4. Who owns upgrades, incidents, credential rotation and provider changes?
5. Can the team reproduce the route decision and cost for one request?
6. How fast can the application bypass or roll back the gateway?

If those answers are missing, the next step is not a bigger combo. It is an architecture and evaluation sprint. Wavect's [AI product engineering team](/services/artificial-intelligence/) helps teams define that routing boundary, build the eval harness and ship a controlled production path.

## Final thoughts

OmniRoute makes multi-provider AI routing approachable because one endpoint can sit between your clients and several models. The production value comes from the seam, not the provider count.

Begin with one primary, one tested fallback and one explicit objective. Then prove quality, tools, failover, latency and cost per accepted task. Pin and harden the deployment before customer data reaches it. If the route cannot be explained, evaluated and rolled back, it is not ready to own production traffic.

## You may also like..

[**LLM Gateways Compared 2026** Compare hosted and self-hosted gateway patterns before committing to OmniRoute or another routing layer.](/blog/llm-gateway-router-comparison-2026/) [**Wavect vs Generalist Development Agencies** Compare focused AI product engineering with buying generalist delivery capacity.](/compare/wavect-vs-dev-agencies/)

Models and infrastructure

## Continue through this cluster

[Start with the cornerstone**Self-Hosting LLMs in the EU: When Open Weights Actually Pay Off**](/blog/self-hosting-llms-eu-cost/)

- [Gemini Robotics 2: Whole-Body Control and the Pilot Decision](/blog/gemini-robotics-2-whole-body-control/)
- [pdf-inspector Review: Route PDFs Before OCR](/blog/pdf-inspector-ocr-routing/)
- [Local Multimodal AI Coding Assistant: Voice, OCR and Privacy](/blog/local-multimodal-ai-coding-assistant/)
- [DeepSeek V4 Flash 0731 on One AI PC: What Actually Works?](/blog/deepseek-v4-flash-0731-local-ai-pc/)
- [Fine-Tune Gemma 4 Free with Unsloth and Colab](/blog/fine-tune-gemma-4-free-unsloth-colab/)

Inbox, without the noise

## Follow the work that matters to you

Get a short email when we publish something new. Follow the whole blog or only the problems you care about.

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

10 min read · 9 Aug 2026 Last reviewed August 9, 2026

[**Next**](/blog/ai-designed-viruses-stanford-biosecurity/)

New posts by email ×

×

Get new posts by email

A short email when we publish. Free, no tracking.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/blog/omniroute-ai-routing-setup/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-09",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-09",
      "url": "https://wavect.io/blog/omniroute-ai-routing-setup/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "OmniRoute is a local-first, open-source AI gateway that presents an OpenAI-compatible endpoint and routes requests across configured model providers. A useful setup starts with one primary model, one proven fallback and an explicit routing objective, then validates response quality, tool-call compatibility, latency, failover and cost per accepted task. For production, pin the version, require API keys, set unique secrets and encrypted storage, restrict CORS, terminate TLS, define log retention and test backups. Use OmniRoute when a team wants hands-on control over several provider connections; choose a simpler managed or custom layer when contractual support, stricter isolation or a smaller operational surface matters more.",
  "articleBody": " Blog overview/AI and agents/Models and infrastructure OmniRoute AI Routing: Setup and Production Checklist TL;DR OmniRoute is a local-first, open-source AI gateway that presents an OpenAI-compatible endpoint and routes requests across configured model providers. A useful setup starts with one primary model, one proven fallback and an explicit routing objective, then validates response quality, tool-call compatibility, latency, failover and cost per accepted task. For production, pin the version, require API keys, set unique secrets and encrypted storage, restrict CORS, terminate TLS, define log retention and test backups. Use OmniRoute when a team wants hands-on control over several provider connections; choose a simpler managed or custom layer when contractual support, stricter isolation or a smaller operational surface matters more. OmniRoute gives coding tools and applications one local endpoint in front of several AI providers. That makes the first demo easy. The production decision is harder: you still have to prove that routing preserves answer quality, tool calls, latency, security and cost under your own traffic. This guide owns that narrower question. Our LLM gateway comparison covers category choices such as hosted versus self-hosted. Here, the focus is OmniRoute AI routing: how to configure a useful route, what the request path adds, and which gates should block a premature rollout. Research and product documentation were reviewed on 9 August 2026. Independence and trademarks: Wavect publishes this page and is itself a provider, so we have a commercial interest in it. We are not affiliated with, endorsed by or partnered with the other companies named here, and all third-party company names, brands and trademarks are the property of their respective owners. Statements about other providers are taken from publicly available sources, primarily their own published pages, as of the review date shown on this page, and may have changed since. Please verify them directly before you decide. This page was written to the best of our knowledge and with the intent to remain objective. If you believe anything here is inaccurate or unfair, write to us and we will correct it: office@wavect.io What is OmniRoute AI routing? OmniRoute is a local-first, open-source AI gateway that exposes an OpenAI-compatible endpoint and forwards each request to a configured provider or model route. Its value is the control point: clients keep one base URL while the gateway handles protocol translation, provider selection, fallback, usage tracking and optional prompt compression. The project's official repository and current setup documentation describe npm, Docker and desktop deployment, plus integrations for coding agents that accept a custom endpoint. Provider counts and feature totals change frequently, so this guide does not use them as a buying argument. How does an OmniRoute request travel? The client sends a request to the gateway instead of directly to a model vendor. OmniRoute classifies the route, resolves the selected model or combo, translates the request into the upstream format, executes it, translates the response back and records usage. Its architecture documentation also places configuration, usage data and call-log artifacts around that path. That extra hop creates leverage and responsibility. You gain one place for fallback and provider changes. You also create a control plane that can see prompts, responses and credentials. Treat it like production infrastructure, not a harmless URL alias. LayerWhat it decidesWhat you must verify ClientRequest format, timeout and selected routeStreaming, tool calls and error handling remain compatible OmniRouteProvider, model, fallback and optional compressionThe decision is observable, repeatable and within budget ProviderInference, safety policy, regional processing and billingTerms, data flow, rate limits and model behavior meet the workload How do you set up OmniRoute? For evaluation, keep the first route deliberately small. More providers do not make a route safer if you have not tested the fallback. Choose the evaluation boundary. Run locally for personal development traffic. Use an isolated Docker or server deployment for a team pilot, with no production customer data yet. Install and initialize. The documented npm path is npm install -g omniroute, followed by omniroute setup. Start the gateway with omniroute. Add only the providers you will test. Use separate test credentials and low spending limits. Do not import every available account into the first experiment. Create one primary and one fallback. Pick a primary model that already passes your eval. Add a fallback with compatible context, tools and output behavior. Point one client at the endpoint. Use the generated API key, the local base URL and the chosen route ID. Keep a direct-provider profile so you can compare results and recover quickly. Run diagnostics and failure drills. Use omniroute doctor, then inject",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "official repository and current setup documentation",
      "url": "https://github.com/diegosouzapw/OmniRoute"
    },
    {
      "@type": "WebPage",
      "name": "architecture documentation",
      "url": "https://github.com/diegosouzapw/OmniRoute/blob/main/docs/architecture/ARCHITECTURE.md"
    },
    {
      "@type": "WebPage",
      "name": "current routing documentation",
      "url": "https://github.com/diegosouzapw/OmniRoute/blob/main/docs/routing/AUTO-COMBO.md"
    },
    {
      "@type": "WebPage",
      "name": "authorization guide",
      "url": "https://github.com/diegosouzapw/OmniRoute/blob/main/docs/architecture/AUTHZ_GUIDE.md"
    },
    {
      "@type": "WebPage",
      "name": "official production environment example",
      "url": "https://github.com/diegosouzapw/OmniRoute/blob/main/docs/ENVIRONMENT.md"
    }
  ],
  "dateModified": "2026-08-09",
  "datePublished": "2026-08-09",
  "description": "OmniRoute is a local-first, open-source AI gateway that presents an OpenAI-compatible endpoint and routes requests across configured model providers. A useful setup starts with one primary model, one proven fallback and an explicit routing objective, then validates response quality, tool-call compatibility, latency, failover and cost per accepted task. For production, pin the version, require API keys, set unique secrets and encrypted storage, restrict CORS, terminate TLS, define log retention and test backups. Use OmniRoute when a team wants hands-on control over several provider connections; choose a simpler managed or custom layer when contractual support, stricter isolation or a smaller operational surface matters more.",
  "headline": "OmniRoute AI Routing: Setup and Production Checklist",
  "image": "https://wavect.io/img/blog/headers/header_omniroute-ai-routing-setup.svg",
  "inLanguage": "en",
  "keywords": "AI Routing, LLM Infrastructure",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/blog/omniroute-ai-routing-setup/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/blog/omniroute-ai-routing-setup/",
  "wordCount": 1842
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/overview/",
      "name": "Blog overview",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/topics/ai-agents/",
      "name": "AI and agents",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/clusters/models-infrastructure/",
      "name": "Models and infrastructure",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/omniroute-ai-routing-setup/",
      "name": "OmniRoute AI Routing Setup: Production Guide 2026 | ",
      "position": 5
    }
  ]
}
```
