Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
28dd470
feat(sse): add native Rosebud asset provider and MCP tools
CompleteDotTech Oct 29, 2026
8e41b69
fix(sse): serialize Rosebud leases across routes and publish complete…
CompleteDotTech Oct 29, 2026
faee53c
fix(mcp): preserve Rosebud binary downloads in structured results
CompleteDotTech Oct 29, 2026
ba3e7ed
fix(sse): pin Rosebud retries and enforce account access
CompleteDotTech Oct 29, 2026
20f2b0f
fix(sse): preserve legacy Rosebud retries and cancel unpaid work
CompleteDotTech Oct 29, 2026
0d35497
fix(mcp): isolate Rosebud callers and synchronize tool contracts
CompleteDotTech Oct 29, 2026
4d73959
fix(sse): refuse soft pin fallback for Rosebud paid retries
CompleteDotTech Oct 29, 2026
661dd18
fix(sse): prevent SDK retries after Rosebud submission
CompleteDotTech Oct 29, 2026
5b625aa
fix(sse): retain uncertain CLI outcomes and test pinned selection
CompleteDotTech Oct 29, 2026
730d01c
fix(sse): preserve unpaid Rosebud failure statuses
CompleteDotTech Oct 29, 2026
0338d0b
fix(rosebud): preserve jobs when usage recording fails
CompleteDotTech Oct 29, 2026
b89bf62
fix(rosebud): reconcile actual charges and refunded credits
CompleteDotTech Oct 29, 2026
fbf3d9a
test(rosebud): model status separately from artifact download
CompleteDotTech Oct 29, 2026
0e1135b
docs(changelog): reference Rosebud provider PR 18577
CompleteDotTech Oct 29, 2026
ecebca3
docs(rosebud): document inherited operating system paths
CompleteDotTech Oct 31, 2026
adff907
fix(rosebud): preserve rebase documentation and sync timing contract
CompleteDotTech Nov 1, 2026
47de941
Merge origin/release/v3.8.53 into feat/rosebud-native-provider
CompleteDotTech Nov 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4073,5 +4073,19 @@ QUOTA_STORE_DRIVER=sqlite
# Used by: scripts/check/check-ui-kit-snapshot.mjs.
# UI_KIT_CLONE=_references/cheaper-inference-ui-kit

# Rosebud official CLI asset provider (credentials live in private account profiles)
ROSEBUD_CLI_BIN=rosebud
# Optional absolute path to @rosebudai/cli/dist/cli.js
ROSEBUD_CLI_SCRIPT=
# Empty uses DATA_DIR/rosebud
ROSEBUD_DATA_DIR=
# Process concurrency, not a credit cap
ROSEBUD_CONCURRENCY=2
# OS-provided paths passed through to the Rosebud child process. Normally leave
# these unset here so the service inherits its existing operating-system values.
# SYSTEMROOT=
# TMPDIR=
# TEMP=

# Opt-in model-sync phase timings; disabled unless exactly 1.
OMNIROUTE_MODEL_SYNC_TIMINGS=0
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Running tests: see [Testing](#testing) below (run the most focused test for chan

## Project at a Glance

**OmniRoute** — unified AI proxy/router. One endpoint, 380 LLM providers, auto-fallback.
**OmniRoute** — unified AI proxy/router. One endpoint, 381 LLM providers, auto-fallback.

- API Routes — `src/app/api/v1/` (Next.js App Router entry points)
- Handlers — `open-sse/handlers/` (request processing: chat, embeddings, etc)
Expand All @@ -39,7 +39,7 @@ Running tests: see [Testing](#testing) below (run the most focused test for chan
- Services — `open-sse/services/` (combo routing, rate limits, caching, etc)
- Database — `src/lib/db/` (SQLite domain modules, 219 migrations)
- Domain/Policy — `src/domain/` (policy engine, cost rules, fallback logic)
- MCP Server — `open-sse/mcp-server/` (110 tools: 45 canonical + memory/skill/GitHub/pool/gamification/plugin/Notion/Obsidian/local-corpus/RTK modules; 3 transports: stdio / SSE / Streamable HTTP; 33 scopes)
- MCP Server — `open-sse/mcp-server/` (129 tools: 45 canonical + memory/skill/GitHub/pool/gamification/plugin/Notion/Obsidian/local-corpus/RTK modules; 3 transports: stdio / SSE / Streamable HTTP; 34 scopes)
- A2A Server — `src/lib/a2a/` (JSON-RPC 2.0 agent protocol)
- Skills — `src/lib/skills/` (extensible skill framework); Memory — `src/lib/memory/` (persistent conversational memory)

Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

# 🚀 OmniRoute — The Free AI Gateway

<img src="./docs/diagrams/readme-hero.svg" width="100%" alt="OmniRoute — Never stop coding. Every AI tool → 380 providers — 150+ 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. 380 AI providers · 150+ free tiers · ~1.62B free tokens/mo · 20 routing strategies · $0 to start."/>
<img src="./docs/diagrams/readme-hero.svg" width="100%" alt="OmniRoute — Never stop coding. Every AI tool → 381 providers — 150+ 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. 381 AI providers · 150+ free tiers · ~1.62B free tokens/mo · 20 routing strategies · $0 to start."/>

</div>

Expand Down Expand Up @@ -242,7 +242,7 @@ curl http://localhost:20128/v1/chat/completions \

</div>

<img src="./docs/diagrams/promise-pillars.svg" width="100%" alt="The Promise — One endpoint and 380 providers. Automatic fallback keeps routing while another healthy target is available. Six pillars: resilient fallback across 380 providers · up to 95% token savings on eligible workloads · $0 to start with 150+ free tiers and 53 recurring/keyless free-forever providers · 39 CLI/agent integrations through one config · OpenAI, Claude, Gemini and Responses API compatibility at /v1 · production controls including circuit breakers, TLS stealth, MCP 110 tools, A2A, memory, guardrails, evals and 56,000+ static test declarations across 7,800+ tracked test files."/>
<img src="./docs/diagrams/promise-pillars.svg" width="100%" alt="The Promise — One endpoint and 381 providers. Automatic fallback keeps routing while another healthy target is available. Six pillars: resilient fallback across 381 providers · up to 95% token savings on eligible workloads · $0 to start with 150+ free tiers and 53 recurring/keyless free-forever providers · 39 CLI/agent integrations through one config · OpenAI, Claude, Gemini and Responses API compatibility at /v1 · production controls including circuit breakers, TLS stealth, MCP 129 tools, A2A, memory, guardrails, evals and 56,000+ static test declarations across 7,800+ tracked test files."/>

<br/>
<br/>
Expand Down Expand Up @@ -502,7 +502,7 @@ All **20** strategies — mix & match per combo step:

</div>

<img src="./docs/diagrams/comparison-table.svg" width="100%" alt="What sets OmniRoute apart — a dated feature snapshot vs 9router, OpenRouter, CLIProxyAPI and LiteLLM across 13 capabilities. OmniRoute: 380 providers, 150+ free tiers built in, 20 routing strategies, 12-engine token compression, built-in MCP server with 110 tools, A2A agent protocol, persistent memory, guardrails, cloud agents, TLS fingerprint stealth, Desktop/Termux/PWA and 67 i18n UI locales. OmniRoute is MIT-licensed and self-hostable. Competitor capabilities and counts may change; see the linked methodology."/>
<img src="./docs/diagrams/comparison-table.svg" width="100%" alt="What sets OmniRoute apart — a dated feature snapshot vs 9router, OpenRouter, CLIProxyAPI and LiteLLM across 13 capabilities. OmniRoute: 381 providers, 150+ free tiers built in, 20 routing strategies, 12-engine token compression, built-in MCP server with 129 tools, A2A agent protocol, persistent memory, guardrails, cloud agents, TLS fingerprint stealth, Desktop/Termux/PWA and 67 i18n UI locales. OmniRoute is MIT-licensed and self-hostable. Competitor capabilities and counts may change; see the linked methodology."/>

<sub>📊 Full methodology &amp; per-feature detail vs 9router, OpenRouter, CLIProxyAPI &amp; LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)</sub>

Expand Down Expand Up @@ -606,7 +606,7 @@ the current catalog at **[radar.omniroute.online/planos](https://radar.omniroute
- **🖼️ New endpoints** — `/v1/ocr` (Mistral OCR) and `/v1/audio/translations` (Whisper-style) round out the media surface. → [API Reference](docs/reference/API_REFERENCE.md)
- **🎨 Image / video / audio generation** — one API for media: xAI Grok Imagine & Novita AI video, ComfyUI, Magnific, Adobe Firefly, Segmind, and speech providers such as ElevenLabs. → [API Reference](docs/reference/API_REFERENCE.md)
- **🌍 Deployment & ops** — reverse-proxy `basePath`, browser-language auto-detect, per-key device tracking, root-less MITM trust, zh-TW localization. → [Environment](docs/reference/ENVIRONMENT.md)
- **🤝 More providers & agents** — cloud agents (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) with browser + OAuth login, Ollama first-class card, Claude Opus 5 & Sonnet 5, Kimi official partnership (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… and a refreshed **380-provider catalog**. → [Providers](docs/reference/PROVIDER_REFERENCE.md)
- **🤝 More providers & agents** — cloud agents (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) with browser + OAuth login, Ollama first-class card, Claude Opus 5 & Sonnet 5, Kimi official partnership (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… and a refreshed **381-provider catalog**. → [Providers](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Routing transparency** — every response carries an `X-OmniRoute-Decision` header naming the strategy/provider/latency that served it, a new `cache-optimized` combo strategy + Auto-Combo `cacheAffinity` factor route repeat requests back to the connection holding the cached prefix, and a read-only `/v1/auto-combo/{channel}/candidates` endpoint exposes an `auto/*` channel's live candidate pool. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Local performance & infra** — one-click local Redis, Cloudflare Workers / Deno Deploy relay deployers, Bifrost & Mux as supervised embedded services. → [Embedded Services](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Also in the box** — plugin framework + marketplace, Omni/Agent/GitHub skills frameworks, Obsidian vault integration (22 MCP tools), OpenAI-compatible Batch & Files APIs, semantic response cache, gamification with leaderboards, ACP agent discovery (15 built-in agents), scheduled log export to BigQuery, `auto/chaos` parallel multi-model fan-out, a Telegram bot bridge, an in-app version manager and LMArena-ELO free-provider rankings. → [Docs](docs/README.md)
Expand Down Expand Up @@ -690,11 +690,11 @@ of your shell history. → [CLI Integrations](docs/guides/CLI-INTEGRATIONS.md)

<div align="center">

## 🌐 380 AI Providers — 153 Catalog-Marked Free
## 🌐 381 AI Providers — 153 Catalog-Marked Free

</div>

> **380 registered providers** across the canonical chat, media, search, local, cloud-agent and system collections, including **153 carrying `hasFree: true` discovery metadata**. The chat model registry covers **239 providers / 3,059 distinct provider-model pairs / 1,475 raw model IDs**; the separate free-budget catalog has **471 per-model rows**, **34 recurring pools** and **53 recurring/keyless free-forever providers**. These are different denominators by design; definitions and pool-deduped calculations live in the [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) and [Free Tiers](docs/reference/FREE_TIERS.md).
> **381 registered providers** across the canonical chat, media, search, local, cloud-agent and system collections, including **153 carrying `hasFree: true` discovery metadata**. The chat model registry covers **239 providers / 3,059 distinct provider-model pairs / 1,475 raw model IDs**; the separate free-budget catalog has **471 per-model rows**, **34 recurring pools** and **53 recurring/keyless free-forever providers**. These are different denominators by design; definitions and pool-deduped calculations live in the [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) and [Free Tiers](docs/reference/FREE_TIERS.md).

<div align="center">

Expand Down Expand Up @@ -907,7 +907,7 @@ Expose OmniRoute over **MCP**, **A2A**, a **REST API**, **webhooks** or a **remo
<table>
<tr><th align="left">Interface</th><th align="left">Endpoint / command</th><th align="left">Use it for</th></tr>
<tr><td align="left" nowrap>🧰 <b>MCP (stdio)</b></td><td align="left" nowrap><code>omniroute --mcp</code></td><td align="left">Plug into Claude Desktop, Cursor, any MCP client</td></tr>
<tr><td align="left" nowrap>🌊 <b>MCP (HTTP)</b></td><td align="left" nowrap><code>/api/mcp/stream</code></td><td align="left">Remote MCP — <b>110 tools</b>, 33 scopes (enforcement opt-in), full audit trail</td></tr>
<tr><td align="left" nowrap>🌊 <b>MCP (HTTP)</b></td><td align="left" nowrap><code>/api/mcp/stream</code></td><td align="left">Remote MCP — <b>129 tools</b>, 34 scopes (enforcement opt-in), full audit trail</td></tr>
<tr><td align="left" nowrap>📡 <b>MCP (SSE)</b></td><td align="left" nowrap><code>/api/mcp/sse</code></td><td align="left">Streaming MCP transport</td></tr>
<tr><td align="left" nowrap>🤝 <b>A2A</b></td><td align="left" nowrap><code>/.well-known/agent.json</code></td><td align="left">Agent-to-agent, <b>JSON-RPC 2.0</b> + SSE, 6 skills</td></tr>
<tr><td align="left" nowrap>🌐 <b>REST API</b></td><td align="left" nowrap><code>/v1/*</code></td><td align="left">OpenAI-compatible — chat, embeddings, images, audio, OCR</td></tr>
Expand Down Expand Up @@ -1385,7 +1385,7 @@ Métricas canônicas em 2026-10-18: **1.976 vídeos únicos** · **20.220.289 vi
<tr><th align="left">Document</th><th align="left">Description</th></tr>
<tr><td nowrap><b><a href="docs/reference/API_REFERENCE.md">API Reference</a></b></td><td>All endpoints with examples</td></tr>
<tr><td nowrap><b><a href="docs/openapi.yaml">OpenAPI Spec</a></b></td><td>OpenAPI 3.0 specification</td></tr>
<tr><td nowrap><b><a href="open-sse/mcp-server/README.md">MCP Server</a></b></td><td>110 MCP tools, IDE configs, Python/TS/Go clients</td></tr>
<tr><td nowrap><b><a href="open-sse/mcp-server/README.md">MCP Server</a></b></td><td>129 MCP tools, IDE configs, Python/TS/Go clients</td></tr>
<tr><td nowrap><b><a href="docs/frameworks/MCP-SERVER.md">MCP Server Guide</a></b></td><td>MCP installation, transports, and tool reference</td></tr>
<tr><td nowrap><b><a href="src/lib/a2a/README.md">A2A Server</a></b></td><td>JSON-RPC 2.0 protocol, skills, streaming, task mgmt</td></tr>
<tr><td nowrap><b><a href="docs/frameworks/A2A-SERVER.md">A2A Server Guide</a></b></td><td>A2A agent card, tasks, skills, and streaming</td></tr>
Expand Down
1 change: 1 addition & 0 deletions changelog.d/features/18577-rosebud-native-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **feat(sse):** Add a native Rosebud AI provider with dynamic asset models, image generation, specialized MCP tools, isolated CLI authorization and credit accounting.
5 changes: 0 additions & 5 deletions config/quality/eslint-suppressions.json
Original file line number Diff line number Diff line change
Expand Up @@ -1023,11 +1023,6 @@
"count": 1
}
},
"src/app/api/v1/images/generations/route.ts": {
"@typescript-eslint/no-unused-vars": {
"count": 1
}
},
"src/app/api/v1/messages/count_tokens/route.ts": {
"no-restricted-imports": {
"count": 1
Expand Down
4 changes: 2 additions & 2 deletions docs/architecture/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ It provides a single OpenAI-compatible endpoint (`/v1/*`) and routes traffic acr

Core capabilities:

- OpenAI-compatible API surface for CLI/tools (380 providers, 156 executor modules)
- OpenAI-compatible API surface for CLI/tools (381 providers, 156 executor modules)
- Request/response translation across provider formats
- Model combo fallback (multi-model sequence)
- Structured combo steps (`provider + model + connection`) with runtime ordering by `compositeTiers`
Expand Down Expand Up @@ -58,7 +58,7 @@ Core capabilities:
- Compliance audit logging with opt-out per API key
- Eval framework for LLM quality assurance
- Health dashboard with real-time provider circuit breaker status
- MCP Server (110 tools) with 3 transports (stdio/SSE/Streamable HTTP)
- MCP Server (129 tools) with 3 transports (stdio/SSE/Streamable HTTP)
- A2A Server (JSON-RPC 2.0 + SSE) with skills and task lifecycle
- Memory system (extraction, injection, retrieval, summarization)
- Skills system (registry, executor, sandbox, built-in skills)
Expand Down
8 changes: 4 additions & 4 deletions docs/architecture/CODEBASE_DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@ open-sse/
├── transformer/ Responses API ↔ Chat Completions stream transformer
├── services/ 80+ service modules (combos, fallback, quotas, identity, …)
├── utils/ Streaming helpers, TLS client, AWS SigV4, proxy fetch, …
└── mcp-server/ MCP server (3 transports, 33 scopes, 110 tools)
└── mcp-server/ MCP server (3 transports, 34 scopes, 129 tools)
```

### 4.1 `open-sse/handlers/`
Expand Down Expand Up @@ -501,7 +501,7 @@ helpers (tool schemas, fetch/TTS adapters, quirk handlers). Executors include:
(shared identity helper) and `index.ts` (registry).

> Note: providers not listed here are served by `default.ts` using the generic
> OpenAI-compatible executor. The full provider catalog (380 providers) lives in
> OpenAI-compatible executor. The full provider catalog (381 providers) lives in
> `src/shared/constants/providers.ts`.

### 4.3 `open-sse/translator/`
Expand Down Expand Up @@ -550,11 +550,11 @@ Highlights (full list under `open-sse/services/`):

### 4.6 `open-sse/mcp-server/`

- **110 unique tools** wired in `server.ts` (45 canonical in `schemas/tools.ts` +
- **129 unique tools** wired in `server.ts` (45 canonical in `schemas/tools.ts` +
memory, skills, GitHub-skills, pool, gamification, plugin, Notion, Obsidian,
local-corpus and compression modules — union counted by `countUniqueMcpTools`).
- **3 transports**: stdio, HTTP Streamable, SSE.
- **33 scopes** enforced at runtime — base list in `src/shared/constants/mcpScopes.ts`, full set is the union of the scopes declared by each tool module.
- **34 scopes** enforced at runtime — base list in `src/shared/constants/mcpScopes.ts`, full set is the union of the scopes declared by each tool module.
- Audit table: `mcp_tool_audit` (populated by `audit.ts`).
- Files: `server.ts`, `index.ts`, `httpTransport.ts`, `audit.ts`, `scopeEnforcement.ts`,
`runtimeHeartbeat.ts`, `descriptionCompressor.ts`, `schemas/{tools, a2a, audit, index}.ts`,
Expand Down
8 changes: 4 additions & 4 deletions docs/architecture/REPOSITORY_MAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ src/
| -------------------------------- | --------------------------------------------------------------------------------------------------- |
| `components/` | Dashboard component API: adapters over `packages/ui-kit` — see `docs/architecture/DESIGN_SYSTEM.md` |
| `constants/iconMap.ts` | `ICON_MAP`: icon names used by the screens → Lucide components (`<Icon>`) |
| `constants/providers.ts` | **380 providers** with Zod validation (source of truth) |
| `constants/providers.ts` | **381 providers** with Zod validation (source of truth) |
| `constants/cliTools.ts` | External CLI tool registry |
| `constants/routingStrategies.ts` | **20 routing strategies** with priorities |
| `constants/publicApiRoutes.ts` | Routes that require Bearer (vs management) auth |
Expand All @@ -271,7 +271,7 @@ open-sse/
├── translator/ # Format converters (9 request, 9 response, 9 helpers)
├── transformer/ # Responses API ↔ Chat Completions (TransformStream)
├── services/ # ~80+ service modules (combo, accountFallback, autoCombo, reasoningCache, claude code/chatgpt stealth, modelDeprecation, taskAwareRouter, workflowFSM, etc.)
├── mcp-server/ # MCP server (110 tools, 3 transports, 33 scopes)
├── mcp-server/ # MCP server (129 tools, 3 transports, 34 scopes)
├── config/ # Provider/model registries, header config, model aliases
├── utils/ # TLS client, proxy fetch/dispatcher, network helpers
├── index.ts # Workspace entry
Expand Down Expand Up @@ -414,13 +414,13 @@ open-sse/
| `CLI-TOOLS.md` | External CLI integrations + Internal OmniRoute CLI |
| `I18N.md` | i18n architecture, adding a language, 67 locales |
| `UNINSTALL.md` | Clean uninstall steps |
| `PROVIDER_REFERENCE.md` | **Auto-generated** catalog of 380 providers (regen: `npm run gen:provider-reference`) |
| `PROVIDER_REFERENCE.md` | **Auto-generated** catalog of 381 providers (regen: `npm run gen:provider-reference`) |

### Subsystem deep-dives

| Doc | Purpose |
| ------------------------------------------- | -------------------------------------------------------------------- |
| `MCP-SERVER.md` | MCP server: 110 tools, 3 transports, 33 scopes, REST endpoints |
| `MCP-SERVER.md` | MCP server: 129 tools, 3 transports, 34 scopes, REST endpoints |
| `A2A-SERVER.md` | A2A v0.3: JSON-RPC, 6 skills, REST helpers, agent card |
| `AGENT_PROTOCOLS_GUIDE.md` | Unified guide: A2A vs ACP vs Cloud Agents |
| `CLOUD_AGENT.md` | Codex Cloud / Devin / Jules orchestration |
Expand Down
Loading