# OmniRoute — Dashboard Features Gallery (Nederlands) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇷🇺 [ru](../../../ru/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇷🇺 [ru](../../../ru/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) Visuele handleiding voor elk onderdeel van het OmniRoute-dashboard. > 📅 **Laatst bijgewerkt:** 2026-06-28 — **v3.8.40** --- ## ✨ Hoogtepunten van v3.8.0 De cyclus v3.7.x → v3.8.0 voegde automatische routering zonder configuratie, nieuwe providers, OAuth-flows, meer robuustheid en een veel uitgebreidere CLI-ervaring toe. Hieronder staan de belangrijkste functies — volledige details zijn verderop in het document en in de gekoppelde specificaties te vinden. - 🤖 **Auto Combo / automatische routering zonder configuratie** — gebruik de voorvoegsels `auto/coding`, `auto/fast`, `auto/cheap`, `auto/offline`, `auto/smart`, `auto/lkgp`, `auto/chaos`. Ondersteund door een scoringsengine met 16 factoren en 6 zorgvuldig samengestelde **moduspakketten** (ship-fast, cost-saver, quality-first, offline-friendly, reliability-first, chaos-mode) - 🆕 **Command Code-provider** (#2199) — volwaardige registratie met modelcatalogus en quotumregistratie - 🆕 **Z.AI-provider** — nieuwe provider met gratis niveau en quotumlabels - 🎬 **Uitbreiding van KIE-media** — uitgebreide catalogus, inclusief modellen voor het genereren van video's - 🔐 **Devin-authenticatie** — Desktop importeert een bestaande Devin API-sleutel; de CLI gebruikt lokale `devin auth login`-referenties - 🆓 **8 nieuwe gratis providers** — LLM7, Lepton, UncloseAI, BazaarLink, Completions, Enally, FreeTheAi, Command Code - 🎯 **Manifestbewuste niveauroutering W1–W4** — providermanifesten sturen gewogen niveauselectie aan - 🎨 **Volledige OpenAI-pariteit voor Cursor** — toolaanroepen, streaming en sessiebeheer van begin tot eind - 📊 **Gebruik van het Cursor Pro-abonnement** — quotum- en cyclusgegevens worden weergegeven in het dashboard met providerlimieten - ⚡ **Uitsplitsing per serviceniveau / analyses voor het snelle Codex-niveau** — inzicht in verbruik per niveau - 📌 **Vaste routering per sessie** — Codex-sessies blijven tussen beurten aan hetzelfde account gekoppeld - 🔊 **Verbeteringen aan Inworld TTS** — stemcatalogi, streaming en verbeterde latentie - 🔑 **Headless Kiro-authenticatie** — aanmelden via de lokale SQLite-opslag van `kiro-cli`, zonder browser - 📉 **Bewaking van DeepSeek-quota en -limieten** — dagelijks/maandelijks gebruik beschikbaar via het dashboard - 🔄 **Resetbewuste routeringsstrategie** — combo's geven nu de voorkeur aan accounts waarvan het quotumvenster het snelst wordt gereset - ⏱️ **`fallbackDelayMs`** en **dynamische detectie van toollimieten** — nauwkeurigere fallbacktiming + limieten voor het aantal tools per provider - 🔧 **Degradatie van achtergrondmodus (Responses API)** — valt terug op synchrone modus met een gestructureerde waarschuwing wanneer een upstream geen achtergrondpolling ondersteunt - 🚦 **429-classificatie per provider** + schakeloptie `useUpstream429BreakerHints` — nauwkeuriger breakergedrag op basis van upstream-hints voor snelheidslimieten - 🩺 **Dashboard voor modelcooldowns** — bekijk blokkeringen per model en schakel modellen handmatig opnieuw in via de UI - 🔒 **Dynamische detectie van Linux-certificaten voor MITM** — werkt op Debian/Ubuntu, Fedora/RHEL, Arch en andere distributies - 💻 **Suite met CLI-verbeteringen** — meer dan 20 commando's, waaronder `omniroute providers`, `omniroute combos`, `omniroute doctor`, `omniroute setup` - 🔍 **Ontdekking van Qdrant-embeddingmodellen** — automatische detectie van het model voor vectoropslag - 🔑 **API-sleutels / Bearer-sleutels met het bereik `manage`** — voer beheerbewerkingen programmatisch uit via de API - 🏥 **Gezondheidsanalyses voor combodoelen** + **gestructureerde combobouwer** — gezondheid per doel en een UI-bouwer voor het samenstellen van `(provider, model, connection)`-stappen - 🤝 **GitLab Duo OAuth-provider** — aanmelden met GitLab-inloggegevens - 🧠 **Reasoning Replay Cache** — hybride persistentie van redeneertraces in het geheugen en SQLite 📚 **Gerelateerde documentatie:** [Skills-framework](../frameworks/SKILLS.md) · [Geheugensysteem](../frameworks/MEMORY.md) · [Cloudagents](../frameworks/CLOUD_AGENT.md) · [Webhooks](../frameworks/WEBHOOKS.md) · [Reasoning Replay Cache](../routing/REASONING_REPLAY.md) --- ## 🔌 Providers Beheer verbindingen met AI-providers: OAuth-providers (Claude Code, Codex), API-sleutelproviders (Groq, DeepSeek, OpenRouter) en gratis providers (Qoder, Kiro). Kiro-accounts bieden ook inzicht in het tegoed — resterende credits, totale limiet en verlengingsdatum zijn zichtbaar via Dashboard → Usage. Voor OpenRouter-verbindingen kan per verbinding een `preset` worden opgeslagen onder Advanced Settings. Wanneer deze is ingesteld, verstuurt OmniRoute deze als een veld op het hoogste niveau van het OpenRouter-verzoek, bijvoorbeeld `"preset": "email-copywriter"`, tenzij het clientverzoek al een eigen `preset` bevat. ![Providerdashboard](../screenshots/01-providers.png) --- ## 🎨 Combinaties Maak modelrouteringscombinaties met 19 openbare strategieën: priority, weighted, round-robin, context-relay, fill-first, p2c (power-of-two choices), random, least-used, cost-optimized, reset-aware, reset-window, headroom, strict-random, auto, lkgp (last-known-good-provider), context-optimized, cache-optimized, **fusion** (verdeel verzoeken parallel over een panel van modellen en laat vervolgens één antwoord samenstellen door een beoordelend model) en **pipeline**. Elke combinatie koppelt meerdere modellen aan elkaar met automatische fallback en bevat snelstartsjablonen en gereedheidscontroles. Recente verbeteringen aan combinaties: - **Gestructureerde combinatiebouwer** — maak elke stap door een provider, model en exact account/verbinding te selecteren - **Ondersteuning voor herhaalde providers** — hergebruik dezelfde provider meerdere keren binnen één combinatie, zolang de tuple `(provider, model, connection)` uniek is - **Status van combinatiedoelen** — analyses en statusoverzichten maken nu onderscheid tussen afzonderlijke doelen/stappen binnen combinaties, in plaats van alles samen te voegen tot modelstrings - **Samengestelde laagvolgorde** — `defaultTier -> fallbackTier` beïnvloedt nu de uitvoerings-/fallbackvolgorde tijdens runtime voor combinatiestappen op het hoogste niveau - **Systeempromptsjablonen** — `system_message` van een combinatie ondersteunt server-side placeholders voor `{{MODEL_ID}}`, `{{PROVIDER_ID}}`, `{{ACCOUNT}}` en `{{FINGERPRINT}}`, die vlak vóór verzending worden ingevuld op basis van het daadwerkelijk gekozen routeringsdoel. Alleen toegestane placeholders worden verwerkt en dit gebeurt niet recursief; onbekende placeholders blijven letterlijk staan; lege waarden worden als leeg ingevuld; systeemprompts van clients worden nooit herschreven. `{{FINGERPRINT}}` wordt alleen omgezet voor gratis providers op basis van fingerprints met een vastgezette of automatisch geroteerde fingerprint — elders wordt deze als leeg ingevuld (bijvoorbeeld bij verbindingen met één fingerprint en providers zonder fp). De uitbreiding geldt voor de standaardverzendingslus, round-robin en vastgezette contextcachesessies; fusion, chaos, pipeline en nested-execute-strategieën ondersteunen het uitbreiden van placeholders nog niet. ![Combinatiedashboard](../screenshots/02-combos.png) --- ## 📊 Analyses Uitgebreide gebruiksanalyses met tokenverbruik, kostenramingen, activiteitsheatmaps, grafieken met wekelijkse verdelingen en uitsplitsingen per provider. ![Analysedashboard](../screenshots/03-analytics.png) --- ## 🏥 Systeemstatus Realtimebewaking van uptime, geheugen, versie, latentiepercentielen (p50/p95/p99), cachestatistieken, statussen van circuitbreakers van providers, actieve sessies met quotabewaking en de status van combinatiedoelen. ![Systeemstatusdashboard](../screenshots/04-health.png) --- ## 🔧 Translator Playground Vier modi voor het debuggen van API-vertalingen: **Playground** (formaatconverter), **Chat Tester** (liveverzoeken), **Test Bench** (batchtests) en **Live Monitor** (realtimestream). ![Translator Playground](../screenshots/05-translator.png) --- ## 🎮 Model Playground _(v2.0.9+)_ Test elk model rechtstreeks vanuit het dashboard. Selecteer de provider, het model en het endpoint, schrijf prompts met Monaco Editor, stream reacties in realtime, breek halverwege de stream af en bekijk timingstatistieken. --- ## 🎨 Thema's _(v2.0.5+)_ Aanpasbare kleurthema's voor het volledige dashboard. Kies uit 7 vooraf ingestelde kleuren (koraal, blauw, rood, groen, violet, oranje, cyaan) of maak een aangepast thema door een willekeurige hexkleur te kiezen. Ondersteunt de lichte, donkere en systeemmodus. --- ## ⚙️ Instellingen Uitgebreid instellingenpaneel met **7 tabbladen**: - **Algemeen** — Systeemopslag, back-upbeheer (database exporteren/importeren) - **Uiterlijk** — Themakiezer (donker/licht/systeem), vooraf ingestelde kleurthema's en aangepaste kleuren, zichtbaarheid van statuslogboeken, instellingen voor de zichtbaarheid van zijbalkitems en groepsscheidingen, instellingen voor de zichtbaarheid van endpointtunnels - **AI** — Functies voor de AI-assistent, standaardrouteringspresets (Auto Combo `auto/coding`, `auto/fast`, `auto/cheap`, `auto/smart`), cache voor het opnieuw afspelen van redeneringen en schakelaars voor vaardigheden/geheugen - **Beveiliging** — Beveiliging van API-endpoints, blokkering van aangepaste providers, IP-filtering, sessiegegevens - **Routering** — Modelaliassen, degradatie van achtergrondtaken, manifestbewuste routering op niveau (W1–W4), `fallbackDelayMs`, sticky routering per sessie - **Veerkracht** — Persistentie van snelheidslimieten, afstemming van de circuitbreaker, automatisch uitschakelen van geblokkeerde accounts, bewaking van het verlopen van providers, overdrachtsdrempel voor **Context Relay** en configuratie van het samenvattingsmodel, 429-classificatie per provider en de schakelaar `useUpstream429BreakerHints`, modelcooldowns - **Geavanceerd** — Configuratieoverschrijvingen, audittrail van configuraties, fallback-degradatiemodus, degradatie van de achtergrondmodus voor de Responses API ![Instellingendashboard](../screenshots/06-settings.png) --- ## 🔧 CLI-tools Configuratie met één klik voor AI-programmeertools: Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline, Continue, Cursor en Factory Droid. Biedt geautomatiseerde toepassing/reset van configuraties, verbindingsprofielen en modeltoewijzing. ![Dashboard voor CLI-tools](../screenshots/07-cli-tools.png) --- ## 🤖 CLI-agents _(v2.0.11+)_ Dashboard voor het ontdekken en beheren van CLI-agents. Toont een raster van 16 ingebouwde agents (Codex, Claude, Goose, OpenClaw, Aider, OpenCode, Cline, ForgeCode, Amazon Q, Open Interpreter, Cursor CLI, Warp, **Windsurf**, **Devin CLI**, **Kimi Coding**, **Command Code**) met: - **Installatiestatus** — Geïnstalleerd / Niet gevonden, inclusief versiedetectie - **Protocolbadges** — stdio, HTTP enz. - **Aangepaste agents** — Registreer elke CLI-tool via een formulier (naam, binair bestand, versiecommando, opstartargumenten) - **CLI-vingerafdrukmatching** — Schakelaar per provider om overeen te komen met systeemeigen CLI-aanvraaghandtekeningen, waardoor het risico op blokkering afneemt terwijl het proxy-IP behouden blijft - **Lokale Devin-authenticatie** — Devin CLI gebruikt `devin auth login`; er is geen OAuth-procedure via de browser vereist --- ## 🔗 Contextdoorgifte _(v3.5.5+)_ Een combinatiestrategie die de sessiecontinuïteit behoudt wanneer midden in een gesprek van account wordt gewisseld. Voordat het actieve account uitgeput raakt, genereert OmniRoute op de achtergrond een gestructureerde overdrachtssamenvatting. Nadat het volgende verzoek aan een ander account is toegewezen, wordt de samenvatting als systeembericht ingevoegd, zodat het nieuwe account met de volledige context verdergaat. Configureerbaar via instellingen op combinatieniveau of algemene instellingen: - **Overdrachtsdrempel** — Percentage quotagebruik waarbij het genereren van een samenvatting wordt geactiveerd (standaard 85%) - **Maximaal aantal berichten voor samenvatting** — Hoeveel recente geschiedenis moet worden samengevat - **Samenvattingsmodel** — Optioneel vervangend model voor het genereren van de overdrachtssamenvatting Ondersteunt momenteel Codex-accountrotatie. Zie de [documentatie over contextdoorgifte](../architecture/ARCHITECTURE.md). --- ## 🗜️ Promptcompressie _(v3.7.9+)_ Context & Cache biedt nu speciale pagina's voor Caveman, RTK en compressiecombinaties: - **Caveman** — taalbewuste regelpakketten, voorbeelden, uitvoermodusinstellingen en analyses - **RTK** — opdrachtbewuste compressie voor uitvoer van shell, git, tests, builds, pakketten, Docker, infrastructuur, JSON en stacktraces - **Compressiecombinaties** — benoemde pipelines zoals `rtk -> caveman`, toegewezen aan routeringscombinaties; de standaard gestapelde berekening bereikt gemiddeld `~89%` en bespaart `78-95%` op geschikte context wanneer beide engines worden toegepast - **Herstel van onbewerkte uitvoer** — optionele, geredigeerde RTK-verwijzingen naar onbewerkte uitvoer voor het debuggen van gecomprimeerde fouten Zie de [Compressiehandleiding](../compression/COMPRESSION_GUIDE.md), [RTK-compressie](../compression/RTK_COMPRESSION.md) en [Compressie-engines](../compression/COMPRESSION_ENGINES.md). --- ## 🛡️ Proxyversterking _(v3.5.5+)_ Uitgebreide handhaving van de proxyconfiguratie in de volledige verzoekpipeline: - **Controle van tokenstatus** — OAuth-vernieuwing op de achtergrond bepaalt nu de proxyconfiguratie per verbinding, waardoor fouten worden voorkomen in omgevingen waar een proxy vereist is - **Validatie van API-sleutels** — Validatie van providersleutels (`POST /api/providers/validate`) verloopt via `runWithProxyContext`, met inachtneming van proxyinstellingen op provider- en algemeen niveau - **Oplossing voor undici-dispatcher** — Proxydispatchers gebruiken de eigen fetch-implementatie van undici in plaats van de ingebouwde fetch van Node, waarmee `invalid onRequestStart method`-fouten in Node.js 22 worden opgelost - **Detectie van Node.js-versie** — De aanmeldpagina detecteert proactief incompatibele Node.js-versies (24+) en toont een waarschuwingsbanner met instructies om Node 22 LTS te gebruiken --- ## 📧 Privacybescherming voor e-mailadressen _(v3.5.6+)_ De e-mailadressen van OAuth-accounts worden standaard gemaskeerd (bijvoorbeeld `di*****@g****.com`) om onbedoelde blootstelling te voorkomen bij het delen van schermafbeeldingen of het opnemen van demo's. Gebruik Instellingen → Vormgeving → Zichtbaarheid van e-mailadressen van accounts om volledige e-mailadressen globaal voor providers, combinaties, logboeken, quota en playground-schermen weer te geven of te maskeren. --- ## 👁️ Schakelaar voor modelzichtbaarheid _(v3.5.6+)_ De modellenlijst op de providerpagina bevat nu: - **Zoek-/filterbalk in realtime** — Vind snel specifieke modellen - **Zichtbaarheidsschakelaar per model** (👁-pictogram) — Verborgen modellen worden grijs weergegeven en uitgesloten van de `/v1/models`-catalogus - **Badge met aantal actieve modellen** (`N/M actief`) — Toont in één oogopslag hoeveel modellen zijn ingeschakeld ten opzichte van het totaal --- ## 🔧 OAuth-omgevingsvariabelen herstellen _(v3.6.1+)_ Actie „Omgevingsvariabelen herstellen” met één klik voor OAuth-providers, waarmee ontbrekende omgevingsvariabelen worden hersteld en een defecte authenticatiestatus wordt gerepareerd. Beschikbaar via `Dashboard → Providers → [OAuth-provider] → Omgevingsvariabelen herstellen`. Detecteert en herstelt automatisch: - Ontbrekende OAuth-clientreferenties - Beschadigde vermeldingen in het omgevingsbestand - Opschoning van back-uppaden --- ## 🗑️ Verwijderen / Volledig verwijderen _(v3.6.2+)_ Scripts voor een schone verwijdering voor alle installatiemethoden: | Opdracht | Actie | | ------------------------ | ------------------------------------------------------------------------------------------ | | `npm run uninstall` | Verwijdert de systeemapp, maar **behoudt uw database en configuraties** in `~/.omniroute`. | | `npm run uninstall:full` | Verwijdert de app EN **wist alle configuraties, sleutels en databases permanent**. | --- ## 🖼️ Media _(v2.0.3+)_ Genereer afbeeldingen, video's en muziek vanuit het dashboard. Ondersteunt OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, AnimateDiff, Stable Audio Open en MusicGen. --- ## 📝 Aanvraaglogboeken Realtime registratie van aanvragen met filters op provider, model, account en API-sleutel. Toont statuscodes, tokengebruik, latentie en responsdetails. ![Gebruikslogboeken](../screenshots/08-usage.png) --- ## 🌐 API-eindpunt Uw uniforme API-eindpunt met een overzicht van de mogelijkheden: Chat Completions, Responses API, Embeddings, Image Generation, Reranking, Audio Transcription, Text-to-Speech, Moderations en geregistreerde API-sleutels. Ondersteuning voor Cloudflare Quick Tunnel, Tailscale Funnel, ngrok Tunnel en cloudproxy's is beschikbaar voor externe toegang. ![Eindpuntdashboard](../screenshots/09-endpoint.png) --- ## 🔑 Beheer van API-sleutels Maak API-sleutels aan, beperk hun bereik en trek ze in. Elke sleutel kan worden beperkt tot specifieke modellen/providers, met volledige toegang of alleen-lezenrechten. Visueel sleutelbeheer met gebruiksregistratie. --- ## 📋 Auditlogboek Registratie van beheerdersacties met filters op actietype, actor, doel, IP-adres en tijdstempel. Volledige geschiedenis van beveiligingsgebeurtenissen. --- ## 🖥️ Desktopapplicatie Native Electron-desktopapp voor Windows, macOS en Linux. Voer OmniRoute uit als zelfstandige applicatie met integratie in het systeemvak, offlineondersteuning, automatische updates en installatie met één klik. Belangrijkste functies: - Polling van de servergereedheid (geen leeg scherm bij een koude start) - Systeemvak met poortbeheer - Content Security Policy - Vergrendeling tot één instantie - Automatische update bij opnieuw opstarten - Platformafhankelijke gebruikersinterface (macOS-verkeerslichten, standaardtitelbalk van Windows/Linux) - Versterkte verpakking van Electron-builds — symbolisch gekoppelde `node_modules` in de zelfstandige bundel worden vóór het verpakken gedetecteerd en geweigerd, waardoor runtime-afhankelijkheid van de buildmachine wordt voorkomen (v2.5.5+) - **Gecontroleerd afsluiten** — Electron `before-quit` sluit Next.js netjes af, waardoor vergrendelingen van SQLite WAL-databases worden voorkomen (v3.6.2+) 📖 Raadpleeg [`electron/README.md`](../../electron/README.md) voor de volledige documentatie. --- ## 🌐 V1 WebSocket-bridge _(v3.6.6+)_ OmniRoute ondersteunt nu **OpenAI-compatibele WebSocket-clients** via het `/v1/ws`-upgrade-eindpunt. De aangepaste `scripts/dev/v1-ws-bridge.mjs`-server verpakt Next.js en voert upgrades van WS-verbindingen uit naar volledig bidirectionele streamingsessies. Authenticatie gebruikt dezelfde API-sleutel of sessiecookie als HTTP-aanvragen. Belangrijkste gedragingen: - WS-upgrade wordt door `src/lib/ws/handshake.ts` gevalideerd voordat de verbinding tot stand wordt gebracht - Streams worden netjes beëindigd wanneer de sessie wordt gesloten of er een upstreamfout optreedt - Werkt gelijktijdig naast het bestaande HTTP+SSE-streamingpad --- ## 🔑 Synchronisatietokens en configuratiebundel _(v3.6.6+)_ Toegang vanaf meerdere apparaten en toegang voor externe operators is nu mogelijk via **synchronisatietokens met een beperkt bereik**: - **`POST /api/sync/tokens`** — Geef een nieuw synchronisatietoken uit (met een beperkt bereik en optionele vervaldatum) - **`DELETE /api/sync/tokens/:id`** — Trek een token in - **`GET /api/sync/bundle`** — Download een geversioneerde, door een ETag geïdentificeerde JSON-snapshot van de configuratie (uitsluitend geverifieerd met een synchronisatietoken). Authenticatie-instellingen, zoals het dashboardwachtwoord, worden verwijderd, maar providerreferenties en API-sleutels worden wel opgenomen. Behandel het bestand daarom als een geheim De configuratiebundel wordt opgebouwd door `src/lib/sync/bundle.ts`. Clients vergelijken de `ETag`-responseheader om wijzigingen te detecteren zonder de volledige inhoud opnieuw te downloaden. Via de CLI slaat `omniroute sync bundle --token ` (of `OMNIROUTE_SYNC_TOKEN`) de bundel op in een bestand dat alleen toegankelijk is voor de eigenaar. --- ## 🧠 GLM Thinking-preset _(v3.6.6+)_ **GLM Thinking (`glmt`)** is nu geregistreerd als volwaardige provider: 65 536 maximale uitvoertokens, een denkbudget van 24 576, een standaardtime-out van 900 s, een Claude-compatibele API-indeling en gedeelde gebruikssynchronisatie met de GLM-familie. **Hybride tokentelling** is ook toegevoegd in v3.6.6: wanneer een Claude-compatibele provider `/messages/count_tokens` beschikbaar stelt, roept OmniRoute dit vóór grote verzoeken aan, met een robuuste terugval op schatting. --- ## 🛡️ Veilig uitgaand ophalen & SSRF-beveiliging _(v3.6.6+)_ Alle aanroepen voor providervalidatie en modeldetectie verlopen nu via een tweelaagse beveiliging voor uitgaand verkeer: 1. **URL-beveiliging** (`src/shared/network/outboundUrlGuard.ts`) — Controleert eerst de doelhostnaam of het IP-adres zoals dit letterlijk is opgegeven; in de modus voor uitsluitend openbare adressen zet de wrapper voor veilig ophalen ook de naam om en weigert deze privé-IP-adressen. Standaard blokkeert deze beveiliging cloudmetadata-eindpunten: heel 169.254.0.0/16 plus de bekende metadatahostnamen; `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` blokkeert ook privé- en loopbackhosts; `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` (of de verouderde instelling `OUTBOUND_SSRF_GUARD_ENABLED=false`) schakelt de controles uit. Een waarde die via een schakelaar in het dashboard van een vlag is opgeslagen, heeft voorrang op de bijbehorende variabele, en ingebouwde lokale providers slaan de beveiliging tijdens sleutelvalidatie over. Zie `docs/reference/ENVIRONMENT.md`. 2. **Wrapper voor veilig ophalen** (`src/shared/network/safeOutboundFetch.ts`) — Past de URL-beveiliging toe, normaliseert time-outs en probeert tijdelijke fouten opnieuw met exponentiële back-off. Beveiligingsovertredingen worden weergegeven als `URL_GUARD_BLOCKED` — HTTP 503 via `getSafeOutboundFetchErrorStatus` (400 op de route voor modeldetectie) — en daadwerkelijke SSRF-blokkeringen tijdens validatie worden als `provider.validation.ssrf_blocked`-gebeurtenissen naar het auditlogboek geschreven. --- ## 🔄 Herhaalpogingen met cooldown-ondersteuning _(v3.6.6+)_ Chatverzoeken worden nu **automatisch opnieuw geprobeerd** wanneer een upstreamprovider een modelspecifieke cooldown retourneert. Configureerbaar via `REQUEST_RETRY` (standaard: 2) en `MAX_RETRY_INTERVAL_SEC` (standaard: 30 s). Het verwerken van rate-limit-headers is verbeterd voor `x-ratelimit-reset-requests`, `x-ratelimit-reset-tokens` en `Retry-After` — de cooldownstatus per model is zichtbaar in het Resilience-dashboard. --- ## 📋 Compliance-audit v2 _(v3.6.6+)_ Het auditlogboek is uitgebreid met cursorgebaseerde paginering, verrijking van verzoekcontext (verzoek-ID, useragent, IP), gestructureerde authenticatiegebeurtenissen, CRUD-gebeurtenissen voor providers met verschilcontext en logboekregistratie van door SSRF-beveiliging geblokkeerde validaties. Nieuwe gebeurtenissen worden gegenereerd door `src/lib/compliance/providerAudit.ts`.