docs(readme): re-audit numbers, fix table scroll, refresh contributors (#8243)
Numbers sweep (text + SVGs now consistent): - Routing strategies 18 -> 19 (add cache-optimized row; hero/tier-cascade/ strategies-grid alts + comparison table) - Coding agents 26 -> 33 in promise-pillars alt - "10 engines above" -> 12 (codex-responses) - Re-render the 5 hand-authored SVGs to match the vetted text: readme-hero (268->278, ~1.4B->~1.53B, 18->19), free-tier-budget (~1.4B->~1.53B, ~2.0B->~2.15B, 39->43 pools), promise-pillars + cli-terminal (268->278), compression-pipeline (11->12 engine cells, re-laid out) Contributors: - Headline 350+ -> 500+ (507 real human identities) - Card commit counts via GitHub contributions API: oyi77 213, JxnLexn 58, backryun 53, herjarsa 25; reorder backryun above chirag127 (53 > 46) Table horizontal-scroll fixes: - Screenshots: markdown images -> HTML table with width=400 (was unbounded) - "Every major lab" icons width 98 -> 80; "Free Forever" cards 127 -> 104 - MCP/A2A endpoints: full URLs -> paths (host stated once above) - Trim over-long Headroom cell; comparison "Routing strategies" cell - Video thumbs 280 -> 264 Verbosity/naturalness: - Dedup strategies-grid alt (was relisting the table above) - Trim Quota-Share What's-New bullet; fix negative-parallelism in CLI intro check:docs-counts STRICT green; docs-sync PASS; all SVGs well-formed. Co-authored-by: Probe Test <probe@example.com>
223
README.md
@@ -6,7 +6,7 @@
|
||||
|
||||
# 🚀 OmniRoute — The Free AI Gateway
|
||||
|
||||
<img src="./docs/diagrams/readme-hero.svg" width="100%" alt="OmniRoute — Never stop coding. Every AI tool → 278 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot & Antigravity into FREE Claude / GPT / Gemini with auto-fallback. RTK + Caveman stacked compression saves 15–95% tokens (~89% avg) — never hit limits. 278 AI providers · 90+ free tiers · ~1.53B free tokens/mo · 18 routing strategies · $0 to start."/>
|
||||
<img src="./docs/diagrams/readme-hero.svg" width="100%" alt="OmniRoute — Never stop coding. Every AI tool → 278 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot & Antigravity into FREE Claude / GPT / Gemini with auto-fallback. RTK + Caveman stacked compression saves 15–95% tokens (~89% avg) — never hit limits. 278 AI providers · 90+ free tiers · ~1.53B free tokens/mo · 19 routing strategies · $0 to start."/>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -137,7 +137,7 @@ curl http://localhost:20128/v1/chat/completions \
|
||||
|
||||
- ✅ **`auto` responds immediately** — OmniRoute builds a virtual combo from the built-in keyless free providers and routes to a healthy one, with no setup.
|
||||
- ➕ **Add more providers anytime** — drop in a Claude / GPT / Gemini key (or any of the 278 providers) from the dashboard and they join the `auto` pool automatically.
|
||||
- 🎛️ **Build your own free combos** — chain your free tiers with any of the 18 routing strategies so you never run out of quota.
|
||||
- 🎛️ **Build your own free combos** — chain your free tiers with any of the 19 routing strategies so you never run out of quota.
|
||||
|
||||
<sub>Prefer a specific free backend? Call it directly, e.g. `oc/…` (OpenCode Free) or `felo/…` (Felo). Then graduate to `auto` and let OmniRoute pick.</sub>
|
||||
|
||||
@@ -147,7 +147,7 @@ curl http://localhost:20128/v1/chat/completions \
|
||||
|
||||
</div>
|
||||
|
||||
<img src="./docs/diagrams/promise-pillars.svg" width="100%" alt="The Promise — One endpoint. 278 providers. Never stop building — OmniRoute picks the cheapest one that works. Six pillars: Never hit limits (auto-fallback across 278 providers in milliseconds, zero downtime) · Save up to 95% tokens (RTK + Caveman stacked compression cuts 15–95%, ~89% avg on tool-heavy sessions) · $0 to start (90+ free tiers, 40+ free forever — no card needed) · Every tool works (26 coding agents through one config) · One endpoint (OpenAI ↔ Claude ↔ Gemini ↔ Responses API at /v1) · Production-grade (circuit breakers, TLS stealth, MCP 104 tools, A2A, memory, guardrails, evals — 25,000+ tests)."/>
|
||||
<img src="./docs/diagrams/promise-pillars.svg" width="100%" alt="The Promise — One endpoint. 278 providers. Never stop building — OmniRoute picks the cheapest one that works. Six pillars: Never hit limits (auto-fallback across 278 providers in milliseconds, zero downtime) · Save up to 95% tokens (RTK + Caveman stacked compression cuts 15–95%, ~89% avg on tool-heavy sessions) · $0 to start (90+ free tiers, 40+ free forever — no card needed) · Every tool works (33 coding agents through one config) · One endpoint (OpenAI ↔ Claude ↔ Gemini ↔ Responses API at /v1) · Production-grade (circuit breakers, TLS stealth, MCP 104 tools, A2A, memory, guardrails, evals — 25,000+ tests)."/>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
@@ -162,7 +162,7 @@ curl http://localhost:20128/v1/chat/completions \
|
||||
|
||||
<div align="center">
|
||||
|
||||
<img src="./docs/diagrams/tier-cascade.svg" width="100%" alt="OmniRoute request flow: your IDE or CLI (Claude Code, Cursor, Cline…) calls one local endpoint (http://localhost:20128/v1); the OmniRoute Smart Router (RTK + Caveman compression, 18 routing strategies, circuit breakers, TLS stealth, MCP, A2A, guardrails) auto-falls back across 4 provider tiers — Tier 1 Subscription (Claude Code, Codex, Copilot), quota out? Tier 2 API Key (DeepSeek, Groq, xAI), budget hit? Tier 3 Cheap (GLM $0.5, MiniMax $0.2), budget hit? Tier 4 Free (Kiro, Qoder, Pollinations) — always on."/>
|
||||
<img src="./docs/diagrams/tier-cascade.svg" width="100%" alt="OmniRoute request flow: your IDE or CLI (Claude Code, Cursor, Cline…) calls one local endpoint (http://localhost:20128/v1); the OmniRoute Smart Router (RTK + Caveman compression, 19 routing strategies, circuit breakers, TLS stealth, MCP, A2A, guardrails) auto-falls back across 4 provider tiers — Tier 1 Subscription (Claude Code, Codex, Copilot), quota out? Tier 2 API Key (DeepSeek, Groq, xAI), budget hit? Tier 3 Cheap (GLM $0.5, MiniMax $0.2), budget hit? Tier 4 Free (Kiro, Qoder, Pollinations) — always on."/>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -191,9 +191,9 @@ No combo to create. Set your model to `auto` (or a variant) and OmniRoute builds
|
||||
|
||||
##
|
||||
|
||||
### 🔀 Or build your own — 18 routing strategies
|
||||
### 🔀 Or build your own — 19 routing strategies
|
||||
|
||||
All **18** strategies — mix & match per combo step:
|
||||
All **19** strategies — mix & match per combo step:
|
||||
|
||||
| # | Strategy | What it does |
|
||||
| --- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
@@ -211,12 +211,13 @@ All **18** strategies — mix & match per combo step:
|
||||
| 12 | `reset-aware` | Rank by quota reset time — short windows first 📊 |
|
||||
| 13 | `context-relay` | Hand off context across targets for long conversations 🧠 |
|
||||
| 14 | `context-optimized` | Pick the best fit for the current context size |
|
||||
| 15 | `lkgp` | Last-Known-Good Path — sticky to the last successful target |
|
||||
| 16 | `auto` | 12-factor live scoring across every connection 🤖 |
|
||||
| 17 | `fusion` | Fan out to a panel of models + a judge synthesizes one answer 🧬 |
|
||||
| 18 | `pipeline` | Chain steps — each target's output feeds the next one 🔗 |
|
||||
| 15 | `cache-optimized` | Pin each reusable prompt prefix to the same account — maximize prompt-cache hits 🎯 |
|
||||
| 16 | `lkgp` | Last-Known-Good Path — sticky to the last successful target |
|
||||
| 17 | `auto` | 12-factor live scoring across every connection 🤖 |
|
||||
| 18 | `fusion` | Fan out to a panel of models + a judge synthesizes one answer 🧬 |
|
||||
| 19 | `pipeline` | Chain steps — each target's output feeds the next one 🔗 |
|
||||
|
||||
<img src="./docs/diagrams/strategies-grid.svg" width="100%" alt="All 18 combo routing strategies animated, one tile per strategy showing the flow it executes: priority (drain the 1st, then the next), fill-first (fill a target's quota, then move on), weighted (weighted random), round-robin (cycle in order), p2c (pick 2, take the lighter), least-used (lowest load wins), random (uniform, deduped), strict-random (repeats allowed), cost-optimized (cheapest $ per request), headroom (most remaining quota), reset-window (resets soonest → use it), reset-aware (rank by reset, short first), context-relay (hand off long context), context-optimized (fit the context size), lkgp (sticky to last success), auto (live 12-factor scoring), fusion (panel + judge → one answer), pipeline (each output feeds the next)."/>
|
||||
<img src="./docs/diagrams/strategies-grid.svg" width="100%" alt="All 19 combo routing strategies animated — one tile per strategy: priority, fill-first, weighted, round-robin, p2c, least-used, random, strict-random, cost-optimized, headroom, reset-window, reset-aware, context-relay, context-optimized, cache-optimized, lkgp, auto, fusion, pipeline. See the table above for what each one does."/>
|
||||
|
||||
<sub>The Auto-Combo engine scores every candidate on **12 factors** (health, quota, cost, latency, success rate, freshness…) — see [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).</sub>
|
||||
|
||||
@@ -253,20 +254,20 @@ All **18** strategies — mix & match per combo step:
|
||||
|
||||
</div>
|
||||
|
||||
| Feature | OmniRoute | Other routers |
|
||||
| -------------------------------------- | ------------------------------------------------------------------- | ------------- |
|
||||
| 🌐 Providers | **278** | 20–100 |
|
||||
| 🆓 Free providers | **90+ (40+ free forever)** | 1–5 |
|
||||
| 🔀 Routing strategies | **18** (priority, weighted, cost-optimized, context-relay, fusion…) | 1–3 |
|
||||
| 🗜️ Token compression | **RTK + Caveman stacked (15–95%)** | None / 20–40% |
|
||||
| 🧰 Built-in MCP server | **104 tools, 3 transports, 31 scopes** | Rare |
|
||||
| 🤝 A2A agent protocol | **6 skills, JSON-RPC 2.0** | None |
|
||||
| 🧠 Memory (FTS5 + vector) | **Yes** | Rare |
|
||||
| 🛡️ Guardrails (PII, injection, vision) | **Yes** | Rare |
|
||||
| ☁️ Cloud agents | **Codex, Cursor, Devin, Jules** | None |
|
||||
| 🥷 TLS fingerprint stealth | **JA3/JA4 via wreq-js** | None |
|
||||
| 🖥️ Multi-platform | **Web · Desktop · Termux · PWA** | Web only |
|
||||
| 🌍 i18n | **43 locales** | 0–4 |
|
||||
| Feature | OmniRoute | Other routers |
|
||||
| -------------------------------------- | -------------------------------------- | ------------- |
|
||||
| 🌐 Providers | **278** | 20–100 |
|
||||
| 🆓 Free providers | **90+ (40+ free forever)** | 1–5 |
|
||||
| 🔀 Routing strategies | **19** strategies | 1–3 |
|
||||
| 🗜️ Token compression | **RTK + Caveman stacked (15–95%)** | None / 20–40% |
|
||||
| 🧰 Built-in MCP server | **104 tools, 3 transports, 31 scopes** | Rare |
|
||||
| 🤝 A2A agent protocol | **6 skills, JSON-RPC 2.0** | None |
|
||||
| 🧠 Memory (FTS5 + vector) | **Yes** | Rare |
|
||||
| 🛡️ Guardrails (PII, injection, vision) | **Yes** | Rare |
|
||||
| ☁️ Cloud agents | **Codex, Cursor, Devin, Jules** | None |
|
||||
| 🥷 TLS fingerprint stealth | **JA3/JA4 via wreq-js** | None |
|
||||
| 🖥️ Multi-platform | **Web · Desktop · Termux · PWA** | Web only |
|
||||
| 🌍 i18n | **43 locales** | 0–4 |
|
||||
|
||||
<sub>📊 Detailed comparison vs LiteLLM, OpenRouter & Portkey → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)</sub>
|
||||
|
||||
@@ -282,7 +283,7 @@ All **18** strategies — mix & match per combo step:
|
||||
|
||||
- **🗜️ Compression hardening** — default-on inflation guard, Caveman packs for DE / FR / JA + Chinese (wényán), RTK filters for Gradle & .NET. → [Compression](docs/compression/COMPRESSION_ENGINES.md)
|
||||
- **💸 Honest flat-rate cost** — subscription / coding-plan providers read **$0** in cost analytics; budget, quota & routing keep estimating. → [API Reference](docs/reference/API_REFERENCE.md)
|
||||
- **⚖️ Quota-Share routing** — split load across accounts by _available quota_: DRR scheduling, per-connection concurrency, multi-window buckets, session stickiness. → [Resilience Guide](docs/architecture/RESILIENCE_GUIDE.md)
|
||||
- **⚖️ Quota-Share routing** — split a shared account's quota fairly across pooled keys, work-conserving so idle slices are lent out. → [Resilience Guide](docs/architecture/RESILIENCE_GUIDE.md)
|
||||
- **🤖 One-command CLI/agent setup** — `setup-*` configures 12+ coding tools; `omniroute launch` / `launch-codex` are zero-config. → [CLI Integrations](docs/guides/CLI-INTEGRATIONS.md)
|
||||
- **🛰️ Remote mode** — drive a remote OmniRoute with scoped tokens (`connect` / `contexts` / `tokens`) + an `antigravity` OAuth helper for VPS installs. → [Remote Mode](docs/guides/REMOTE-MODE.md)
|
||||
- **🧭 Smarter auto-routing** — `auto/<category>:<tier>` combos, **Fusion** (model panel + judge), task-aware routing, per-request model / mode / USD-budget overrides. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
|
||||
@@ -363,26 +364,26 @@ All **18** strategies — mix & match per combo step:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="98"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/openai.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/openai.svg" width="40" alt="OpenAI"/></picture><br/><sub>OpenAI</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/claude-color.svg" width="40" alt="Anthropic"/><br/><sub>Anthropic</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/gemini-color.svg" width="40" alt="Gemini"/><br/><sub>Gemini</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/grok.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/grok.svg" width="40" alt="xAI Grok"/></picture><br/><sub>xAI Grok</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/deepseek-color.svg" width="40" alt="DeepSeek"/><br/><sub>DeepSeek</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/mistral-color.svg" width="40" alt="Mistral"/><br/><sub>Mistral</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/qwen-color.svg" width="40" alt="Qwen"/><br/><sub>Qwen</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/meta-color.svg" width="40" alt="Meta Llama"/><br/><sub>Meta Llama</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/groq.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/groq.svg" width="40" alt="Groq"/></picture><br/><sub>Groq</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/openai.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/openai.svg" width="40" alt="OpenAI"/></picture><br/><sub>OpenAI</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/claude-color.svg" width="40" alt="Anthropic"/><br/><sub>Anthropic</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/gemini-color.svg" width="40" alt="Gemini"/><br/><sub>Gemini</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/grok.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/grok.svg" width="40" alt="xAI Grok"/></picture><br/><sub>xAI Grok</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/deepseek-color.svg" width="40" alt="DeepSeek"/><br/><sub>DeepSeek</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/mistral-color.svg" width="40" alt="Mistral"/><br/><sub>Mistral</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/qwen-color.svg" width="40" alt="Qwen"/><br/><sub>Qwen</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/meta-color.svg" width="40" alt="Meta Llama"/><br/><sub>Meta Llama</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/groq.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/groq.svg" width="40" alt="Groq"/></picture><br/><sub>Groq</sub><br/><sub> </sub></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/nvidia-color.svg" width="40" alt="NVIDIA"/><br/><sub>NVIDIA</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/minimax-color.svg" width="40" alt="MiniMax"/><br/><sub>MiniMax</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cohere-color.svg" width="40" alt="Cohere"/><br/><sub>Cohere</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/perplexity-color.svg" width="40" alt="Perplexity"/><br/><sub>Perplexity</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/huggingface-color.svg" width="40" alt="Hugging Face"/><br/><sub>HuggingFace</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/together-color.svg" width="40" alt="Together"/><br/><sub>Together</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/fireworks-color.svg" width="40" alt="Fireworks"/><br/><sub>Fireworks</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cloudflare-color.svg" width="40" alt="Cloudflare"/><br/><sub>Cloudflare</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="98"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/baidu-color.svg" width="40" alt="Baidu"/><br/><sub>Baidu</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/nvidia-color.svg" width="40" alt="NVIDIA"/><br/><sub>NVIDIA</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/minimax-color.svg" width="40" alt="MiniMax"/><br/><sub>MiniMax</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cohere-color.svg" width="40" alt="Cohere"/><br/><sub>Cohere</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/perplexity-color.svg" width="40" alt="Perplexity"/><br/><sub>Perplexity</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/huggingface-color.svg" width="40" alt="Hugging Face"/><br/><sub>HuggingFace</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/together-color.svg" width="40" alt="Together"/><br/><sub>Together</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/fireworks-color.svg" width="40" alt="Fireworks"/><br/><sub>Fireworks</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cloudflare-color.svg" width="40" alt="Cloudflare"/><br/><sub>Cloudflare</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="80"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/baidu-color.svg" width="40" alt="Baidu"/><br/><sub>Baidu</sub><br/><sub> </sub></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -394,13 +395,13 @@ All **18** strategies — mix & match per combo step:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="127"><img src="./public/providers/agentrouter.png" width="44" alt="AgentRouter"/><br/><b>AgentRouter</b><br/><sub>GPT-5, Claude, Gemini<br/>$100 free credits</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="127"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/qoder-color.svg" width="44" alt="Qoder AI"/><br/><b>Qoder AI</b><br/><sub>Kimi-K2, DeepSeek-R1<br/>Unlimited FREE</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="127"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/pollinations.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/pollinations.svg" width="44" alt="Pollinations"/></picture><br/><b>Pollinations</b><br/><sub>GPT-5, Claude, Llama 4<br/>No key needed</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="127"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/longcat-color.svg" width="44" alt="LongCat"/><br/><b>LongCat</b><br/><sub>LongCat-2.0<br/>10M tokens one-time (KYC) 🔑</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="127"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cloudflare-color.svg" width="44" alt="Cloudflare AI"/><br/><b>Cloudflare AI</b><br/><sub>50+ models<br/>10K neurons/day</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="127"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/nvidia-color.svg" width="44" alt="NVIDIA NIM"/><br/><b>NVIDIA NIM</b><br/><sub>129 models<br/>~40 RPM free</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="127"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cerebras-color.svg" width="44" alt="Cerebras"/><br/><b>Cerebras</b><br/><sub>Qwen3 235B<br/>1M tokens/day</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><img src="./public/providers/agentrouter.png" width="44" alt="AgentRouter"/><br/><b>AgentRouter</b><br/><sub>GPT-5, Claude, Gemini<br/>$100 free credits</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/qoder-color.svg" width="44" alt="Qoder AI"/><br/><b>Qoder AI</b><br/><sub>Kimi-K2, DeepSeek-R1<br/>Unlimited FREE</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><picture><source media="(prefers-color-scheme:dark)" srcset="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/pollinations.png"/><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/pollinations.svg" width="44" alt="Pollinations"/></picture><br/><b>Pollinations</b><br/><sub>GPT-5, Claude, Llama 4<br/>No key needed</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/longcat-color.svg" width="44" alt="LongCat"/><br/><b>LongCat</b><br/><sub>LongCat-2.0<br/>10M tokens one-time (KYC) 🔑</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cloudflare-color.svg" width="44" alt="Cloudflare AI"/><br/><b>Cloudflare AI</b><br/><sub>50+ models<br/>10K neurons/day</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/nvidia-color.svg" width="44" alt="NVIDIA NIM"/><br/><b>NVIDIA NIM</b><br/><sub>129 models<br/>~40 RPM free</sub><br/><sub> </sub></td>
|
||||
<td align="center" width="104"><img src="https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cerebras-color.svg" width="44" alt="Cerebras"/><br/><b>Cerebras</b><br/><sub>Qwen3 235B<br/>1M tokens/day</sub><br/><sub> </sub></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -450,7 +451,7 @@ All **18** strategies — mix & match per combo step:
|
||||
|
||||
</div>
|
||||
|
||||
> OmniRoute isn't just a server — it's a **full command-line cockpit** with **80+ commands**, plus open agent protocols so an AI agent can drive OmniRoute **by itself**.
|
||||
> Beyond the server, OmniRoute is a **full command-line cockpit** with **80+ commands**, plus open agent protocols so an AI agent can drive it **on its own**.
|
||||
|
||||
### ⌨️ A real CLI (not just `start`)
|
||||
|
||||
@@ -485,14 +486,14 @@ Tokens are scoped `read` / `write` / `admin`; process-spawning routes stay loopb
|
||||
|
||||
### 🤝 Connect an agent — and it controls OmniRoute itself
|
||||
|
||||
Expose OmniRoute over **MCP** or **A2A** and any capable agent gets the keys to the whole gateway — routing, providers, combos, cache, compression, memory — autonomously.
|
||||
Expose OmniRoute over **MCP** or **A2A** and any capable agent gets the keys to the whole gateway — routing, providers, combos, cache, compression, memory — autonomously. HTTP endpoints below are served under `http://localhost:20128`.
|
||||
|
||||
| Protocol | Endpoint | Use it for |
|
||||
| ------------------ | ----------------------------------------------- | ------------------------------------------------------- |
|
||||
| 🧰 **MCP (stdio)** | `omniroute --mcp` | Plug into Claude Desktop, Cursor, any MCP client |
|
||||
| 🌊 **MCP (HTTP)** | `http://localhost:20128/api/mcp/stream` | Remote MCP — **104 tools**, 31 scopes, full audit trail |
|
||||
| 📡 **MCP (SSE)** | `http://localhost:20128/api/mcp/sse` | Streaming MCP transport |
|
||||
| 🤝 **A2A** | `http://localhost:20128/.well-known/agent.json` | Agent-to-agent, **JSON-RPC 2.0** + SSE, 6 skills |
|
||||
| Protocol | Endpoint | Use it for |
|
||||
| ------------------ | ------------------------- | ------------------------------------------------------- |
|
||||
| 🧰 **MCP (stdio)** | `omniroute --mcp` | Plug into Claude Desktop, Cursor, any MCP client |
|
||||
| 🌊 **MCP (HTTP)** | `/api/mcp/stream` | Remote MCP — **104 tools**, 31 scopes, full audit trail |
|
||||
| 📡 **MCP (SSE)** | `/api/mcp/sse` | Streaming MCP transport |
|
||||
| 🤝 **A2A** | `/.well-known/agent.json` | Agent-to-agent, **JSON-RPC 2.0** + SSE, 6 skills |
|
||||
|
||||
```bash
|
||||
# Give Claude Code the full OmniRoute toolset over MCP:
|
||||
@@ -515,20 +516,20 @@ claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp
|
||||
|
||||
Engines run in pipeline order; each is independently toggleable and configurable per combo:
|
||||
|
||||
| # | Engine | What it does |
|
||||
| --- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
||||
| 1 | **Session-Dedup** | Drops content repeated across turns (content-addressed, cross-turn) |
|
||||
| 2 | **CCR** | Archives large blocks behind retrieve markers, fetched on demand |
|
||||
| 3 | **Lite** | Whitespace + image-URL trimming (latency-light baseline) |
|
||||
| 4 | **RTK** | Smart tool-result filtering, dedup & truncation (command-aware) |
|
||||
| 5 | **Responses Tool Output** | Lossless-first JSON + bounded diagnostic compression for shell/patch/search/build outputs (Responses API) |
|
||||
| 6 | **Headroom** | Lossless tabular compaction of homogeneous JSON arrays, flat or nested (~30%), via a vendored **GCF** codec (spec v3.2) |
|
||||
| 7 | **Relevance** | Extractive sentence scoring against the last user query |
|
||||
| 8 | **Caveman** | Rule-based prose compression (~65–75% on output) |
|
||||
| 9 | **Aggressive** | Summarization + progressive aging of old turns |
|
||||
| 10 | **LLMLingua-2** | ML semantic pruning via MobileBERT ONNX — code-safe, async |
|
||||
| 11 | **Ultra** | Heuristic token pruning with an optional small-model (SLM) tier |
|
||||
| 12 | **OmniGlyph** | Experimental context-as-image encoding routed to Claude Fable 5 (most aggressive; opt-in) |
|
||||
| # | Engine | What it does |
|
||||
| --- | ------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| 1 | **Session-Dedup** | Drops content repeated across turns (content-addressed, cross-turn) |
|
||||
| 2 | **CCR** | Archives large blocks behind retrieve markers, fetched on demand |
|
||||
| 3 | **Lite** | Whitespace + image-URL trimming (latency-light baseline) |
|
||||
| 4 | **RTK** | Smart tool-result filtering, dedup & truncation (command-aware) |
|
||||
| 5 | **Responses Tool Output** | Lossless-first JSON + bounded diagnostic compression for shell/patch/search/build outputs (Responses API) |
|
||||
| 6 | **Headroom** | Lossless tabular compaction of JSON arrays (~30%) via a vendored **GCF** codec |
|
||||
| 7 | **Relevance** | Extractive sentence scoring against the last user query |
|
||||
| 8 | **Caveman** | Rule-based prose compression (~65–75% on output) |
|
||||
| 9 | **Aggressive** | Summarization + progressive aging of old turns |
|
||||
| 10 | **LLMLingua-2** | ML semantic pruning via MobileBERT ONNX — code-safe, async |
|
||||
| 11 | **Ultra** | Heuristic token pruning with an optional small-model (SLM) tier |
|
||||
| 12 | **OmniGlyph** | Experimental context-as-image encoding routed to Claude Fable 5 (most aggressive; opt-in) |
|
||||
|
||||
Code blocks, URLs and structured data are **always preserved** byte-perfect. **One-click presets** combine the engines:
|
||||
|
||||
@@ -575,7 +576,7 @@ Code blocks, URLs, JSON and structured data are **always protected** by the pres
|
||||
|
||||
### 🎚️ Beyond the engines — output styles, the adaptive dial & per-request control
|
||||
|
||||
The 10 engines above shrink what goes **in**. Three more layers shape **how**, **when**, and what comes **out**:
|
||||
The 12 engines above shrink what goes **in**. Three more layers shape **how**, **when**, and what comes **out**:
|
||||
|
||||
- **🪄 Output Styles** _(output-axis steering)_ — inject deterministic, cache-safe response-shaping instructions; combinable, each at `lite` / `full` / `ultra` intensity. Adding a style is a one-line registry entry:
|
||||
- **Terse prose** — drop filler / articles / hedging; keep technical substance exact.
|
||||
@@ -728,15 +729,15 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
<div align="center">
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="280">
|
||||
<td align="center" width="264">
|
||||
<a href="https://www.youtube.com/watch?v=Rxdc36yUyOQ"><img src="https://img.youtube.com/vi/Rxdc36yUyOQ/maxresdefault.jpg" alt="Guia em Português" width="260"/></a><br/>
|
||||
<b>🇧🇷 Português</b><br/><sub>Guia completo</sub>
|
||||
</td>
|
||||
<td align="center" width="280">
|
||||
<td align="center" width="264">
|
||||
<a href="https://www.youtube.com/watch?v=CMzyOiUyEVc"><img src="https://img.youtube.com/vi/CMzyOiUyEVc/maxresdefault.jpg" alt="English Guide" width="260"/></a><br/>
|
||||
<b>🇺🇸 English</b><br/><sub>Complete walkthrough</sub>
|
||||
</td>
|
||||
<td align="center" width="280">
|
||||
<td align="center" width="264">
|
||||
<a href="https://www.youtube.com/watch?v=il_5Ii6v4-Y"><img src="https://img.youtube.com/vi/il_5Ii6v4-Y/maxresdefault.jpg" alt="Руководство" width="260"/></a><br/>
|
||||
<b>🇷🇺 Русский</b><br/><sub>Полное руководство</sub>
|
||||
</td>
|
||||
@@ -757,12 +758,26 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
|
||||
</div>
|
||||
|
||||
| Page | Screenshot | Page | Screenshot |
|
||||
| ---------- | ------------------------------------------------- | ---------- | --------------------------------------------- |
|
||||
| Providers |  | Combos |  |
|
||||
| Analytics |  | Health |  |
|
||||
| Translator |  | Settings |  |
|
||||
| CLI Tools |  | Usage Logs |  |
|
||||
<div align="center">
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><b>Providers</b><br/><img src="docs/screenshots/01-providers.png" width="400" alt="Providers"/></td>
|
||||
<td align="center"><b>Combos</b><br/><img src="docs/screenshots/02-combos.png" width="400" alt="Combos"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><b>Analytics</b><br/><img src="docs/screenshots/03-analytics.png" width="400" alt="Analytics"/></td>
|
||||
<td align="center"><b>Health</b><br/><img src="docs/screenshots/04-health.png" width="400" alt="Health"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><b>Translator</b><br/><img src="docs/screenshots/05-translator.png" width="400" alt="Translator"/></td>
|
||||
<td align="center"><b>Settings</b><br/><img src="docs/screenshots/06-settings.png" width="400" alt="Settings"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><b>CLI Tools</b><br/><img src="docs/screenshots/07-cli-tools.png" width="400" alt="CLI Tools"/></td>
|
||||
<td align="center"><b>Usage Logs</b><br/><img src="docs/screenshots/08-usage.png" width="400" alt="Usage Logs"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -866,15 +881,15 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
|
||||
### 📋 Project & Quality
|
||||
|
||||
| Document | Description |
|
||||
| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
|
||||
| [Branching & Release Model](docs/ops/BRANCHING_MODEL.md) | Where PRs target (`release/*`), what `main` and tags mean |
|
||||
| [Changelog](CHANGELOG.md) | Full per-version release history |
|
||||
| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
|
||||
| [i18n Guide](docs/guides/I18N.md) | 40+ language support, translation workflow, RTL |
|
||||
| [Release Checklist](docs/ops/RELEASE_CHECKLIST.md) | Pre-release validation steps |
|
||||
| [Coverage Plan](docs/ops/COVERAGE_PLAN.md) | Test coverage strategy and 25,000+ test suite |
|
||||
| Document | Description |
|
||||
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [Contributing](CONTRIBUTING.md) | Development setup and guidelines |
|
||||
| [Branching & Release Model](docs/ops/BRANCHING_MODEL.md) | Where PRs target (`release/*`), what `main` and tags mean |
|
||||
| [Changelog](CHANGELOG.md) | Full per-version release history |
|
||||
| [Security Policy](SECURITY.md) | Vulnerability reporting and security practices |
|
||||
| [i18n Guide](docs/guides/I18N.md) | 40+ language support, translation workflow, RTL |
|
||||
| [Release Checklist](docs/ops/RELEASE_CHECKLIST.md) | Pre-release validation steps |
|
||||
| [Coverage Plan](docs/ops/COVERAGE_PLAN.md) | Test coverage strategy and 25,000+ test suite |
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -891,7 +906,7 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
<img src="https://github.com/oyi77.png" width="40" style="border-radius:50%" alt="oyi77"/><br/>
|
||||
<b>oyi77</b>
|
||||
</a><br/>
|
||||
<sub>🥇 207 commits • +114K lines</sub><br/>
|
||||
<sub>🥇 213 commits • +114K lines</sub><br/>
|
||||
<sub>Analytics engine, SQL aggregations,<br/>proxy marketplace, test coverage</sub>
|
||||
</td>
|
||||
<td align="center" width="160">
|
||||
@@ -923,11 +938,19 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
<img src="https://github.com/JxnLexn.png" width="40" style="border-radius:50%" alt="Jan Leon"/><br/>
|
||||
<b>Jan Leon</b>
|
||||
</a><br/>
|
||||
<sub>🏅 52 commits • +22K lines</sub><br/>
|
||||
<sub>🏅 58 commits • +22K lines</sub><br/>
|
||||
<sub>Reasoning-effort routing, proxy controls,<br/>quota visibility, Live Zone compression</sub>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="160">
|
||||
<a href="https://github.com/backryun">
|
||||
<img src="https://github.com/backryun.png" width="40" style="border-radius:50%" alt="backryun"/><br/>
|
||||
<b>backryun</b>
|
||||
</a><br/>
|
||||
<sub>🏅 53 commits • +70K lines</sub><br/>
|
||||
<sub>Provider catalog curation — Perplexity, Kimi,<br/>Cerebras, Copilot, LMArena refreshes</sub>
|
||||
</td>
|
||||
<td align="center" width="160">
|
||||
<a href="https://github.com/chirag127">
|
||||
<img src="https://github.com/chirag127.png" width="40" style="border-radius:50%" alt="Chirag Singhal"/><br/>
|
||||
@@ -936,14 +959,6 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
<sub>🏅 46 commits • +4.8K lines</sub><br/>
|
||||
<sub>Error sanitization, MITM prefill fix,<br/>fusion judge, breaker/429 correctness</sub>
|
||||
</td>
|
||||
<td align="center" width="160">
|
||||
<a href="https://github.com/backryun">
|
||||
<img src="https://github.com/backryun.png" width="40" style="border-radius:50%" alt="backryun"/><br/>
|
||||
<b>backryun</b>
|
||||
</a><br/>
|
||||
<sub>🏅 43 commits • +70K lines</sub><br/>
|
||||
<sub>Provider catalog curation — Perplexity, Kimi,<br/>Cerebras, Copilot, LMArena refreshes</sub>
|
||||
</td>
|
||||
<td align="center" width="160">
|
||||
<a href="https://github.com/kfiramar">
|
||||
<img src="https://github.com/kfiramar.png" width="40" style="border-radius:50%" alt="kfiramar"/><br/>
|
||||
@@ -965,7 +980,7 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
<img src="https://github.com/herjarsa.png" width="40" style="border-radius:50%" alt="Hernan J. Ardila"/><br/>
|
||||
<b>Hernan J. Ardila</b>
|
||||
</a><br/>
|
||||
<sub>🏅 22 commits • +174K lines</sub><br/>
|
||||
<sub>🏅 25 commits • +174K lines</sub><br/>
|
||||
<sub>Zero-latency combos, vision-bridge auto-routing,<br/>catalog context-length, resilience 429 hints</sub>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -981,7 +996,7 @@ same process on one port, so there is no separate CLI-only package today.
|
||||
|
||||
<div align="center">
|
||||
|
||||
## 👥 350+ Contributors
|
||||
## 👥 500+ Contributors
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<svg viewBox="0 0 1200 350" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Animated terminal demoing the OmniRoute CLI: omniroute providers list (268 providers registered, anthropic, codex, glm, kimi shown active), omniroute combo list (always-on priority, cost-saver, fusion-panel, context-relay) and omniroute health (healthy, 18412 requests in 24h, p95 412ms, circuit breakers 24 closed, 1 half-open, 0 open), cycling over the 80+ command surface: providers, oauth, keys, combo, nodes, models, cache, compression, cost, usage, quota, health, resilience, telemetry, logs, audit, mcp, a2a, cloud, memory, skills, eval, doctor, repl, tunnel, backup, sync, webhooks, policy, pricing, translator, simulate and more.">
|
||||
<svg viewBox="0 0 1200 350" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Animated terminal demoing the OmniRoute CLI: omniroute providers list (278 providers registered, anthropic, codex, glm, kimi shown active), omniroute combo list (always-on priority, cost-saver, fusion-panel, context-relay) and omniroute health (healthy, 18412 requests in 24h, p95 412ms, circuit breakers 24 closed, 1 half-open, 0 open), cycling over the 80+ command surface: providers, oauth, keys, combo, nodes, models, cache, compression, cost, usage, quota, health, resilience, telemetry, logs, audit, mcp, a2a, cloud, memory, skills, eval, doctor, repl, tunnel, backup, sync, webhooks, policy, pricing, translator, simulate and more.">
|
||||
<desc>Compact animated terminal cycling three real OmniRoute CLI commands with a typewriter effect and a scrolling subcommand ticker; the first frame shows the completed providers-list screen.</desc>
|
||||
<defs><clipPath id="tickerClip"><rect x="12" y="304" width="1176" height="40"/></clipPath><clipPath id="tw0"><rect x="64" y="46" height="26" width="0"><animate attributeName="width" calcMode="discrete" values="0;31;61;92;122;153;184;214;245;245" keyTimes="0;0.012;0.018;0.024;0.030;0.036;0.042;0.048;0.054;1" dur="18s" repeatCount="indefinite"/></rect></clipPath><clipPath id="tw1"><rect x="64" y="46" height="26" width="0"><animate attributeName="width" calcMode="discrete" values="0;26;51;76;102;128;153;178;204;204" keyTimes="0;0.345;0.351;0.357;0.363;0.369;0.375;0.381;0.387;1" dur="18s" repeatCount="indefinite"/></rect></clipPath><clipPath id="tw2"><rect x="64" y="46" height="26" width="0"><animate attributeName="width" calcMode="discrete" values="0;20;41;61;82;102;122;143;163;163" keyTimes="0;0.678;0.684;0.690;0.696;0.702;0.708;0.714;0.720;1" dur="18s" repeatCount="indefinite"/></rect></clipPath></defs>
|
||||
<rect width="1200" height="350" fill="#0d1117"/>
|
||||
@@ -32,7 +32,7 @@
|
||||
<animate attributeName="x" calcMode="discrete" values="64;84;105;125;146;166;186;207;227;227" keyTimes="0;0.678;0.684;0.690;0.696;0.702;0.708;0.714;0.720;1" dur="18s" repeatCount="indefinite"/>
|
||||
<animate attributeName="opacity" values="0;0;1;0.2;1;0.2;1;0;0" keyTimes="0;0.677;0.678;0.688;0.698;0.708;0.718;0.74;1" dur="18s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="40" y="100" font-weight="700" fill="#38bdf8" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.711;0.713" dur="18s" repeatCount="indefinite"/>OmniRoute Health</text><text x="40" y="128" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.719;0.721" dur="18s" repeatCount="indefinite"/>  Status: <tspan fill='#22c55e'>healthy</tspan>   Uptime: 4d 12h 33m</text><text x="40" y="154" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.727;0.729" dur="18s" repeatCount="indefinite"/>  Requests (24h): 18,412   p95: 412ms</text><text x="40" y="180" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.735;0.737" dur="18s" repeatCount="indefinite"/>  Breakers: <tspan fill='#22c55e'>● 24 closed</tspan>  <tspan fill='#f59e0b'>◒ 1 half-open</tspan>  <tspan fill='#ef4444'>○ 0 open</tspan></text><text x="40" y="206" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.743;0.745" dur="18s" repeatCount="indefinite"/>  Providers: 268 registered   90+ free tiers</text><text x="40" y="232" fill="#71717a" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.751;0.753" dur="18s" repeatCount="indefinite"/>… live: /dashboard · omniroute status</text>
|
||||
<text x="40" y="100" font-weight="700" fill="#38bdf8" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.711;0.713" dur="18s" repeatCount="indefinite"/>OmniRoute Health</text><text x="40" y="128" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.719;0.721" dur="18s" repeatCount="indefinite"/>  Status: <tspan fill='#22c55e'>healthy</tspan>   Uptime: 4d 12h 33m</text><text x="40" y="154" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.727;0.729" dur="18s" repeatCount="indefinite"/>  Requests (24h): 18,412   p95: 412ms</text><text x="40" y="180" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.735;0.737" dur="18s" repeatCount="indefinite"/>  Breakers: <tspan fill='#22c55e'>● 24 closed</tspan>  <tspan fill='#f59e0b'>◒ 1 half-open</tspan>  <tspan fill='#ef4444'>○ 0 open</tspan></text><text x="40" y="206" fill="#a1a1aa" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.743;0.745" dur="18s" repeatCount="indefinite"/>  Providers: 278 registered   90+ free tiers</text><text x="40" y="232" fill="#71717a" opacity="0"><animate attributeName="opacity" calcMode="discrete" values="0;0;1" keyTimes="0;0.751;0.753" dur="18s" repeatCount="indefinite"/>… live: /dashboard · omniroute status</text>
|
||||
</g>
|
||||
<path d="M 0 300 L 1200 300" stroke="#ffffff" stroke-opacity="0.08" stroke-width="1"/>
|
||||
<g clip-path="url(#tickerClip)"><g font-family="Consolas, 'Courier New', monospace" font-size="14" fill="#71717a">
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -1,4 +1,4 @@
|
||||
<svg viewBox="0 0 1200 460" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniRoute compression pipeline: a client request of 10,000 tokens passes through 11 stacked engines — Session-Dedup, CCR, RTK, Headroom, Relevance, Caveman, LLMLingua-2, Omniglyph, Lite, Aggressive, Ultra — and reaches the provider at about 1,080 tokens, up to 95% saved. The default stacked combo runs RTK then Caveman (average 89.2%, range 78.4–94.6%). Code, URLs and JSON are always preserved byte-perfect.">
|
||||
<svg viewBox="0 0 1200 460" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniRoute compression pipeline: a client request of 10,000 tokens passes through 12 stacked engines — Session-Dedup, CCR, Lite, RTK, Responses Tool Output, Headroom, Relevance, Caveman, Aggressive, LLMLingua-2, Ultra, OmniGlyph — and reaches the provider at about 1,080 tokens, up to 95% saved. The default stacked combo runs RTK then Caveman (average 89.2%, range 78.4–94.6%). Code, URLs and JSON are always preserved byte-perfect.">
|
||||
<defs>
|
||||
<pattern id="gridPaperZ" width="32" height="32" patternUnits="userSpaceOnUse">
|
||||
<path d="M 32 0 L 0 0 0 32" fill="none" stroke="#ffffff" stroke-opacity="0.06" stroke-width="1"/>
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- ═══ Pipeline container ═══ -->
|
||||
<rect x="285" y="112" width="630" height="230" rx="14" fill="#161b22" stroke="#8b5cf6" stroke-width="1.2" stroke-opacity="0.4"/>
|
||||
<text x="600" y="140" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="10.5" letter-spacing="2.5" font-weight="700" fill="url(#gradBrandZ)">OMNIROUTE COMPRESSION — 11 ENGINES</text>
|
||||
<text x="600" y="140" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="10.5" letter-spacing="2.5" font-weight="700" fill="url(#gradBrandZ)">OMNIROUTE COMPRESSION — 12 ENGINES</text>
|
||||
<linearGradient id="gradBrandZ" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#e54d5e"/>
|
||||
<stop offset="100%" stop-color="#a855f7"/>
|
||||
@@ -77,114 +77,124 @@
|
||||
</g>
|
||||
|
||||
|
||||
<!-- 11 engine cells -->
|
||||
<!-- 12 engine cells -->
|
||||
<g font-family="Consolas, 'Courier New', monospace" text-anchor="middle">
|
||||
<!-- 1 Session-Dedup -->
|
||||
<g transform="translate(296,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<g transform="translate(302,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.10;0.13;0.17;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">1</text>
|
||||
<text x="25.5" y="56" font-size="8" fill="#a1a1aa">Session</text>
|
||||
<text x="25.5" y="68" font-size="8" fill="#a1a1aa">Dedup</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">1</text>
|
||||
<text x="23" y="56" font-size="8" fill="#a1a1aa">Session</text>
|
||||
<text x="23" y="68" font-size="8" fill="#a1a1aa">Dedup</text>
|
||||
</g>
|
||||
<!-- 2 CCR -->
|
||||
<g transform="translate(352,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.145;0.175;0.215;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">2</text>
|
||||
<text x="25.5" y="62" font-size="8" fill="#a1a1aa">CCR</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">2</text>
|
||||
<text x="23" y="62" font-size="8" fill="#a1a1aa">CCR</text>
|
||||
</g>
|
||||
<!-- 3 RTK (default stack) -->
|
||||
<g transform="translate(408,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#e54d5e" stroke-opacity="0.55" stroke-width="1.2"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#e54d5e" stroke-width="1.6" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;1;0;0" keyTimes="0;0.19;0.22;0.26;1" dur="8s" repeatCount="indefinite"/>
|
||||
<!-- 3 Lite -->
|
||||
<g transform="translate(402,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.19;0.22;0.26;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#e54d5e">3</text>
|
||||
<text x="25.5" y="62" font-size="8.5" font-weight="700" fill="#F7F6FC">RTK</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">3</text>
|
||||
<text x="23" y="62" font-size="8" fill="#a1a1aa">Lite</text>
|
||||
</g>
|
||||
<!-- 4 Headroom -->
|
||||
<g transform="translate(464,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.235;0.265;0.305;1" dur="8s" repeatCount="indefinite"/>
|
||||
<!-- 4 RTK (default stack) -->
|
||||
<g transform="translate(452,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#e54d5e" stroke-opacity="0.55" stroke-width="1.2"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#e54d5e" stroke-width="1.6" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;1;0;0" keyTimes="0;0.235;0.265;0.305;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">4</text>
|
||||
<text x="25.5" y="62" font-size="8" fill="#a1a1aa">Headroom</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#e54d5e">4</text>
|
||||
<text x="23" y="62" font-size="8.5" font-weight="700" fill="#F7F6FC">RTK</text>
|
||||
</g>
|
||||
<!-- 5 Relevance -->
|
||||
<g transform="translate(520,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.275;0.305;0.345;1" dur="8s" repeatCount="indefinite"/>
|
||||
<!-- 5 Responses Tool Output -->
|
||||
<g transform="translate(502,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.28;0.31;0.35;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">5</text>
|
||||
<text x="25.5" y="62" font-size="8" fill="#a1a1aa">Relevance</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">5</text>
|
||||
<text x="23" y="56" font-size="7.5" fill="#a1a1aa">Responses</text>
|
||||
<text x="23" y="68" font-size="7.5" fill="#a1a1aa">Tool Out</text>
|
||||
</g>
|
||||
<!-- 6 Caveman (default stack) -->
|
||||
<g transform="translate(576,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#e54d5e" stroke-opacity="0.55" stroke-width="1.2"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#e54d5e" stroke-width="1.6" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;1;0;0" keyTimes="0;0.325;0.355;0.395;1" dur="8s" repeatCount="indefinite"/>
|
||||
<!-- 6 Headroom -->
|
||||
<g transform="translate(552,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.325;0.355;0.395;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#e54d5e">6</text>
|
||||
<text x="25.5" y="62" font-size="8.5" font-weight="700" fill="#F7F6FC">Caveman</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">6</text>
|
||||
<text x="23" y="62" font-size="7.5" fill="#a1a1aa">Headroom</text>
|
||||
</g>
|
||||
<!-- 7 LLMLingua-2 -->
|
||||
<g transform="translate(632,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.375;0.405;0.445;1" dur="8s" repeatCount="indefinite"/>
|
||||
<!-- 7 Relevance -->
|
||||
<g transform="translate(602,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.37;0.40;0.44;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">7</text>
|
||||
<text x="25.5" y="56" font-size="8" fill="#a1a1aa">LLM</text>
|
||||
<text x="25.5" y="68" font-size="8" fill="#a1a1aa">Lingua-2</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">7</text>
|
||||
<text x="23" y="62" font-size="7.5" fill="#a1a1aa">Relevance</text>
|
||||
</g>
|
||||
<!-- 8 Omniglyph -->
|
||||
<g transform="translate(688,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.415;0.445;0.485;1" dur="8s" repeatCount="indefinite"/>
|
||||
<!-- 8 Caveman (default stack) -->
|
||||
<g transform="translate(652,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#e54d5e" stroke-opacity="0.55" stroke-width="1.2"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#e54d5e" stroke-width="1.6" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;1;0;0" keyTimes="0;0.415;0.445;0.485;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">8</text>
|
||||
<text x="25.5" y="62" font-size="7.5" fill="#a1a1aa">Omniglyph</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#e54d5e">8</text>
|
||||
<text x="23" y="62" font-size="8" font-weight="700" fill="#F7F6FC">Caveman</text>
|
||||
</g>
|
||||
<!-- 9 Lite -->
|
||||
<g transform="translate(744,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<!-- 9 Aggressive -->
|
||||
<g transform="translate(702,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.46;0.49;0.53;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">9</text>
|
||||
<text x="25.5" y="62" font-size="8" fill="#a1a1aa">Lite</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">9</text>
|
||||
<text x="23" y="62" font-size="7.5" fill="#a1a1aa">Aggressive</text>
|
||||
</g>
|
||||
<!-- 10 Aggressive -->
|
||||
<g transform="translate(800,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<!-- 10 LLMLingua-2 -->
|
||||
<g transform="translate(752,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.50;0.53;0.57;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">10</text>
|
||||
<text x="25.5" y="62" font-size="7.5" fill="#a1a1aa">Aggressive</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">10</text>
|
||||
<text x="23" y="56" font-size="8" fill="#a1a1aa">LLM</text>
|
||||
<text x="23" y="68" font-size="8" fill="#a1a1aa">Lingua-2</text>
|
||||
</g>
|
||||
<!-- 11 Ultra -->
|
||||
<g transform="translate(856,168)">
|
||||
<rect width="51" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="51" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<g transform="translate(802,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.54;0.57;0.61;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="25.5" y="30" font-size="13" font-weight="800" fill="#71717a">11</text>
|
||||
<text x="25.5" y="62" font-size="8" fill="#a1a1aa">Ultra</text>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">11</text>
|
||||
<text x="23" y="62" font-size="8" fill="#a1a1aa">Ultra</text>
|
||||
</g>
|
||||
<!-- 12 OmniGlyph -->
|
||||
<g transform="translate(852,168)">
|
||||
<rect width="46" height="86" rx="8" fill="#1c2230" stroke="#ffffff" stroke-opacity="0.08"/>
|
||||
<rect width="46" height="86" rx="8" fill="none" stroke="#8b5cf6" stroke-width="1.4" stroke-opacity="0">
|
||||
<animate attributeName="stroke-opacity" values="0;0;0.9;0;0" keyTimes="0;0.575;0.605;0.645;1" dur="8s" repeatCount="indefinite"/>
|
||||
</rect>
|
||||
<text x="23" y="30" font-size="13" font-weight="800" fill="#71717a">12</text>
|
||||
<text x="23" y="62" font-size="7.5" fill="#a1a1aa">OmniGlyph</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- default stack bracket -->
|
||||
<path d="M 433.5,262 L 433.5,272 L 601.5,272 L 601.5,262" fill="none" stroke="#e54d5e" stroke-width="1" stroke-opacity="0.5"/>
|
||||
<text x="517.5" y="288" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" fill="#e54d5e">default stack: RTK → Caveman</text>
|
||||
<path d="M 475,262 L 475,272 L 675,272 L 675,262" fill="none" stroke="#e54d5e" stroke-width="1" stroke-opacity="0.5"/>
|
||||
<text x="575" y="288" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" fill="#e54d5e">default stack: RTK → Caveman</text>
|
||||
|
||||
<!-- preservation note -->
|
||||
<text x="600" y="326" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" fill="#22c55e" opacity="0.85">{ } code · URLs · JSON — always preserved byte-perfect</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
@@ -1,4 +1,4 @@
|
||||
<svg viewBox="0 0 1200 842" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniRoute free-tier budget: about 1.4 billion free tokens per month steady, up to about 2.0 billion in your first month with signup credits, aggregated from the documented free tiers of 39 provider pools and 460+ models behind one endpoint, live on /dashboard/free-tiers. Honest pool-deduped math: each shared free pool is counted once — counting every rate limit 24/7 would read about 10B, which we don't publish; 15 providers carry a ToS flag so you decide. Budget bar of the 19 countable free pools with per-model breakdown: Mistral Large 3 1B, GPT-4o mini 150M, Gemini 2.5 Flash 60M, GLM 4.7 30M, Llama 3.3 70B 30M, Grok-3 24M, DeepSeek V4 Pro 20M, GPT-4.1 18M, Llama 4 Scout 15M, GPT-4o 7M, MiniMax-M2.7 6M, Arcee Trinity 5M, and more. First month adds one-time signup credits of about 626M (vertex 300M, agentrouter 200M, predibase 25M, together 25M, glm-cn 20M, doubao 15M, ai21 10M, longcat 10M, deepseek 5M, hyperbolic 5M, nscale 5M). Plus the un-countable: permanently-free no-token-cap providers (SiliconFlow, Z.AI GLM-Flash, Kilo, OpenCode Zen, baidu and more) and a $10 OpenRouter top-up unlocking +24M per month, surfaced separately so they never inflate the headline. Live used/remaining and per-model breakdown on the dashboard.">
|
||||
<svg viewBox="0 0 1200 842" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniRoute free-tier budget: about 1.53 billion free tokens per month steady, up to about 2.15 billion in your first month with signup credits, aggregated from the documented free tiers of 43 provider pools and 460+ models behind one endpoint, live on /dashboard/free-tiers. Honest pool-deduped math: each shared free pool is counted once — counting every rate limit 24/7 would read about 10B, which we don't publish; 15 providers carry a ToS flag so you decide. Budget bar of the 19 countable free pools with per-model breakdown: Mistral Large 3 1B, GPT-4o mini 150M, Gemini 2.5 Flash 60M, GLM 4.7 30M, Llama 3.3 70B 30M, Grok-3 24M, DeepSeek V4 Pro 20M, GPT-4.1 18M, Llama 4 Scout 15M, GPT-4o 7M, MiniMax-M2.7 6M, Arcee Trinity 5M, and more. First month adds one-time signup credits of about 626M (vertex 300M, agentrouter 200M, predibase 25M, together 25M, glm-cn 20M, doubao 15M, ai21 10M, longcat 10M, deepseek 5M, hyperbolic 5M, nscale 5M). Plus the un-countable: permanently-free no-token-cap providers (SiliconFlow, Z.AI GLM-Flash, Kilo, OpenCode Zen, baidu and more) and a $10 OpenRouter top-up unlocking +24M per month, surfaced separately so they never inflate the headline. Live used/remaining and per-model breakdown on the dashboard.">
|
||||
<defs>
|
||||
<pattern id="gridPaperF" width="32" height="32" patternUnits="userSpaceOnUse">
|
||||
<path d="M 32 0 L 0 0 0 32" fill="none" stroke="#ffffff" stroke-opacity="0.06" stroke-width="1"/>
|
||||
@@ -60,10 +60,10 @@
|
||||
<animate attributeName="opacity" values="0;1;1;0" dur="2.4s" begin="1.6s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
</g>
|
||||
<text x="60" y="228" font-family="Consolas, 'Courier New', monospace" font-size="104" font-weight="800" fill="url(#gradBrandF)">~1.4B</text>
|
||||
<text x="60" y="228" font-family="Consolas, 'Courier New', monospace" font-size="104" font-weight="800" fill="url(#gradBrandF)">~1.53B</text>
|
||||
<text x="62" y="266" font-family="Consolas, 'Courier New', monospace" font-size="15" letter-spacing="3" font-weight="700" fill="#a1a1aa">FREE TOKENS / MONTH · <tspan fill="#22c55e">STEADY</tspan></text>
|
||||
<text x="62" y="298" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="16" fill="#F7F6FC">up to <tspan font-weight="800" fill="#22c55e">~2.0B</tspan> in your first month — signup credits</text>
|
||||
<text x="62" y="326" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#71717a">documented free tiers · <tspan fill="#8b5cf6">39 provider pools</tspan> · <tspan fill="#8b5cf6">460+ models</tspan> · one endpoint</text>
|
||||
<text x="62" y="298" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="16" fill="#F7F6FC">up to <tspan font-weight="800" fill="#22c55e">~2.15B</tspan> in your first month — signup credits</text>
|
||||
<text x="62" y="326" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#71717a">documented free tiers · <tspan fill="#8b5cf6">43 provider pools</tspan> · <tspan fill="#8b5cf6">460+ models</tspan> · one endpoint</text>
|
||||
|
||||
<!-- ═══ Panel · The honest math ═══ -->
|
||||
<rect x="680" y="84" width="460" height="216" rx="14" fill="#161b22" stroke="#ffffff" stroke-opacity="0.08" stroke-width="1"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
</line>
|
||||
<text x="836" y="156" font-family="Consolas, 'Courier New', monospace" font-size="11.5" fill="#a1a1aa">every rate limit · 24/7</text>
|
||||
<text x="836" y="176" font-family="Consolas, 'Courier New', monospace" font-size="11.5" fill="#ef4444" opacity="0.85">we don't publish that</text>
|
||||
<text x="704" y="240" font-family="Consolas, 'Courier New', monospace" font-size="34" font-weight="800" fill="#22c55e">~1.4B</text>
|
||||
<text x="704" y="240" font-family="Consolas, 'Courier New', monospace" font-size="34" font-weight="800" fill="#22c55e">~1.53B</text>
|
||||
<text x="836" y="224" font-family="Consolas, 'Courier New', monospace" font-size="11.5" fill="#a1a1aa">each shared free pool</text>
|
||||
<text x="836" y="244" font-family="Consolas, 'Courier New', monospace" font-size="11.5" fill="#22c55e">counted once ✓</text>
|
||||
<text x="704" y="280" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#f59e0b"><tspan font-weight="800">15 providers</tspan> ToS-flagged <tspan fill="#71717a">— we flag it · you decide</tspan></text>
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -1,4 +1,4 @@
|
||||
<svg viewBox="0 0 1200 540" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="The OmniRoute promise: one endpoint, 268 providers — never stop building, OmniRoute picks the cheapest one that works. Six pillars. Never hit limits: auto-fallback across 268 providers in milliseconds, quota out means the next provider takes over with zero downtime. Save up to 95 percent of tokens: RTK plus Caveman stacked compression cuts 15 to 95 percent of eligible tokens, about 89 percent average on tool-heavy sessions. Zero dollars to start: 90+ providers with a free tier, 40+ free forever — Qoder, Pollinations, Cloudflare, SiliconFlow — no card needed. Every tool works: 33 coding agents including Claude Code, Codex, Cursor, Cline, Copilot and Antigravity through one config. One endpoint: OpenAI, Claude, Gemini and Responses API translation — point any tool at /v1 and it just works. Production-grade: circuit breakers, TLS stealth, MCP with 104 tools, A2A, memory, guardrails, evals — 25,000+ tests.">
|
||||
<svg viewBox="0 0 1200 540" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="The OmniRoute promise: one endpoint, 278 providers — never stop building, OmniRoute picks the cheapest one that works. Six pillars. Never hit limits: auto-fallback across 278 providers in milliseconds, quota out means the next provider takes over with zero downtime. Save up to 95 percent of tokens: RTK plus Caveman stacked compression cuts 15 to 95 percent of eligible tokens, about 89 percent average on tool-heavy sessions. Zero dollars to start: 90+ providers with a free tier, 40+ free forever — Qoder, Pollinations, Cloudflare, SiliconFlow — no card needed. Every tool works: 33 coding agents including Claude Code, Codex, Cursor, Cline, Copilot and Antigravity through one config. One endpoint: OpenAI, Claude, Gemini and Responses API translation — point any tool at /v1 and it just works. Production-grade: circuit breakers, TLS stealth, MCP with 104 tools, A2A, memory, guardrails, evals — 25,000+ tests.">
|
||||
<desc>Animated promise card: six pillar tiles fade in in reading order, then a soft colored border highlight sweeps from tile to tile in a continuous cycle.</desc>
|
||||
<defs>
|
||||
<pattern id="gridPaperP" width="32" height="32" patternUnits="userSpaceOnUse">
|
||||
@@ -21,7 +21,7 @@
|
||||
<line x1="150" y1="53" x2="1160" y2="53" stroke="#232b38" stroke-width="1.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<text x="40" y="100" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="23" font-weight="600" fill="#c9d1d9">One endpoint. <tspan fill="#a78bfa" font-weight="800">268 providers.</tspan> Never stop building — OmniRoute picks <tspan fill="#7ee787" font-weight="700">the cheapest one that works</tspan>.</text>
|
||||
<text x="40" y="100" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="23" font-weight="600" fill="#c9d1d9">One endpoint. <tspan fill="#a78bfa" font-weight="800">278 providers.</tspan> Never stop building — OmniRoute picks <tspan fill="#7ee787" font-weight="700">the cheapest one that works</tspan>.</text>
|
||||
</g>
|
||||
|
||||
<g font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif">
|
||||
@@ -38,7 +38,7 @@
|
||||
<line x1="3.9" y1="3.9" x2="18.1" y2="18.1"/>
|
||||
</g>
|
||||
<text x="102" y="170" font-size="18" font-weight="800" fill="#74b9ff">Never hit limits</text>
|
||||
<text x="66" y="204" font-size="13.5" fill="#a1a1aa">Auto-fallback across 268 providers in</text>
|
||||
<text x="66" y="204" font-size="13.5" fill="#a1a1aa">Auto-fallback across 278 providers in</text>
|
||||
<text x="66" y="226" font-size="13.5" fill="#a1a1aa">milliseconds. Quota out? The next provider</text>
|
||||
<text x="66" y="248" font-size="13.5" fill="#a1a1aa">takes over — zero downtime.</text>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@@ -1,4 +1,4 @@
|
||||
<svg viewBox="0 0 1200 548" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniRoute hero: Never stop coding. Every AI tool to 268 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot and Antigravity into free Claude, GPT and Gemini with auto-fallback. RTK + Caveman stacked compression saves 15 to 95 percent of tokens — about 89 percent average on tool-heavy sessions — so you never hit limits. Stats: 268 AI providers, 90+ free tiers, about 1.4B free tokens per month, 15 to 95 percent token savings, 18 routing strategies, zero dollars to start.">
|
||||
<svg viewBox="0 0 1200 548" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniRoute hero: Never stop coding. Every AI tool to 278 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot and Antigravity into free Claude, GPT and Gemini with auto-fallback. RTK + Caveman stacked compression saves 15 to 95 percent of tokens — about 89 percent average on tool-heavy sessions — so you never hit limits. Stats: 278 AI providers, 90+ free tiers, about 1.53B free tokens per month, 15 to 95 percent token savings, 19 routing strategies, zero dollars to start.">
|
||||
<desc>Animated hero card: a pulse travels the divider line and a compression bar demo repeatedly shrinks a prompt by up to 95 percent; all headline content is static and readable on the first frame.</desc>
|
||||
<defs>
|
||||
<pattern id="gridPaperH" width="32" height="32" patternUnits="userSpaceOnUse">
|
||||
@@ -28,7 +28,7 @@
|
||||
<text x="48" y="138" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="60" font-weight="800" fill="#e9edf3">Never stop coding<tspan fill="#a855f7">.</tspan></text>
|
||||
|
||||
<!-- subheadline -->
|
||||
<text x="48" y="184" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="25" font-weight="600" fill="#c9d1d9">Every AI tool → <tspan fill="#a78bfa" font-weight="800">268 providers</tspan> — <tspan fill="#7ee787" font-weight="800">90+ free</tspan> — through one endpoint.</text>
|
||||
<text x="48" y="184" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="25" font-weight="600" fill="#c9d1d9">Every AI tool → <tspan fill="#a78bfa" font-weight="800">278 providers</tspan> — <tspan fill="#7ee787" font-weight="800">90+ free</tspan> — through one endpoint.</text>
|
||||
|
||||
<!-- plug line -->
|
||||
<text x="48" y="222" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="16.5" fill="#a1a1aa">Claude Code · Codex · Cursor · Cline · Copilot · Antigravity  →  <tspan fill="#7ee787" font-weight="700">FREE</tspan> Claude / GPT / Gemini · auto-fallback</text>
|
||||
@@ -66,19 +66,19 @@
|
||||
<!-- stat chips -->
|
||||
<g font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" text-anchor="middle">
|
||||
<rect x="48" y="448" width="172" height="52" rx="12" fill="#161b22" stroke="#6c5ce7" stroke-opacity="0.55" stroke-width="1.5"/>
|
||||
<text x="134" y="471" font-size="17" font-weight="800" fill="#a78bfa">268</text>
|
||||
<text x="134" y="471" font-size="17" font-weight="800" fill="#a78bfa">278</text>
|
||||
<text x="134" y="490" font-size="11" fill="#a1a1aa">AI PROVIDERS</text>
|
||||
<rect x="234" y="448" width="172" height="52" rx="12" fill="#161b22" stroke="#22c55e" stroke-opacity="0.55" stroke-width="1.5"/>
|
||||
<text x="320" y="471" font-size="17" font-weight="800" fill="#7ee787">90+</text>
|
||||
<text x="320" y="490" font-size="11" fill="#a1a1aa">FREE TIERS</text>
|
||||
<rect x="420" y="448" width="172" height="52" rx="12" fill="#161b22" stroke="#22c55e" stroke-opacity="0.55" stroke-width="1.5"/>
|
||||
<text x="506" y="471" font-size="17" font-weight="800" fill="#7ee787">~1.4B</text>
|
||||
<text x="506" y="471" font-size="17" font-weight="800" fill="#7ee787">~1.53B</text>
|
||||
<text x="506" y="490" font-size="11" fill="#a1a1aa">FREE TOKENS / MO</text>
|
||||
<rect x="606" y="448" width="172" height="52" rx="12" fill="#161b22" stroke="#e17055" stroke-opacity="0.55" stroke-width="1.5"/>
|
||||
<text x="692" y="471" font-size="17" font-weight="800" fill="#e17055">15–95%</text>
|
||||
<text x="692" y="490" font-size="11" fill="#a1a1aa">TOKEN SAVINGS</text>
|
||||
<rect x="792" y="448" width="172" height="52" rx="12" fill="#161b22" stroke="#0984e3" stroke-opacity="0.55" stroke-width="1.5"/>
|
||||
<text x="878" y="471" font-size="17" font-weight="800" fill="#74b9ff">18</text>
|
||||
<text x="878" y="471" font-size="17" font-weight="800" fill="#74b9ff">19</text>
|
||||
<text x="878" y="490" font-size="11" fill="#a1a1aa">ROUTING STRATEGIES</text>
|
||||
<rect x="978" y="448" width="174" height="52" rx="12" fill="#161b22" stroke="#fdcb6e" stroke-opacity="0.55" stroke-width="1.5"/>
|
||||
<text x="1065" y="471" font-size="17" font-weight="800" fill="#fdcb6e">$0</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |