356 Commits
Author SHA1 Message Date
github-actions[bot] 45146ccce7 bot: update model pricing from LiteLLM [skip ci] 2026-09-21 11:11:17 +00:00
github-actions[bot] 9c074b3ee9 bot: update model pricing from LiteLLM [skip ci] 2026-09-14 11:02:00 +00:00
whit3rabbit 76ac148840 fix(policy): fail closed for direct route-scoped access (#50) 2026-09-13 18:54:48 -05:00
whit3rabbit 1650927fd1 chore(release): bump version to 0.16.2 2026-09-12 09:33:55 -05:00
whit3rabbit 4ff1e94153 Merge PR #49: chore(deps): bump react-router and react-router-dom in /crates/proxy/admin-ui 2026-09-12 09:28:02 -05:00
whit3rabbit ae3e0e268d fix(policy): preserve backend prefix route scoping fallback 2026-09-12 09:27:38 -05:00
dependabot[bot] f48e82450b chore(deps): bump react-router and react-router-dom
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) to 7.18.3 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom). These dependencies need to be updated together.


Updates `react-router` from 6.30.6 to 7.18.3
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router@7.18.3/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.18.3/packages/react-router)

Updates `react-router-dom` from 6.30.6 to 7.18.3
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@7.18.3/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.18.3/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.18.3
  dependency-type: indirect
- dependency-name: react-router-dom
  dependency-version: 7.18.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-12 14:18:41 +00:00
whit3rabbit d4676a056e Merge PR #37: bump js-yaml from 4.3.1 to 4.3.2 2026-09-12 09:18:16 -05:00
whit3rabbit 38a9dcb7e7 Merge PR #36: bump colord from 2.9.3 to 2.10.0 2026-09-12 09:18:05 -05:00
whit3rabbit 3ddff97511 Merge PR #34: bump @humanfs/node from 0.16.7 to 0.16.8 2026-09-12 09:17:53 -05:00
whit3rabbit 2e4ac76c34 Merge PR #33: bump decode-uri-component and query-string 2026-09-12 09:17:42 -05:00
whit3rabbit c7efb724bb Merge PR #32: bump mermaid from 11.15.0 to 11.16.1 in /crates/proxy/admin-ui 2026-09-12 09:17:28 -05:00
whit3rabbit 36294ba345 Merge PR #35: bump react-router-dom from 6.30.4 to 6.30.6 2026-09-12 09:17:15 -05:00
whit3rabbit 94a5cdba97 Merge PR #48: Account for Anthropic web search costs 2026-09-12 09:17:07 -05:00
whit3rabbit b58005fbe9 Merge PR #46: fix: stop printing admin token in startup banner 2026-09-12 09:12:58 -05:00
whit3rabbit 2d6183b3c8 Merge PR #45: fix(proxy): enforce exact route scopes 2026-09-12 09:11:11 -05:00
whit3rabbit eef6f7a70f Merge PR #41: fix: reject unauthenticated loopback requests 2026-09-12 09:08:41 -05:00
whit3rabbit 27566a65c0 Merge PR #39: fix(router): constrain explicit model picks 2026-09-12 09:08:26 -05:00
whit3rabbit 9cd5823545 Merge PR #42: fix: enforce virtual key policy after auto routing 2026-09-12 09:07:49 -05:00
whit3rabbit c927fe3b3c Merge PR #40: Restore realtime model pricing to prevent virtual-key budget bypass 2026-09-12 09:07:04 -05:00
whit3rabbit 5834a65e61 Merge PR #38: fix: restore Gemini live-preview pricing to prevent virtual-key billing bypass 2026-09-12 09:04:55 -05:00
whit3rabbit b633f3ab9e fix(proxy): enforce exact route scopes 2026-09-12 08:58:59 -05:00
whit3rabbit b6e1764321 fix: enforce virtual key policy after auto routing 2026-09-12 08:58:24 -05:00
whit3rabbit 201d7ea5cd fix: reject unauthenticated loopback requests 2026-09-12 08:58:06 -05:00
whit3rabbit 5f9381b2fe fix: restore realtime model pricing 2026-09-12 08:57:42 -05:00
whit3rabbit 74c03691a5 fix(router): constrain explicit model picks 2026-09-12 08:57:26 -05:00
whit3rabbit c198113e7c fix: restore Gemini live preview pricing 2026-09-12 08:57:09 -05:00
whit3rabbit dbf69c9dd8 fix(proxy): allow clippy::result_large_err on middleware response handlers 2026-09-11 20:30:33 -05:00
dependabot[bot] dc9ac6b28a chore(deps-dev): bump js-yaml in /crates/proxy/admin-ui
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.3.1 to 4.3.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.2/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.3.1...4.3.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-12 01:19:41 +00:00
whit3rabbit 4c45d33e55 feat(translator): add Role::System, normalize_anthropic_request_json, bump 0.16.1 2026-09-11 20:18:18 -05:00
dependabot[bot] debb23999a chore(deps): bump colord from 2.9.3 to 2.10.0 in /crates/proxy/admin-ui
Bumps [colord](https://github.com/omgovich/colord) from 2.9.3 to 2.10.0.
- [Release notes](https://github.com/omgovich/colord/releases)
- [Changelog](https://github.com/omgovich/colord/blob/master/CHANGELOG.md)
- [Commits](https://github.com/omgovich/colord/commits/v2.10)

---
updated-dependencies:
- dependency-name: colord
  dependency-version: 2.10.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-11 05:59:06 +00:00
dependabot[bot] 446519ee9f chore(deps): bump react-router-dom in /crates/proxy/admin-ui
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.30.4 to 6.30.6.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@6.30.6/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.30.6/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 6.30.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-08 17:29:47 +00:00
github-actions[bot] 55910949c2 bot: update model pricing from LiteLLM [skip ci] 2026-09-07 10:48:55 +00:00
dependabot[bot] 2a4f4d0a03 chore(deps-dev): bump @humanfs/node in /crates/proxy/admin-ui
Bumps [@humanfs/node](https://github.com/humanwhocodes/humanfs/tree/HEAD/packages/node) from 0.16.7 to 0.16.8.
- [Release notes](https://github.com/humanwhocodes/humanfs/releases)
- [Changelog](https://github.com/humanwhocodes/humanfs/blob/main/packages/node/CHANGELOG.md)
- [Commits](https://github.com/humanwhocodes/humanfs/commits/node-v0.16.8/packages/node)

---
updated-dependencies:
- dependency-name: "@humanfs/node"
  dependency-version: 0.16.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-03 16:10:59 +00:00
dependabot[bot] 2d123ce8df chore(deps): bump decode-uri-component and query-string
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) and [query-string](https://github.com/sindresorhus/query-string). These dependencies needed to be updated together.

Updates `decode-uri-component` from 0.4.1 to 0.5.0
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.4.1...v0.5.0)

Updates `query-string` from 9.4.0 to 9.5.1
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v9.4.0...v9.5.1)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-version: 0.5.0
  dependency-type: indirect
- dependency-name: query-string
  dependency-version: 9.5.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-03 13:52:08 +00:00
github-actions[bot] 2efe60c33d bot: update model pricing from LiteLLM [skip ci] 2026-08-31 11:55:16 +00:00
github-actions[bot] 4628d03a0d bot: update model pricing from LiteLLM [skip ci] 2026-08-24 06:29:26 +00:00
github-actions[bot] 3f7399dcf7 bot: update model pricing from LiteLLM [skip ci] 2026-08-17 06:25:21 +00:00
github-actions[bot] 55fecc5bf6 bot: update model pricing from LiteLLM [skip ci] 2026-08-10 07:01:40 +00:00
dependabot[bot] 91a3fa1e62 chore(deps): bump mermaid in /crates/proxy/admin-ui
Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 11.15.0 to 11.16.1.
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Commits](https://github.com/mermaid-js/mermaid/compare/mermaid@11.15.0...mermaid@11.16.1)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-version: 11.16.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-08 04:58:12 +00:00
whit3rabbit 3c5c40ef53 chore(deps): fix brace-expansion, dompurify, js-yaml vulnerabilities via npm audit fix
Supersedes dependabot PR #28, #29, #30 (transitive deps, conflicting
lockfile regions after postcss merge). react-router CVEs left open:
fix requires v6->v7 major bump, tracked separately.
2026-08-03 19:46:08 -05:00
dependabot[bot] cd1039ecd8 chore(deps): bump postcss in /crates/proxy/admin-ui (#31)
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.15 to 8.5.25.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.15...8.5.25)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-03 19:43:53 -05:00
whit3rabbitandClaude 5d6a780c45 fix(providers): preserve adaptive-only list across snapshot regen
Refresh the LiteLLM provider/model catalog and pricing, and fix
--write-rust-snapshot so it no longer clobbers the hand-maintained
ANTHROPIC_ADAPTIVE_ONLY_THINKING_MODELS list. Running the generator
previously overwrote the whole file and silently dropped that constant,
breaking the build until it was hand-restored.

- Pricing: refresh assets/model_pricing.json + proxy copy from LiteLLM
  (177 -> 169 entries; +claude-opus-5, gemini-3.5/3.6-flash,
  gemini-omni-flash-preview; -14 gpt-*-realtime*; price changes on
  gpt-5.6-luna, gpt-5.6-terra).
- Snapshot: regenerate litellm_snapshot.rs; claude-opus-5 (released
  2026-07-24) is now in the data-driven ADAPTIVE_THINKING / MAX / XHIGH
  lists from upstream, which matches its documented high/xhigh/max support.
- Generator (the fix): emit ANTHROPIC_ADAPTIVE_ONLY_THINKING_MODELS from a
  new ANTHROPIC_ADAPTIVE_ONLY_THINKING Python constant in
  check_litellm_providers.py, so litellm_snapshot.rs is 100% generated and
  the constant survives every regeneration. Add claude-opus-5 and
  claude-sonnet-5, which reject thinking.type:"enabled"/budget_tokens with
  a 400 (adaptive-only) per Anthropic's "Configurations each model rejects"
  table. Not derivable from LiteLLM flags (extended_thinking is true for
  every thinking model), so it stays hand-curated in the script.
- Tests: bump anthropic catalog count 23 -> 24; assert opus-5 and sonnet-5
  require adaptive thinking (reject budget_tokens).
- Docs: correct the stale "hand-maintained tail" gotcha in
  crates/providers/CLAUDE.md; add Opus 5/Sonnet 5 to the reject-list note.

Verified: idempotent regen (two runs byte-identical), cargo fmt --check
clean, cargo clippy (default features, as CI runs) clean, cargo test
--workspace 1728 passed / 0 failed / 10 ignored (live-API).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-03 15:17:26 -05:00
whit3rabbitandClaude 3b034b6c2f feat(router): surface real models to Claude Code via gateway discovery
Claude Code's /model picker showed fake 'Claude Sonnet/Opus/Haiku' because /v1/models returned the static Anthropic catalog and the launch command did not enable discovery. With the Auto Router on, /v1/models now advertises the real backend models (autorouter tier targets + managed backend catalogs + model_list), and a model picked from the picker routes straight to its backend (explicit pick wins over tier signals). claude-* alias traffic still flows through the configured tiers.

- /v1/models: real models when router enabled; static Anthropic catalog fallback otherwise
- explicit-pick deferral in /v1/messages and /v1/chat/completions (AppState::resolve_explicit_pick)
- CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=true in the Auto Router copy-command and the README/CLI launch instructions
- tests: unit (push_model_row, RouterConfig::active_tiers) + integration (explicit_pick beats think tier)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-02 21:34:40 -05:00
github-actions[bot] 514cfa3b6a bot: update model pricing from LiteLLM [skip ci] 2026-07-20 08:31:17 +00:00
whit3rabbit ebf5455b10 docs: simplify README, add docs/CLI.md, center ASCII art and add WebUI screenshots, and add copy-command to Auto Router 2026-07-16 20:41:24 -05:00
whit3rabbitandClaude 75a5a3a230 chore: release v0.16.0
Bump workspace + all inter-crate version refs from 0.15.1 to 0.16.0
(workspace Cargo.toml, anyllm_client pinned version, batch_engine,
proxy's 8 internal deps, optimizer core/passes/scorer + cli + benches).
Refresh Cargo.lock. Move CHANGELOG [Unreleased] -> [0.16.0] - 2026-07-16
and add a fresh empty [Unreleased]; bump the README deb filename to
anyllm-proxy_0.16.0-1_amd64.deb and add the v0.16.0 compare link.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 20:12:53 -05:00
whit3rabbitandClaude c90fb9f640 feat: loopback-open auth default, --port flag, max_tokens fix, UI banner
- Auth default is now loopback-open (not reject-all). With no
  PROXY_API_KEYS, no PROXY_OPEN_RELAY, no virtual keys and no OIDC,
  loopback TCP peers are accepted and LAN/remote peers get 401. The
  decision uses the real TCP peer (ConnectInfo via
  into_make_service_with_connect_info), not the spoofable
  X-Forwarded-For. effective_auth_mode() (keys/open_relay/loopback_only)
  + proxy_key_count are surfaced on GET /admin/api/status; the admin UI
  shows a warning banner when no key is set.
- Add --port/-p CLI flag that sets LISTEN_PORT for the run. Stripped
  before any run/providers subcommand so flags meant for the launched
  tool survive; pure scan is unit-tested.
- Startup port handling: the run subcommand pre-checks the listen port
  and fails fast with a hint when in use; wait_for_port readiness timeout
  10s -> 30s; listener bind failures (proxy + admin) now print an
  actionable message and exit(1) instead of panicking.
- POST /v1/chat/completions no longer 400s on a missing max_tokens for
  OpenAI-compatible backends. The internal placeholder is stripped via a
  new OMIT_MAX_TOKENS_MARKER so the backend applies its own default
  (e.g. LM Studio's 8192); the marker never leaks upstream. Explicit
  max_tokens is still forwarded verbatim. Anthropic backends unchanged.
- Tier router logs the selected tier at info (tier/backend/model)
  instead of routing silently.
- Admin UI modal no longer dismisses when a text-selection drag starts
  inside the card (dismiss only on a press that begins on the backdrop).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 20:08:13 -05:00
whit3rabbitandClaude Opus 4.8 063af0d423 fix: admin UI provider model cache wipe, chip removal, stale-backend edit (v0.15.1)
- discover/refresh no longer wipe provider_models_cache on an empty result
  (DELETE-then-INSERT upsert skipped when zero ids), preserving autorouter
  model suggestions.
- Provider editor: removed model chips stick; persisted names seeded once
  instead of re-unioned on every cache refetch.
- Managed-backend edit falls back to SQLite on an in-memory miss, so a row
  skipped at startup no longer 404s on every save (heals value-fixable
  configs; unknown provider_id still 400s).
- Add get_managed_backend DB helper + round-trip test.
- Bump workspace to 0.15.1; CHANGELOG + README deb filename.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 21:50:42 -05:00
whit3rabbitandClaude Opus 4.8 3dc4f8d491 chore: release v0.15.0
Bump workspace + all crate versions 0.14.1 -> 0.15.0, move CHANGELOG
[Unreleased] into [0.15.0], backfill compare links, update README deb URL.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 20:59:27 -05:00