Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
142ae93
fix(network): bound direct-path response-start timeout
excessivechaos Aug 17, 2026
76b31cf
fix(opencode-plugin): respect log level in provider.models() catalog …
tientien17 Aug 20, 2026
d9524e6
fix(open-sse): align GlmExecutor.buildHeaders with BaseExecutor signa…
tientien17 Aug 20, 2026
81b0ff4
fix(cline): label internal health checks (#10706)
arafatkatze Aug 20, 2026
1accabe
fix(db): prevent Windows native-driver hang from stalling requests (#…
jonlwheat2-gif Aug 20, 2026
82e5afe
feat(usage): show Kimi Coding Extra Usage (#10712)
xz-dev Aug 20, 2026
b11b000
fix(agent-bridge): make the regenerate-cert endpoint actually mint a …
ntdatt812 Aug 20, 2026
f330b21
feat(codex): sync v178 identity mechanisms — turn-state relay, persis…
xz-dev Aug 20, 2026
5185571
fix(electron): pin embedded server to loopback so the window shows on…
echoriver89 Aug 20, 2026
08f23d0
feat(providers): add Token Kiosk as an OpenAI-compatible provider (#1…
hgaib Aug 20, 2026
83c77fb
fix(oauth): keep the Kiro profileArn on IAM Identity Center logins (#…
MichaelYcJo Aug 20, 2026
3e0afc8
feat(providers): Cursor API provider (crsr_ keys) and Cursor CLI pass…
dpozimski Aug 20, 2026
bc9a685
feat(combo): opaque per-invocation decision trace for priority fallba…
stanleytejakusuma Aug 20, 2026
48f3428
pUpdate python_requests.py (#10731)
pandaaaa1990 Aug 20, 2026
2eb6d59
fix(providers): copilot-m365-web invocation dropped by substrate + to…
acc0mplish Aug 20, 2026
5100642
fix(sensenova): clamp max reasoning effort to xhigh (#10733)
InkshadeWoods Aug 20, 2026
7d2efdf
fix(api): report the cache that requests actually use in /api/cache/s…
maxmad64bis Aug 20, 2026
ee230fa
fix(logging): keep the component and apply printf formats in the app …
maxmad64bis Aug 20, 2026
49a47cb
feat(api): answer GET /api/health without a key (#10771)
maxmad64bis Aug 20, 2026
6ff8307
fix(api): reset mcp sse singleton on new client initialize (#10690) (…
sadSanta-07 Aug 20, 2026
f7cba50
fix(analytics): treat Claude Code (`claude`/`cc`) as a flat-rate subs…
electrumguy Aug 20, 2026
66144d8
chore(security): drop the unused enforceSecrets() duplicate (#10775)
maxmad64bis Aug 20, 2026
4fc0b41
add fa readme (#10777)
farshidrezaei Aug 20, 2026
121023e
docs: document combo invocation by exact model name (#7992) (#10779)
maxmad64bis Aug 20, 2026
d82e3cf
fix(db): periodically truncate the SQLite WAL on long-running servers…
maxmad64bis Aug 20, 2026
404d3a4
fix(sse): add a protocol-level ping/pong heartbeat to LiveWS (#10782)
maxmad64bis Aug 20, 2026
6307504
feat(routing): make task-detection patterns operator-configurable (#1…
maxmad64bis Aug 20, 2026
71f858f
fix(translator): convert OpenAI tool-result images to Claude image bl…
Prudhvivuda Aug 20, 2026
aa32d2e
fix(resilience): retry Codex pre-output transport failures on the sam…
Prudhvivuda Aug 20, 2026
c00086e
fix(catalog): exclude generic 128k default from combo context min() (…
Prudhvivuda Aug 20, 2026
85aa84e
fix(tests): realign two more stream-utils passthrough cases with the …
MichaelYcJo Aug 20, 2026
3810a6c
fix(tests): realign provider count to 230 after merge-train batch1 co…
hartmark Aug 20, 2026
aed06f0
fix(open-sse): resolve GlmExecutor.buildHeaders type override + ratch…
tientien17 Aug 20, 2026
bc6129b
fix(relay): normalize bifrost errors, remap credential 404, fix analy…
diegosouzapw Aug 20, 2026
5089c17
fix(resilience): scope same-account transport retry out of emergency-…
hartmark Aug 20, 2026
0f13fe4
feat(radar): stable catalog export workflow with provenance (#10826)
diegosouzapw Aug 20, 2026
e9dd87a
docs: sync provider count to 343 (was stale at 342)
hartmark Aug 20, 2026
9fc3b29
fix(catalog): scope combo reasoning efforts by connection (#10723)
xz-dev Aug 20, 2026
f060117
[v3.8.50] refactor(codex): isolate virtual quota pools (#8367)
xz-dev Aug 20, 2026
74c5482
[defer] fix(routing): keep approximate context estimates advisory (#1…
xz-dev Aug 20, 2026
62f6e87
fix(responses): replace synthetic reasoning keepalive (#10806)
xz-dev Aug 20, 2026
05a3763
feat(db): report the SQLite driver and its durability on the DB healt…
maxmad64bis Aug 20, 2026
8cd248b
feat(server): native systemd sd_notify watchdog (Type=notify) (#10662)
maxmad64bis Aug 20, 2026
4c15c05
feat(call_logs): persist per-call error family and expose analytics b…
maxmad64bis Aug 20, 2026
0bfaaa4
feat(credential-health): per-connection sweep interval via healthChec…
maxmad64bis Aug 20, 2026
ff8b7b1
chore(startup): remove server-init.ts, a module nothing imports (#10780)
maxmad64bis Aug 20, 2026
bb98e9a
fix(probe): isolate probe-origin failures from all deactivation sites…
maxmad64bis Aug 20, 2026
b43ad73
fix(api): a target refusing the egress IP is not a healthy proxy (#10…
maxmad64bis Aug 20, 2026
f477250
fix(api): share one probe-target resolution between both proxy health…
maxmad64bis Aug 20, 2026
4821f9f
fix(proxy): probe a proxy's assigned provider host instead of a gener…
maxmad64bis Aug 20, 2026
a352c23
fix(chatgpt-web): refresh current model catalog (#10637)
backryun Aug 20, 2026
5e50814
perf(electron): defer hidden-start renderer creation (#10327)
backryun Aug 20, 2026
8122f6b
perf(electron): optionally unload renderer on close (4/8) (#10328)
backryun Aug 20, 2026
80a59c0
fix(images): route bare dall-e-3 to OpenAI (#10847)
RaviTharuma Aug 20, 2026
84d7e33
feat(resilience): warn on slow /healthz event-loop lag (#10827)
RaviTharuma Aug 20, 2026
7ac6bbb
docs(backend): document memory/skills/token-refresh event-loop cost (…
RaviTharuma Aug 20, 2026
6767f27
docs(db): document throttled pre-write SQLite backups (#10824)
RaviTharuma Aug 20, 2026
8b52596
docs(auth): distinguish access tokens, API keys, and management crede…
RaviTharuma Aug 20, 2026
6f08a08
feat(speech): accept response_format=ogg as an opus alias (#10822)
RaviTharuma Aug 20, 2026
77d7502
fix(opencode-plugin): keep bare combo ids unprefixed (#10821)
RaviTharuma Aug 20, 2026
2f73158
fix(auto): log empty auto-family pools once per process (#10820)
RaviTharuma Aug 20, 2026
56b9d00
fix(docker): warn when OMNIROUTE_MEMORY_MB disagrees with NODE_OPTION…
RaviTharuma Aug 20, 2026
7c6bf32
docs(docker): document SQLite single-replica HA limits (#10817)
RaviTharuma Aug 20, 2026
9eddaff
fix(admission): reserve Responses and Messages bodies before clone (#…
RaviTharuma Aug 20, 2026
9d2240e
fix(search): name /v1/search 502 provider and cause (#10756)
RaviTharuma Aug 20, 2026
2acafd9
feat(api): add GET /livez as a process-alive probe (#10819)
RaviTharuma Aug 20, 2026
d14a4d2
docs(docker): clarify latest tracks published stable SemVer (#10816)
RaviTharuma Aug 20, 2026
7288fa0
chore(ci): ignore ad-hoc BOT_TOKEN/BOT_URL in env-doc-sync (#10828)
RaviTharuma Aug 20, 2026
8c4a219
Revert "chore(ci): ignore ad-hoc BOT_TOKEN/BOT_URL in env-doc-sync (#…
hartmark Aug 20, 2026
8bc2f0f
chore(ci): ignore ad-hoc BOT_TOKEN/BOT_URL in env-doc-sync
RaviTharuma Aug 20, 2026
567b9db
test(ci): lock env-doc-sync ignore for ad-hoc BOT_TOKEN/BOT_URL
RaviTharuma Aug 20, 2026
db7c3ab
fix(images): retry Codex image generation on a sibling ChatGPT accoun…
diegosouzapw Aug 20, 2026
bbcfb73
feat(sse): Cursor plan images via Agent CLI (IMAGE_PROVIDERS.cursor) …
diegosouzapw Aug 20, 2026
b052c91
fix(fusion): apply vision-compatibility filter to fusion panel + judg…
diegosouzapw Aug 20, 2026
c6a0d09
fix(combo): await quota token limit lookup (#10686)
cryptiklemur Aug 20, 2026
31031f9
fix(analytics): query auto routing from call logs (#10685)
cryptiklemur Aug 20, 2026
06315c4
test(aihorde): guard client browser bundles (#10682)
cryptiklemur Aug 20, 2026
2a10d16
test(chatcore): wait for queued call log writes (#10683)
cryptiklemur Aug 20, 2026
22e46a0
fix(sse): advance Claude cache breakpoints on growing tails (#10684)
cryptiklemur Aug 20, 2026
54b3969
fix(compression): bound RTK raw-output store growth and make pointer …
stanleytejakusuma Aug 20, 2026
b59a88b
fix(pricing): 3 dead entries in LITELLM_PROVIDER_MAP silently drop sy…
stanleytejakusuma Aug 20, 2026
998c3c2
fix(pricing): DeepSeek V4 static defaults stale by 4 days, off by ~1.…
stanleytejakusuma Aug 20, 2026
01b3828
fix(sse): strip corrupted request_id from upstream SSE responses (#10…
HouMinXi Aug 20, 2026
424b950
fix(api): classify OAuth probe timeout as network_error (#10663)
HouMinXi Aug 20, 2026
f52fa9d
fix(embeddings): cool down account on hard errors (402/401/5xx) (#10529)
HouMinXi Aug 20, 2026
ff9a4c2
fix(combo): prevent unhandledRejection from per-model-timeout abort (…
HouMinXi Aug 20, 2026
621f30a
fix(cli): restore packaged machine-token authentication (#10468)
xiaoyaner0201 Aug 20, 2026
a72dc25
fix(proxy): stop reporting IPv4-only proxies as dead (#10868)
ntdat812 Aug 20, 2026
80b517e
fix(providers): treat a degraded cached catalog as a failed model syn…
ntdat812 Aug 20, 2026
d99701d
fix(mcp): give provider-bound tool calls their own fetch budget (#10860)
ntdat812 Aug 20, 2026
a280bfc
fix(context): budget base64 file payloads instead of counting them as…
ntdat812 Aug 20, 2026
3112304
fix(catalog): stop advertising auto/* when auto routing is disabled (…
ntdat812 Aug 20, 2026
053c64d
fix(i18n): stop rendering the Disabled status as "person with a disab…
ntdat812 Aug 20, 2026
e5b7c40
fix(security): judge outbound hosts by address, not by spelling (#10843)
ntdat812 Aug 20, 2026
2c84ce1
fix(build): ensure standalone package.json declares module type for N…
adevwithpurpose Aug 20, 2026
1fb466a
fix(cli): prevent DEP0190 child process spawn deprecation on Windows …
adevwithpurpose Aug 20, 2026
61051a1
perf(compression): accelerate Lite and Caveman whitespace & artifact …
adevwithpurpose Aug 20, 2026
12d0acb
fix(conversations): bound reconnect walk + memoize turn hashes (#7847…
adevwithpurpose Aug 20, 2026
6f28688
fix(antigravity): map Gemini 3.7 Flash tiers to upstream tiered endpo…
diegosouzapw Aug 20, 2026
7fd82eb
fix(api): guard combo updates against emptying, and fix copilot combo…
maxmad64bis Aug 20, 2026
362c5ac
feat(api): accept PATCH on /api/combos/[id] (#10869)
maxmad64bis Aug 20, 2026
dacf4c3
fix(cli): report .env lines that never take effect (#10870)
maxmad64bis Aug 20, 2026
82ed31d
docs(openapi): document GET and PUT on /api/combos/[id] (#10875)
maxmad64bis Aug 20, 2026
e6801ba
feat(proxy): surface anonymous egress-IP sharing in the health sweep …
maxmad64bis Aug 20, 2026
7f90af6
fix(db): remove stale MiMoCode state after provider sunset (#10873)
Zartharas Aug 20, 2026
0b51a24
fix(provider-health): keep unsupported validation probes neutral (#10…
Zartharas Aug 20, 2026
c40ff16
fix(providers): preserve health on inconclusive probes (#10799)
Zartharas Aug 20, 2026
25ba4f2
feat(antigravity): auto-rotate BYOP accounts to siblings on GCP_PROJE…
rqzbeh Aug 20, 2026
d87b97a
feat(routing): adaptive feedback loop v2 — operational/semantic quali…
Egorich-print Aug 20, 2026
8718328
fix(memory): enable agent memory save via MCP tools + builtin stream …
diegosouzapw Aug 20, 2026
c79faa4
fix(image): support OpenRouter reference-image edits (#10197) (#10363)
tiangao88 Aug 20, 2026
7afafce
feat(sse): add GLM-5.3 models and effort tiers (#10896)
diegosouzapw Aug 20, 2026
e968d11
feat(home): add Recent Requests panel + excludeTests allowlist fix (#…
diegosouzapw Aug 20, 2026
9935f80
fix(perplexity-web): make the built-in-search hint opt-in (#10904)
diegosouzapw Aug 20, 2026
ce6249c
Merge pull request #10528 from excessivechaos/fix/direct-dispatcher-t…
diegosouzapw Aug 20, 2026
d9cb4f5
fix(files): validate the list limit query parameter (#10673)
pacocartones Aug 20, 2026
bc9090b
fix(translator): merge consecutive same-role contents in direct claud…
Siva010 Aug 20, 2026
eb6f319
feat(providers): add tabitoken gateway and serve hcnsec's four protoc…
yawar-aquil Aug 20, 2026
0a1f1d4
fix(open-sse): declare Ollama Cloud reasoning models' supportedThinki…
hartmark Aug 20, 2026
87719f2
fix(domain): treat unreported Antigravity quota fraction as unknown, …
hartmark Aug 20, 2026
018badc
fix: route Playground ChatTab Send to the selected endpoint, not just…
hartmark Aug 20, 2026
bed4d24
fix(config): exclude cookie-auth image bridges from unprefixed model …
hartmark Aug 20, 2026
6d04367
fix: skip expensive RTK compression stats computation on no-op runs (…
hartmark Aug 20, 2026
9603ec1
fix(sse): log upstream error body in COMBO per-target failure warning…
hartmark Aug 20, 2026
0458c5a
fix(db): disambiguate Kiro OAuth dedup by profileArn (#10815)
hartmark Aug 20, 2026
4ec080d
fix(api): POST /v1/search names unknown providers instead of opaque 4…
hartmark Aug 20, 2026
b668d91
fix(sse): canonicalize alias provider ids before quota fetcher lookup…
hartmark Aug 20, 2026
1974177
fix(sse): strip commentary items from Responses response.completed sn…
hartmark Aug 20, 2026
5d9998e
Merge pull request #10912 from diegosouzapw/fix/10095-antigravity-mul…
diegosouzapw Aug 21, 2026
c535df9
Merge pull request #10923 from diegosouzapw/fix/10156-responses-comme…
diegosouzapw Aug 21, 2026
050c7c0
Merge pull request #10913 from diegosouzapw/fix/10592-playground-endp…
diegosouzapw Aug 21, 2026
7756aef
Merge pull request #10917 from diegosouzapw/fix/10597-combo-log-error…
diegosouzapw Aug 21, 2026
699be22
Merge pull request #10915 from diegosouzapw/fix/10765-rtk-uncondition…
diegosouzapw Aug 21, 2026
c7e264e
Merge pull request #10911 from diegosouzapw/fix/10788-opencode-effort…
diegosouzapw Aug 21, 2026
590cbbe
Merge pull request #10918 from diegosouzapw/fix/10815-kiro-oauth-dedup
diegosouzapw Aug 21, 2026
3669df2
Merge pull request #10914 from diegosouzapw/fix/10848-image-scan-cook…
diegosouzapw Aug 21, 2026
f66c986
Merge pull request #10919 from diegosouzapw/fix/10849-search-provider…
diegosouzapw Aug 21, 2026
1f04e73
Merge pull request #10922 from diegosouzapw/fix/10877-quota-alias-lookup
diegosouzapw Aug 21, 2026
3fed9e8
fix(sse): add the missing minimax-music dispatch to music generation …
Aug 21, 2026
1188401
fix(deps): upgrade @atjsh/llmlingua-2 to 2.0.5 and drop @tensorflow/t…
jonlwheat2-gif Aug 21, 2026
f71f3da
feat(routing): add DISABLE_CONTEXT_WINDOW_CHECKS bypass for the direc…
diegosouzapw Aug 21, 2026
2cd14b1
fix(providers): rename Freepik slug to Magnific and validate Magnific…
RaviTharuma Aug 21, 2026
769ab62
fix(reasoning): preserve compatible response state (#10574)
jackjinke Aug 21, 2026
00aba8e
fix(sse): include prompt cache usage fields on message_stop fallback …
NahuSaruf Aug 21, 2026
28788cb
fix(cli): route provider tests through connection API (#10572)
hydraxman Aug 21, 2026
cbf2377
feat(providers): implement native support for Freebuff AI gateway (#6…
adrianaryaputra Aug 21, 2026
d098114
fix(combo): guarantee combo loops terminate with an actionable error …
herjarsa Aug 21, 2026
74c9e7e
feat(combo): Auto-Combo snapshot generation/duplication in the UX (#1…
swingtempo Aug 21, 2026
d6737bf
fix(zed-hosted): add connection test support for Zed Hosted Models (#…
Hsia97 Aug 21, 2026
374b387
fix(opencode): route Muse Spark 1.2 models to OpenAI Responses API (#…
zoser69 Aug 21, 2026
1d4c4cd
fix(sse): re-run strict system hoist after format translation (#10803)
Kizuno18 Aug 21, 2026
b87056a
feat(a2a): A2A v1.0 client compatibility (SendMessage alias + v1.0 ag…
wpec Aug 21, 2026
b661b71
fix(sse,compression): graceful silent-close truncation + compressTool…
minhlongs Aug 21, 2026
6098954
test(providers): regenerate translate-path golden snapshot for freebu…
hartmark Aug 21, 2026
fa0cd5a
fix(cursor): discover account Agent endpoint (#10804)
tuandinh0801 Aug 21, 2026
16fc433
fix(skills): make marketplace installs available to API keys (#10854)
kriptoburak Aug 21, 2026
6fd4040
feat(cli): support Grok Build custom host configuration (#10830)
tuandinh0801 Aug 21, 2026
5bf694f
chore(deps): bump github/codeql-action from 4.37.6 to 4.37.7 (#10928)
dependabot[bot] Aug 21, 2026
af47a5f
chore(deps): bump github/codeql-action/analyze from 4.37.6 to 4.37.7 …
dependabot[bot] Aug 21, 2026
34f65e1
chore(deps): bump github/codeql-action/init from 4.37.6 to 4.37.7 (#1…
dependabot[bot] Aug 21, 2026
1d29188
deps: bump the development group with 2 updates (#10932)
dependabot[bot] Aug 21, 2026
7fa6528
deps: bump the production group with 5 updates (#10931)
dependabot[bot] Aug 21, 2026
24f31cf
feat(command-code): expose reasoning effort suffixes (#10884)
excessivechaos Aug 21, 2026
b580992
feat(opencode-go): expose Muse Spark reasoning effort aliases (#10883)
excessivechaos Aug 21, 2026
fac2a93
fix(dashboard): guard non-string apiKey in CLI tool cards (#10872)
Rahulsharma0810 Aug 21, 2026
967b56a
fix(cline): stop generating proxy task ids (#10279)
arafatkatze Aug 21, 2026
45b42ec
fix(compression): bump vendored GCF with numeric-domain and surplus f…
blackwell-systems Aug 21, 2026
3805494
feat(vision-bridge): consolidate vision bridge fixes (catalog verdict…
Stazyu Aug 21, 2026
8c51304
Merge branch 'release/v3.8.50' into fix/opencode-plugin-provider-hook…
hartmark Aug 21, 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
  •  
  •  
  •  
76 changes: 75 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,15 @@ PORT=20128
# unaffected by this dev-only flag).
OMNIROUTE_USE_TURBOPACK=1

# Disable systemd sd_notify (Type=notify / WatchdogSec=) even when running
# under a systemd unit with NOTIFY_SOCKET set.
# Used by: scripts/dev/systemd-notify.mjs. Set to 1 to disable.
# OMNIROUTE_DISABLE_SD_NOTIFY=1

# Injected by systemd when running under a service unit (sd_notify protocol).
# Read by scripts/dev/systemd-notify.mjs — never set this yourself.
# NOTIFY_SOCKET=/run/systemd/notify

# Skip the SQLite integrity health check on startup (faster boot on large DBs).
# Used by: src/lib/db/core.ts, src/lib/db/healthCheck.ts. Set to 1 to skip.
# OMNIROUTE_SKIP_DB_HEALTHCHECK=1
Expand Down Expand Up @@ -408,6 +417,15 @@ ALLOW_API_KEY_REVEAL=false
# by OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT and the heap-pressure shed instead. Set a positive
# value only on memory-constrained deployments that need a hard ceiling.
# OMNIROUTE_CHAT_HARD_MAX_MESSAGES=0

# Skip OmniRoute's local context-window and max-input-token check for direct
# single-model requests. Default: false (dangerous opt-in).
# The upstream provider still enforces its real limits, so enabling this can
# replace an early OmniRoute 400 with an upstream context-length error.
# Prompt compression and the model's own output-token cap remain active.
# Also configurable from Dashboard > Settings > Feature Flags; no restart is
# required. Used by: src/shared/utils/featureFlags.ts and open-sse/handlers/chatCore.ts.
# DISABLE_CONTEXT_WINDOW_CHECKS=false
# How long a heavy request waits for heavyweight capacity before a retryable 503.
# A short bounded wait serializes agent bursts instead of an instant 503; 0 = instant.
# Default 2000 (2s).
Expand Down Expand Up @@ -696,6 +714,11 @@ NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=true
# ALL_PROXY=socks5://127.0.0.1:7890
# NO_PROXY=localhost,127.0.0.1

# Pin the echo-IP target used by proxy egress probes. Unset, the probe tries
# api64.ipify.org then api4.ipify.org so IPv4-only tunnels are not reported dead.
# Used by: src/lib/proxyEchoTarget.ts.
# OMNIROUTE_PROXY_ECHO_URL=https://api4.ipify.org?format=json

# Max concurrent sockets per cached HTTP/SOCKS proxy dispatcher.
# Long-lived SSE streams such as Codex /v1/responses need more than one
# connection when multiple requests share the same account-level proxy.
Expand Down Expand Up @@ -876,13 +899,21 @@ NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=true
# Set to 0/false/off to skip compression entirely. Default: rtk
# OMNIROUTE_MCP_DESCRIPTION_COMPRESSION=rtk

# Abort budget (ms) for MCP-server internal management reads (health, resilience,
# combos, quota, usage). Default: 10000. Used by: open-sse/mcp-server/fetchTimeout.ts
# OMNIROUTE_MCP_FETCH_TIMEOUT_MS=10000

# Abort budget (ms) for MCP hops that wait on a provider (route_request, web_search,
# web_fetch). Default: 60000. Used by: open-sse/mcp-server/fetchTimeout.ts
# OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS=60000

# Model catalog sync interval in hours.
# Used by: src/shared/services/modelSyncScheduler.ts — periodic model refresh.
# Default: 24
# MODEL_SYNC_INTERVAL_HOURS=24

# Provider limits sync interval in minutes (rate limit windows, quotas).
# Used by: src/server-init.ts — polls provider health endpoints.
# Used by: src/lib/usage/providerLimits.ts — polls provider health endpoints.
# Default: 70
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70

Expand Down Expand Up @@ -1033,6 +1064,10 @@ PROVIDER_LIMITS_SYNC_SPACING_MS=1500
# Used by: src/lib/db/core.ts::getDbHealthCheckIntervalMs().
#OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS=21600000

# WAL truncate cadence override (ms). Set to 0 to disable. Default: 21600000 (6h).
# Used by: src/lib/db/core.ts::getWalTruncateIntervalMs().
#OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS=21600000

# Skip the Redis-backed auth cache used by API key lookups (forces DB reads).
# Used by: src/lib/db/apiKeys.ts. Set to 1 to disable. Default: enabled.
#OMNIROUTE_DISABLE_REDIS_AUTH_CACHE=0
Expand Down Expand Up @@ -1348,6 +1383,14 @@ CURSOR_USER_AGENT="Cursor/3.4"
# FETCH_BODY_TIMEOUT_MS=600000 # Time to receive full response body
# FETCH_CONNECT_TIMEOUT_MS=30000 # TCP connection establishment (default: 30s)
# FETCH_KEEPALIVE_TIMEOUT_MS=4000 # Keep-alive socket idle timeout (default: 4s)
# OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS=30000 # Bounded response-start window per direct
# # (no-proxy) attempt (#10214). A silently-dropped
# # pooled keep-alive socket surfaces no transport
# # error, so without this bound a direct request can
# # stall until undici's headersTimeout (600s) or the
# # caller's deadline; on expiry the request retries
# # once on a fresh no-keep-alive socket. 0 disables
# # the bound (default: 30000 = 30s).

# Default timeout (ms) for src/shared/utils/fetchTimeout.ts. Acts as the
# fallback when FETCH_TIMEOUT_MS is unset. Default: 120000 (2 min).
Expand Down Expand Up @@ -1402,6 +1445,14 @@ CURSOR_USER_AGENT="Cursor/3.4"
# OMNIROUTE_PPLX_TLS_TIMEOUT_MS=30000
# OMNIROUTE_PPLX_TLS_GRACE_MS=10000

# ── Perplexity web: built-in-search hint ──
# Used by: open-sse/executors/perplexity-web/protocol.ts — appends "You have
# built-in web search. Answer questions directly using search results." to the
# caller's system message. Off by default: Perplexity's answer engine searches
# anyway, and for coding clients the sentence leaks into replies as
# meta-commentary. Set to 1/true/yes/on to restore the old behavior.
# OMNIROUTE_PPLX_SEARCH_HINT=0

# ── Grok web TLS sidecar (Chrome-fingerprinted client) ──
# Used by: open-sse/services/grokTlsClient.ts — wire-level timeout for the
# bogdanfinn/tls-client koffi binding and the JS-side grace window layered on
Expand Down Expand Up @@ -1975,6 +2026,16 @@ APP_LOG_TO_FILE=true
# Reachability probe target for the scheduler and the auto-test endpoint.
# Point it at an internal/self-hosted URL to avoid the public default.
# PROXY_HEALTH_TEST_URL=https://httpbin.org/ip
# Probes started at once per batch, for the scheduler and the auto-test endpoint.
# Floored at 1 and capped at 50. Default: 10.
# PROXY_HEALTH_TEST_CONCURRENCY=10
# Delay in ms between two probe departures inside a batch. Without it the whole batch
# leaves at once and a shared egress IP can trip a rate-limited target. 0 disables the
# spacing; capped at 5000. Default: 100.
# PROXY_HEALTH_TEST_STAGGER_MS=100
# Set "false" to stop probing the real host of a proxy's assigned provider (GET /models,
# no API key) and always use the generic target above instead. Default: enabled.
# PROXY_HEALTH_USE_PROVIDER_TARGET=true
# Set "true" to let the scheduler auto-remove proxies after repeated failures.
# PROXY_AUTO_REMOVE=false
# Consecutive failures before an auto-remove fires. Default: 3.
Expand Down Expand Up @@ -2117,6 +2178,19 @@ APP_LOG_TO_FILE=true
# Used by: open-sse/utils/cursorAgentCliVersion.ts. Default: detect local install, else pin.
# CURSOR_AGENT_CLI_VERSION=2026.07.08-0c04a8a

# Path to the Cursor Agent binary used for image generation.
# Used by: open-sse/handlers/imageGeneration/providers (CURSOR_IMAGE.md).
# CURSOR_AGENT_BIN=/path/to/agent

# Cursor image-generation wall clock (ms). Default: 210000.
# CURSOR_IMG_TIMEOUT_MS=210000

# Shared-seat concurrency gate for Cursor image jobs. Default: 2.
# CURSOR_IMG_MAX_CONCURRENT=2

# Override Cursor CLI --model for image jobs. Default: request model / auto.
# CURSOR_IMG_MODEL=auto

# Cursor Agent CLI data directory override (versions live under <dir>/versions/).
# Used by: open-sse/utils/cursorAgentCliVersion.ts. Default: ~/.local/share/cursor-agent (unix)
# or %LOCALAPPDATA%\cursor-agent (win32). Official agent CLI also honors this var.
Expand Down
14 changes: 7 additions & 7 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ updates:
# bumps; majors here need their own PR and a deliberate migration review.
- dependency-name: "ioredis"
update-types: ["version-update:semver-major"]
# @huggingface/transformers is HARD-PINNED at 3.5.2 (exact, no caret) — FROZEN.
# It is load-bearing for the LLMLingua ONNX compression engine (open-sse/services/
# compression/engines/llmlingua/ — worker.ts pins @huggingface/transformers@3.5.2)
# and for local memory embeddings (src/lib/memory/embedding/transformersLocal.ts),
# and was VPS-validated at 3.5.2 (#4014). 4.x breaks both, and even 3.x minors must
# be re-validated on the VPS — so freeze ALL auto-bumps (no update-types = ignore
# every version). Migrate it intentionally, not via dependabot (#4050).
# @huggingface/transformers is VPS-validated at ^4.2.0 (migrated intentionally in
# #9962). It is load-bearing for the LLMLingua ONNX compression engine (open-sse/
# services/compression/engines/llmlingua/ — @atjsh/llmlingua-2@2.0.5 peers on
# "@huggingface/transformers": "^3.5.2 || ^4.0.0") and for local memory embeddings
# (src/lib/memory/embedding/transformersLocal.ts). Further majors must be re-validated
# on the VPS — so keep auto-bumps frozen (no update-types = ignore every version).
# Migrate it intentionally, not via dependabot (#4050).
- dependency-name: "@huggingface/transformers"

- package-ecosystem: "github-actions"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
- uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
with:
languages: javascript-typescript
queries: security-extended
- uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
- uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
with:
category: "/language:javascript-typescript"
2 changes: 1 addition & 1 deletion .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ jobs:
- name: Upload Trivy SARIF to Security tab
if: needs.prepare.outputs.version != 'main'
continue-on-error: true
uses: github/codeql-action/upload-sarif@v4.37.6
uses: github/codeql-action/upload-sarif@v4.37.7
with:
sarif_file: trivy-results.sarif
category: trivy-image
Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/radar-export.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Publica o export estável do catálogo consumido pelo OmniRoute Radar numa URL
# fixa (asset de release `radar-export-latest`), para o servidor privado do Radar
# (1 GB RAM, nunca clona/builda o OmniRoute) baixá-lo via `RADAR_EXPORT_URL` em
# vez de depender do snapshot gravado no deploy. Fonte: scripts/release/radar-export.mjs.
#
# A URL estável resultante (definir em RADAR_EXPORT_URL no .env do radar-server):
# https://github.com/diegosouzapw/OmniRoute/releases/download/radar-export-latest/export-omniroute.json
name: Radar Export

on:
workflow_dispatch: # o operador pode publicar sob demanda (de qualquer ref)
push:
branches: [main] # produção: só o catálogo do main clobra o asset estável
paths:
- open-sse/config/freeModelCatalog.data.ts
- open-sse/config/freeModelCatalog.ts
- open-sse/config/providerRegistry.ts
- open-sse/config/providers/**
- scripts/release/radar-export.mjs
- .github/workflows/radar-export.yml
schedule:
- cron: "17 6 * * 1" # semanal (segunda 06:17 UTC): mantém geradoEm/proveniência frescos

permissions:
contents: read

concurrency:
group: radar-export-${{ github.ref }}
cancel-in-progress: true

env:
CI_NODE_VERSION: "24"

jobs:
publish-export:
runs-on: ubuntu-latest
permissions:
contents: write # gh release upload — clobra o asset estável do export
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false # publish usa GH_TOKEN via gh release, não a credencial do checkout
- uses: actions/setup-node@v7
with:
node-version: ${{ env.CI_NODE_VERSION }}
cache: npm
- run: npm ci
- name: Generate catalog export with provenance
run: node --import tsx/esm scripts/release/radar-export.mjs "$RUNNER_TEMP/export-omniroute.json"
- name: Publish to the stable release asset
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
TAG="radar-export-latest"
# Cria o release estável na primeira vez; nas seguintes só re-anexa o asset.
if ! gh release view "$TAG" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
gh release create "$TAG" \
--repo "$GITHUB_REPOSITORY" \
--title "Radar catalog export (rolling)" \
--notes "Export estável do catálogo OmniRoute para o Radar. Atualizado automaticamente; NÃO é um release de versão do produto." \
--latest=false
fi
gh release upload "$TAG" "$RUNNER_TEMP/export-omniroute.json" --repo "$GITHUB_REPOSITORY" --clobber
Loading
Loading