Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
a30a966
chore(release): open v3.8.43 development cycle
diegosouzapw Jun 30, 2026
d97734a
docs(relay): clarify backend routing contract (#5621)
KooshaPari Jun 30, 2026
4aae3ee
fix(security): avoid rendering error stacks (#5624)
KooshaPari Jun 30, 2026
d20011c
fix(chatgpt-web): restore dot-form Pro model ids (#5549)
Thinkscape Jun 30, 2026
802f1d4
feat(commandCode): add multimodal image support for CC vision models …
Stazyu Jun 30, 2026
1fd3bfb
fix(providers): validate M365 Copilot web credentials (#5432)
skyzea1 Jun 30, 2026
f2b665b
fix(sse): bound chat hot-path heap — pressure-aware admission + respo…
josevictorferreira Jun 30, 2026
5398793
fix: model lockout not recording for 429 rate_limit_exceeded from Ant…
Chewji9875 Jun 30, 2026
470220c
fix(checks): normalize route paths on windows (#5613)
KooshaPari Jun 30, 2026
e8dbd27
fix: truncate tool list when provider limit exceeds MAX_TOOLS_LIMIT (…
Chewji9875 Jun 30, 2026
b2207ae
test(chatcore): cover grok-cli tool-list truncation via prepareUpstre…
Chewji9875 Jun 30, 2026
de52193
fix(security): v3.8.15 hardening follow-ups (Seg2/Seg3/Seg4/Bug3) (#5…
diegosouzapw Jun 30, 2026
806d1f6
Fix HuggingChat web session routing (#5592) (#5592)
backryun Jun 30, 2026
9be5528
fix: preserve system role for GLM 5.1/5.2 (#5610) (#5663)
diegosouzapw Jun 30, 2026
98ebba1
fix: restore Codex Responses WS TLS profile + apply proxy (#5591, #56…
diegosouzapw Jun 30, 2026
53875bf
fix: allow saving providers without a live validator (#5565, #5567) (…
diegosouzapw Jun 30, 2026
bafc65a
fix: static model catalog for jules/linkup/ollama/searchapi search pr…
diegosouzapw Jun 30, 2026
38aef93
fix: live AI/ML API catalog + deprecate dead CablyAI (#5570, #5568) (…
diegosouzapw Jun 30, 2026
20b19bf
fix: correct 404 provider setup links for ollama/searchapi/you.com (#…
diegosouzapw Jun 30, 2026
96a3305
fix: page call_logs cleanup queries to avoid startup OOM on large DBs…
diegosouzapw Jun 30, 2026
f781fc6
fix: use PowerShell Expand-Archive on Windows for embedded-service in…
diegosouzapw Jun 30, 2026
8a9524b
fix: treat array content blocks as valid output in detectMalformedNon…
diegosouzapw Jun 30, 2026
c568ab9
fix: render memory engine status detail strings in English (#5596) (#…
diegosouzapw Jun 30, 2026
0489e88
fix: free proxy pool silent sync failure — iplocate txt + per-source …
diegosouzapw Jun 30, 2026
b5f8940
chore(quality): close QG v2 tail — drop orphan semcheck.yaml + Fase 9…
diegosouzapw Jun 30, 2026
39d1fc5
fix(ci): stabilize nightly-mutation — guard tap.testFiles drift + ant…
diegosouzapw Jun 30, 2026
bfcfc9b
refactor(dashboard): split sidebarVisibility god-file into types + se…
diegosouzapw Jun 30, 2026
24ae0b3
fix: surface fusion-specific config on the Global Routing tab (#5598)…
diegosouzapw Jun 30, 2026
7686eaa
fix(executor): route OpenAI-compatible MCP Responses requests to /res…
KooshaPari Jun 30, 2026
58b5ba0
fix(ci): make release-green pre-flight gates visible + bounded so uni…
diegosouzapw Jun 30, 2026
8ec8599
fix(body-size): raise LLM API payload limit for responses routes (#5652)
JxnLexn Jun 30, 2026
6a4d0d2
fix(test): use lightweight health probe for batch e2e (#5651)
KooshaPari Jun 30, 2026
bb28f95
feat(compression): T05/C5 — preserveSystemPrompt mode enum + legacy b…
diegosouzapw Jun 30, 2026
f526bd3
routing: optimize latency strategy with perf metrics (#5629)
KooshaPari Jun 30, 2026
6b4a80a
feat(db): models/5004 — self-correcting model context-window override…
diegosouzapw Jun 30, 2026
871dc79
feat(providers): complete SenseNova free Token Plan — chat + Text-to-…
diegosouzapw Jun 30, 2026
cf25de4
feat(api): routing/4985 — configurable response-body validation + fai…
diegosouzapw Jun 30, 2026
6637464
fix(chatcore): default Claude tool type to "custom" when missing (#5662)
diegosouzapw Jun 30, 2026
9e22719
fix(translator): merge consecutive same-role contents for Gemini (por…
diegosouzapw Jun 30, 2026
3bb17d7
chore(bun): add locked bun runtime dependency (#5615)
KooshaPari Jun 30, 2026
b4bf04a
chore(bun): run validated ts scripts with bun (#5612)
KooshaPari Jun 30, 2026
454355a
chore(bun): run CI script checks with bun (#5617)
KooshaPari Jun 30, 2026
b48abd8
fix(build): make pack validator bun safe (#5643)
KooshaPari Jun 30, 2026
408bcf5
docs: document Bun as the allow-listed build/dev script runner (Node …
diegosouzapw Jun 30, 2026
6875e5c
feat(analytics): show $0 cost for flat-rate subscription/cookie provi…
diegosouzapw Jun 30, 2026
b71a7b8
refactor(api): extract unified-catalog helpers into cohesive leaf mod…
diegosouzapw Jun 30, 2026
cfbae95
feat(mcp): T07 — expose RTK learn/discover as MCP tools (#5691)
diegosouzapw Jun 30, 2026
502ad5c
feat(compression): T05/C3 — opt-in LLM-tier compression engine (#5702)
diegosouzapw Jun 30, 2026
cf90ff1
refactor(db): extract compat/aliases/mitm helpers from db/models.ts i…
diegosouzapw Jun 30, 2026
2787449
refactor(db): extract pricing/lkgp/cache-metrics from db/settings.ts …
diegosouzapw Jun 30, 2026
bcfe6e6
fix(translator): re-apply lost defensive hardening for Gemini merge +…
diegosouzapw Jun 30, 2026
d47ea7b
feat(codex): generate fallback profiles for compatible models (#5701)
skyzea1 Jun 30, 2026
5f89946
docs(changelog): credit @Chewji9875 for #5563 + #5579
diegosouzapw Jun 30, 2026
5d5c614
test(dashboard): repoint sidebar quota-share placement scan to sectio…
diegosouzapw Jun 30, 2026
c79e856
refactor(db): extract columns/nodes/rate-limit leaves from db/provide…
diegosouzapw Jun 30, 2026
931b950
refactor(db): extract types + pure mappers from db/proxies.ts (#5717)
diegosouzapw Jun 30, 2026
72a4907
refactor(db): extract static migration data tables from migrationRunn…
diegosouzapw Jun 30, 2026
311afb0
refactor(db): extract pure SQL-source builders from usageAnalytics.ts…
diegosouzapw Jun 30, 2026
0341047
docs(readme): refresh metrics, list 17 strategies, add Quota-Share + …
diegosouzapw Jun 30, 2026
ced7f84
docs(readme): update provider counts and add new badges
diegosouzapw Jun 30, 2026
54ec223
feat(memory): T10/TV6 — opt-in typed memory decay (#5723)
diegosouzapw Jun 30, 2026
7833453
feat(dashboard): T06/T03 — drag-reorder compression pipeline editor +…
diegosouzapw Jun 30, 2026
2055f86
fix(thinking): wire Thinking-Budget boot hydration into live instrume…
diegosouzapw Jun 30, 2026
436ebe1
refactor(usage): extract pure formatting helpers from callLogs.ts (#5…
diegosouzapw Jun 30, 2026
04d22a7
refactor(usage): extract pure stat/coercer helpers from usageHistory.…
diegosouzapw Jun 30, 2026
ba7f214
refactor(usage): extract pure quota-normalize helpers from providerLi…
diegosouzapw Jun 30, 2026
f60fd39
refactor(memory): extract pure scoring/conversion helpers from retrie…
diegosouzapw Jun 30, 2026
6f364f9
refactor(sse): extract reasoning-tag detection/extraction from respon…
diegosouzapw Jul 1, 2026
edd9e25
refactor(sse): extract rate-limit header parsing from rateLimitManage…
diegosouzapw Jul 1, 2026
aa6264b
fix(config): back boot-hydrated proxy config singletons with globalTh…
diegosouzapw Jul 1, 2026
1c1aa53
refactor(evals): extract built-in golden-set suites from evalRunner.t…
diegosouzapw Jul 1, 2026
027e0e5
refactor(models): extract pure transform layer from modelsDevSync.ts …
diegosouzapw Jul 1, 2026
d5b0ee9
refactor(resilience): split settings.ts into types + normalize leaves…
diegosouzapw Jul 1, 2026
c604f70
docs(readme): document faster/leaner install — skip native build, sql…
diegosouzapw Jul 1, 2026
4c380cc
feat(compression): T02 opt-in per-engine pipeline circuit-breaker (#5…
diegosouzapw Jul 1, 2026
5b4f8e7
docs: sync MCP tool count to 95 + routing-strategy count (#5732)
diegosouzapw Jul 1, 2026
f669335
feat(api): add first-class Ollama local provider card (#5712)
diegosouzapw Jul 1, 2026
e1c0fe4
Add API key provider quota bypass
Jun 30, 2026
b5ec6a6
fix: restore om-usage HTTP endpoint
Jul 1, 2026
f66abd2
feat: report usage command quotas as percentages
Jul 1, 2026
39c12a6
fix: honor observed provider quota resets
Jul 2, 2026
68095d4
fix(github): keep Copilot access-token sessions active
Jul 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
39 changes: 39 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,26 @@ ALLOW_API_KEY_REVEAL=false
# Default: 10485760 (10 MB)
# MAX_BODY_SIZE_BYTES=10485760

# Heap-pressure-aware admission for POST /v1/chat/completions (#5152). A large
# coding-agent "compact" body amplifies into hundreds of MB of transient JS objects
# on the combo path; concurrent compacts can stack past the V8 heap ceiling and OOM
# the process. These shed a LARGE body with 503 (Retry-After) only while the heap is
# already under pressure — healthy heap admits every body untouched.
# Used by: src/shared/middleware/chatBodyAdmission.ts
# Bodies below this size skip the guard entirely (heap not even sampled). Default 262144 (256 KB).
# OMNIROUTE_CHAT_LARGE_BODY_BYTES=262144
# Hard cap — bodies above this are rejected with 413 before any clone/parse. Default 52428800 (50 MB).
# OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES=52428800
# Shed large bodies once heapUsed/heap_size_limit reaches this ratio (0<r<1). Default 0.75.
# OMNIROUTE_CHAT_HEAP_SHED_RATIO=0.75

# Hard cap (bytes) for a non-streaming upstream response buffered fully into memory
# (#5152). Past this the upstream reader is cancelled and the request fails fast
# instead of growing an unbounded string until the V8 heap is exhausted.
# Used by: open-sse/handlers/chatCore/nonStreamingResponseBody.ts
# Default: 67108864 (64 MB)
# OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES=67108864

# CORS configuration — controls which cross-origin browser clients can call the API.
# Used by: src/server/cors/origins.ts — sets Access-Control-Allow-Origin.
# Same-origin dashboard requests behind a reverse proxy do not need CORS; set
Expand Down Expand Up @@ -654,6 +674,13 @@ PROVIDER_LIMITS_SYNC_SPACING_MS=1500
# Used by: open-sse/services/compression/engines/rtk/filterLoader.ts. Default: 0.
#OMNIROUTE_RTK_TRUST_PROJECT_FILTERS=0

# T02 stacked-pipeline engine circuit-breaker (OPT-IN, default off). When enabled, a compression
# engine that throws repeatedly across requests is skipped (fail-open) for a cooldown.
# Used by: open-sse/services/compression/pipelineEngineBreaker.ts.
#COMPRESSION_PIPELINE_BREAKER_ENABLED=false # master switch (default false)
#COMPRESSION_PIPELINE_BREAKER_THRESHOLD=3 # consecutive failures before the engine opens
#COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS=30000 # ms the engine stays skipped before a probe

# Skip the postinstall native-runtime warm-up (useful in CI / headless installs). Default: 0.
# Used by: scripts/postinstall.mjs.
#OMNIROUTE_SKIP_POSTINSTALL=0
Expand Down Expand Up @@ -1245,6 +1272,13 @@ APP_LOG_TO_FILE=true
# Default: 86400 (24 hours)
# MODELS_DEV_SYNC_INTERVAL=86400

# Self-correcting context-window reconciler interval in seconds (feature 5004).
# Pins provider-declared windows from /models discovery as auto:discovery overrides
# when they diverge from the catalog. Set to 0 to disable. Never overwrites manual overrides.
# Used by: src/lib/contextWindowResolver.ts
# Default: 86400 (24 hours)
# CONTEXT_WINDOW_RECONCILE_INTERVAL=86400

# ═══════════════════════════════════════════════════════════════════════════════
# 20. PROVIDER-SPECIFIC SETTINGS
# ═══════════════════════════════════════════════════════════════════════════════
Expand Down Expand Up @@ -1731,6 +1765,11 @@ PLAYGROUND_COMPARE_MAX_COLUMNS=4
# MEMORY_VEC_TOP_K=20 # default top-K for vector search
# MEMORY_RRF_K=60 # RRF k constant (sqlite-vec hybrid recipe)
# HF_HUB_ENDPOINT=https://huggingface.co # override Hugging Face Hub base URL for static potion downloads
# TV6 typed memory decay (OPT-IN, default off — the sweep DELETES decayed memories)
# MEMORY_TYPED_DECAY_ENABLED=false # master switch for the destructive sweep (default off)
# MEMORY_TYPED_DECAY_EPISODIC_DAYS=30 # episodic TTL in days; 0 = episodic immune too
# MEMORY_TYPED_DECAY_ACCESS_IMMUNITY=3 # access_count >= N → immune; 0 disables access immunity
# MEMORY_TYPED_DECAY_SWEEP_INTERVAL=0 # periodic sweep interval (seconds); 0 = no periodic sweep
# AgentBridge + Traffic Inspector (Group A)

# AgentBridge
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ jobs:
- run: npm run check:route-guard-membership
- run: npm run check:test-discovery
- run: npm run check:test-runner-api
# Guards tap.testFiles drift: a covering unit test absent from stryker.conf.json
# tap.testFiles makes its module's mutants survive on a cold nightly-mutation run,
# false-failing the blocking mutationScore ratchet. See check-mutation-test-coverage.mjs.
- run: npm run check:mutation-test-coverage
- run: npm run check:any-budget:t11
# Build-scope guard: fails if worktrees/cruft leak into the tsconfig include
# scope (would OOM `next build`). Instant. See incident 2026-06-25 / #5031.
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -229,3 +229,6 @@ docs/prompts/AGENT-OWNERSHIP-PROTOCOL.md
docs/prompts/AGENT-OWNERSHIP-PROTOCOL.omniroute-mim.md
docs/prompts/AGENT-OWNERSHIP-PROTOCOL.omniroute-mid.md
omniroute.md

# mise configuration
mise.toml
4 changes: 2 additions & 2 deletions @omniroute/opencode-plugin/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
## Project

Unified AI proxy/router — route any LLM through one endpoint. Multi-provider support
with **236 provider entries** (OpenAI, Anthropic, Gemini, DeepSeek, Groq, xAI, Mistral, Fireworks,
with **237 provider entries** (OpenAI, Anthropic, Gemini, DeepSeek, Groq, xAI, Mistral, Fireworks,
Cohere, NVIDIA, Cerebras, Pollinations, Puter, Cloudflare AI, HuggingFace, DeepInfra,
SambaNova, Meta Llama API, Moonshot AI, AI21 Labs, Databricks, Snowflake, and many more)
with **MCP Server** (94 tools), **A2A v0.3 Protocol**, and **Electron desktop app**.

> **Live counts (v3.8.40)**: providers 236 · MCP tools 94 · MCP scopes 30 · A2A skills 6 ·
> **Live counts (v3.8.40)**: providers 237 · MCP tools 94 · MCP scopes 30 · A2A skills 6 ·
> open-sse services 298 · routing strategies 17 · auto-combo scoring factors 12 ·
> DB modules 94 · DB migrations 106 · base tables 17 · search providers 11 ·
> i18n locales 42. **Refresh with `npm run check:docs-all`.**
Expand Down
Loading