freshcrate
Skin:/
Home > Infrastructure > gproxy

gproxy

gproxy is a Rust-based multi-channel LLM proxy that exposes OpenAI / Claude / Gemini-style APIs through a unified gateway, with a built-in admin console, user/key management, and request/usage auditin

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

gproxy is a Rust-based multi-channel LLM proxy that exposes OpenAI / Claude / Gemini-style APIs through a unified gateway, with a built-in admin console, user/key management, and request/usage auditing.

README

GPROXY

A high-performance LLM proxy server written in Rust. Multi-provider, multi-tenant, with an embedded React console — all in a single static binary.


What it does

GPROXY exposes a unified, OpenAI / Anthropic / Gemini compatible HTTP surface on top of many upstream LLM providers, and adds the primitives you need to run it as a shared service:

  • Multi-provider routing — OpenAI, Anthropic, Vertex / Gemini, DeepSeek, Groq, OpenRouter, NVIDIA, Claude Code, Codex, Antigravity, and any OpenAI-compatible custom endpoint.
  • Two routing modes — aggregated /v1/... (provider encoded in the model name) and scoped /{provider}/v1/... (provider in the URL).
  • Same-protocol passthrough — minimal-parsing fast path when the client and upstream speak the same dialect.
  • Cross-protocol translation — an OpenAI client can route to a Claude upstream (and vice versa) through the protocol transform layer.
  • Multi-tenant auth — users, API keys, glob model permissions, RPM / RPD / token rate limits, and USD-denominated quotas.
  • Claude prompt caching — server-side cache_breakpoint rules and magic-string triggers for anthropic / claudecode channels.
  • Request & message rewrite rules — JSON-field manipulation on the request body, plus regex text substitution on message content.
  • Embedded React console — built into the binary, mounted at /console. No separate frontend to deploy.
  • Pluggable storage — SQLite, PostgreSQL, MySQL via SeaORM / SQLx, with optional XChaCha20-Poly1305 at-rest encryption.
  • Rust SDKgproxy-sdk re-exports the protocol, routing, and provider crates so you can embed the engine into your own service.

Quick start

# 1. Build
git clone https://github.com/LeenHawk/gproxy.git
cd gproxy
cargo build -p gproxy --release

# 2. Run with a minimal config
GPROXY_CONFIG=./gproxy.toml ./target/release/gproxy

A minimal gproxy.toml seed that creates an admin user with wildcard permissions:

[global]
host = "127.0.0.1"
port = 8787
dsn = "sqlite://./data/gproxy.db?mode=rwc"
data_dir = "./data"

[[providers]]
name = "openai-main"
channel = "openai"
settings = { base_url = "https://api.openai.com/v1" }
credentials = [ { api_key = "sk-your-upstream-key" } ]

[[models]]
provider_name = "openai-main"
model_id = "gpt-4.1-mini"
enabled = true

[[users]]
name = "admin"
password = "change-me"
is_admin = true
enabled = true

[[users.keys]]
api_key = "sk-admin-1"
label = "default"
enabled = true

[[permissions]]
user_name = "admin"
model_pattern = "*"

Then open http://127.0.0.1:8787/console and log in as admin.

Full walkthrough: Quick Start.

Sending your first request

# Aggregated endpoint — provider/model prefix in the body
curl http://127.0.0.1:8787/v1/chat/completions \
  -H "Authorization: Bearer sk-admin-1" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai-main/gpt-4.1-mini",
    "messages": [ { "role": "user", "content": "Hello" } ]
  }'

# Scoped endpoint — provider in the URL, raw upstream model id in the body
curl http://127.0.0.1:8787/openai-main/v1/chat/completions \
  -H "Authorization: Bearer sk-admin-1" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1-mini",
    "messages": [ { "role": "user", "content": "Hello" } ]
  }'

See First Request for Anthropic and Gemini examples.

Repository layout

apps/                  # Runnable binaries
  gproxy/              # Main binary (HTTP server + embedded console)
  gproxy-recorder/     # Upstream traffic recorder (dev/debugging)
crates/                # Server-side crates composed by the binary
  gproxy-core/         # Config, identity, policy, quota, routing types
  gproxy-storage/      # SeaORM storage + at-rest encryption + schema sync
  gproxy-api/          # Admin + user HTTP API, auth, login, CORS
  gproxy-server/       # The Axum server wiring it all together
sdk/                   # Framework-agnostic libraries (no DB/HTTP dependencies)
  gproxy-protocol/     # OpenAI/Claude/Gemini wire types + transforms
  gproxy-routing/      # Route classification, permission & rate-limit matching
  gproxy-provider/     # Channel trait, ProviderStore, GproxyEngine
  gproxy-sdk/          # Umbrella crate re-exporting the three above
frontend/console/      # React console, embedded into the binary at build time
docs/                  # Starlight documentation site (source for gproxy.leenhawk.com)

Documentation

The full documentation lives at https://gproxy.leenhawk.com. Some entry points:

To run the docs locally:

cd docs
pnpm install
pnpm dev

License

Released under the AGPL-3.0-or-later license.

Author: LeenHawk

Release History

VersionChangesUrgencyDate
v1.0.22## v1.0.22 > Vercel and Kiro join the built-in channel set, while Antigravity, Vertex, ClaudeCode, image streaming, and the provider console get a broad compatibility pass. ### English #### Added - **Vercel AI Gateway channel.** Added a `vercel` channel for OpenAI Chat Completions, Responses, Models, Embeddings, and Anthropic Messages / Count Tokens, plus console support for Vercel gateway source aliases via `providerOptions.gateway.only`. Vercel's Claude-shaped requests also support `enableHigh5/27/2026
v1.0.21## v1.0.21 > Protocol packaging is split out, provider/admin behavior is tightened, and several channel compatibility fixes land together. ### English #### Added - **Standalone `gproxy-protocol` repository integration.** The protocol crate is now wired as a standalone repository/submodule and the CI/release workflows fetch it explicitly. Workspace and admin API docs were updated to match the new layout. - **Update-channel configuration.** Added storage/API support for configuring the update High5/10/2026
v1.0.20## v1.0.20 ### ChatGPT 渠道重构 - **system_hints 透传 + model 后缀工具别名**:OpenAI 兼容请求体可通过三种方式触发 chatgpt.com 内置工具 —— 原始 id `{"system_hints":["picture_v2","search"]}`、`extra_body.tools_hint` 友好别名、以及 `model: "gpt-5@image"` 的尾缀语法;后缀表覆盖 image / search / study / agent / canvas / connectors / company / deep-research / quiz - **硬编码工具映射迁移到 rewrite_rules**:删除 Rust 侧 `TOOL_SUFFIXES`、`@<tool>`/`:<tool>` 解析器、`tools_hint` 友好别名、以及 `resolve_model` 里的 `gpt-5`/`gpt-5-thinking`/`gpt-5-pro`/`gpt-5-instant` 重映射 —— 这些能力现在完全High4/24/2026
v1.0.19## v1.0.19 ### 新渠道:ChatGPT Web - 全新接入 ChatGPT Web 渠道:PoW、prepare_p、sentinel、SSE v1 解码与 OpenAI chunk 转换 - 对话默认走 temporary chat(可通过渠道设置关闭) - 图像生成 + `/v1/images/edits`(三步上传 + asset pointer) - 本地 model list / model get / count_tokens,支持动态模型列表与别名映射(用于 picker UI 名称) - 转发 `thinking_effort` 至 `/f/conversation` - 支持 `cookie_store` 与 spoof client 刷新 - Console 前端集成:图像生成、`temporary_chat` 本地化、粘贴原始 token 自动包装为 `{access_token}` - 信任调用方传入的 model slug;未知模型回退默认值 - 用 `StreamReshaper` hook 替代旧实现,并将 reshape 迁入 `noHigh4/22/2026
v1.0.18## v1.0.18 > Streaming usage 端到端打通(`stream_options.include_usage` 自动注入 + 所有跨协议流式路径都观察上游 usage),mimalloc 接管全局分配器,缓存流水线重排为 magic → rules → flatten 并用 sanitize 统一清理空块/空消息 + 自动把 cache_control 回迁到最近可缓存块,`context-1m-2025-08-07` beta 在 anthropic / claudecode 渠道默认剥离,一次性迁移扫掉指向已废弃 realtime 变体的 routing 规则,控制台新增「恢复默认路由」按钮。 ### English #### Added - **Upstream streaming usage tracking.** The engine now observes and records upstream usage on streaming requests across every cross-protocol path, not just theHigh4/21/2026
v1.0.17## v1.0.17 > The suffix-variant rewrite pipeline is repaired end-to-end: the engine was passing `&[]` as the rewrite rule slice, the handler was letting alias resolution replace the user-sent model name (so `model_pattern` never matched), and `body.model = "provider/variant"` from OpenAI-style clients rode the `provider/` prefix straight into the filter. All three are fixed — a request to `claudecode/claude-opus-4-7-thinking-adaptive-effort-max` now actually reaches Anthropic with `thinking.disHigh4/17/2026
v1.0.16## v1.0.16 > Console polish on the provider config tab: the Upstream Protocol Template row is folded away behind a show/hide toggle, and the hint copy is rewritten to warn against changing built-in channels' routing tables without a reason. Plus a tiny cleanup in the credential-update store path. ### English #### Changed - **Upstream Protocol Template collapsed by default.** On the provider config tab, the template chips row now sits behind a show/hide toggle and starts collapsed on load / oHigh4/17/2026
v1.0.15## v1.0.15 > Fixes a regression in the unscoped proxy path where the `providerX/` prefix was stripped from the response's `model` field — clients that routed via `POST /v1/...` with `"model": "providerX/claude-opus-4-7"` saw `"model": "claude-opus-4-7"` come back. Also rewrites the Quick-Start guide to cover three startup forms (env var / `--config` flag / default discovery) and point at the suffix-preset alias recipe for forced-thinking variants. ### English #### Added - **Quick-Start guideHigh4/16/2026
v1.0.14## v1.0.14 > Console rewrite-rule pipeline is repaired end-to-end: the `Set` / `Remove` action tags are now emitted in the snake_case form the backend actually accepts, manually drafted rules no longer disappear on Save (stale-closure race), suffix variants auto-attach a `model`-rename rewrite so the upstream receives the real model id instead of the alias, and the Claude thinking presets now explicitly set `display: "summarized"` so the chain-of-thought stays visible in responses. Claude Opus High4/16/2026
v1.0.13## v1.0.13 > `gproxy-protocol` is updated for Claude Opus 4.7: the Claude wire types now include the new model / output fields (`claude-opus-4-7`, `output_config.task_budget`, `effort="xhigh"`), and Claude-targeting transforms stop generating deprecated budgeted `thinking: { type: "enabled" }` requests when the target model is Opus 4.7. ### English #### Added - **Claude Opus 4.7 protocol fields in `gproxy-protocol`.** Claude request types now recognize `claude-opus-4-7`, support `output_confHigh4/16/2026
v1.0.12## v1.0.12 > Proxy response headers are now normalized (correct `Content-Type`, stripped upstream `Content-Length` / `Content-Encoding` / `Transfer-Encoding`), two long-standing bugs in the OpenAI-response → Claude stream converter are fixed (duplicate block emission when `output_item.done` arrives after streamed deltas; spurious `stop_reason=end_turn` swallowing `tool_use`), the OpenAI WebSocket handshake now detects auth failures on the first frame and rotates to the next credential, and the High4/16/2026
v1.0.11## v1.0.11 > End-to-end upstream latency tracking (TTFB + total) from transport layer to DB to console, a new dashboard module with credential health / KPI / traffic charts, protocol-aware auth for custom channel dispatch routes, and a LogGuard that finally flushes request logs on panic and stream cancel. ### English #### Added - **Upstream latency tracking end-to-end.** The transport layer now captures TTFB (`initial_latency_ms`) and total request duration (`total_latency_ms`) on every upstHigh4/15/2026
v1.0.10## v1.0.10 > Two focused fixes from the v1.0.9 fallout: claudecode OAuth refresh was broken against Anthropic's token endpoint and left credentials permanently dead, and the sanitize middleware was leaking `anthropic-version` through so every upstream request carried a duplicated header. ### English #### Fixed - **claudecode OAuth refresh actually works again.** The v1.0.9 gproxy-channel refactor routed `refresh_credential`'s `refresh_token` path through the generic `oauth2_refresh::refresh_High4/14/2026
v1.0.9## v1.0.9 > The SDK splits into four publishable crates — `gproxy-protocol`, `gproxy-channel`, `gproxy-engine`, `gproxy-sdk` — with real per-channel feature pruning, a standalone `execute_once` single-request client for single-provider use, and no DB / API / config changes for binary operators. ### English #### Added - **Four publishable SDK crates** — `gproxy-protocol` (L0 wire types + transforms), `gproxy-channel` (L1 `Channel` trait, 14 concrete channels, credentials, `execute_once` pipelMedium4/14/2026
v1.0.8## v1.0.8 > **Cross-protocol error bodies finally make it to the client in the > right schema, orphaned `tool_result` messages stop breaking Claude > requests, and streaming upstream logs now store the actual wire > bytes.** The headline fix: when a Claude/Gemini/OpenAI upstream > returns a non-2xx error body, the engine now converts it to the > client's declared error shape (e.g. Claude `{"type":"error",...}` → > OpenAI `{"error":{...}}`) instead of handing the raw JSON to an SDK > that can't High4/14/2026
v1.0.7## v1.0.7 > **Self-update is unbroken, failing transforms finally tell you which > request broke them, and the docs site deploys itself.** The headline > fix centralizes wreq client policy in the engine so every HTTP path > (including self-update) follows redirects — GitHub asset downloads > stop failing on their 302 to the CDN. Pre-upstream transform errors > now capture the original downstream request body in the upstream > log, so operators actually see *which* JSON failed to parse. The > reMedium4/13/2026
v1.0.6## v1.0.6 > **Pricing is now fully admin-editable, end to end.** Model prices move > out of the compiled-in `&'static [ModelPrice]` slice into a > `pricing_json` column on the `models` table, the provider store holds > an `ArcSwap<Vec<ModelPrice>>` that bootstrap and every admin mutation > push into, and the console grows a structured editor that covers all > four billing modes. The docs site is rewritten as a full bilingual > Starlight site (25 pages × 2 locales) including a new pricing > refeMedium4/12/2026
v1.0.5## v1.0.5 > **Major refactor.** Two sibling releases worth of architectural cleanup > condensed into one tag: the suffix system is deleted, the `models` and > `model_aliases` DB tables are merged, rewrite-rule/billing ownership > moves from the engine into the handler, and request-time model > resolution finally makes `permission → rewrite → alias → execute` > the single canonical order. No automated migration is shipped — old > `model_aliases` rows are re-imported into the unified `models` tabMedium4/12/2026
v1.0.4## v1.0.4 ### English #### Added - **Channel-level rewrite rules** — new `rewrite_rules` field on all 14 channel Settings structs allows per-channel request body rewriting before the request is finalized. Rules support JSON path targeting with glob matching. A dedicated `RewriteRulesEditor` component with full i18n is available in the console. - **Dispatch template presets for custom channel** — the console now offers built-in dispatch template presets when configuring custom channeHigh4/11/2026
v1.0.3## v1.0.3 ### English #### Added - **Suffix system for model-list / model-get** — suffix modifiers (e.g. `-thinking-high`, `-fast`) are now expanded in model list responses and rewritten in model get responses, so clients can discover available suffix variants. - **Suffix per-channel toggle** — new `enable_suffix` setting lets operators enable/disable suffix processing per channel. - **VertexExpress local model catalogue** — model list/get requests are served from a static model catalogue embMedium4/11/2026
v1.0.2## v1.0.2 ### English #### Added - **WebSocket per-model usage tracking** — when the client switches models mid-session (e.g. via `response.create`), usage is segmented per model and recorded separately instead of attributing all tokens to the last model. - **WebSocket upstream message logging** — WS session end now records an upstream request log containing all client→server and server→client messages as request/response body. --- ### 中文 #### 新增 - **WebSocket 按模型分段用量** — 客户端在 WS 会话中切换模型时Medium4/10/2026
v1.0.1## v1.0.1 ### English #### Added - **Upstream request logging** — quota queries and cookie exchange HTTP steps are now recorded in the `upstream_requests` table, giving full visibility into every outbound call the proxy makes. - **Streaming body capture** — both downstream and upstream logs now defer recording until the stream ends, so `response_body` is populated for streaming requests. Controlled by `enable_downstream_log_body` / `enable_upstream_log_body` config. - **Auto-check fMedium4/10/2026
v1.0.0## v1.0.0 > **Breaking release.** gproxy v1.0.0 is a full ground-up rewrite of the v0.3.x > line. Treat it as a brand-new project: the workspace layout, storage schema, > HTTP API, admin surface, TOML config format, CLI flags, and provider settings > have all changed and are **not** compatible with v0.3.42 or earlier. There is > no in-place upgrade path — see the Compatibility section below. ### English #### Added - Brand-new workspace layout split into three layers: - `sdk/` — protocol & Medium4/10/2026
v0.3.42## v0.3.42 ### English #### Added - Added CORS handling for provider routes. Provider endpoints now respond to browser preflight requests and include permissive `access-control-allow-origin` headers on proxied responses. - Added the optional ClaudeCode setting `claudecode_flatten_system_text_before_cache_control`, allowing system text blocks to be merged before cache-control processing when needed. #### Changed - ClaudeCode account handling now records and propagates `account_uuid` in more Medium4/1/2026
v0.3.41## v0.3.41 ### English #### Added - Added true request-log deletion actions in the admin Requests workspace. `Delete Selected Logs` and `Delete All Logs` now remove upstream/downstream request rows entirely instead of only clearing stored headers/bodies. #### Changed - ClaudeCode now always ensures the Claude Code `x-anthropic-billing-header` system block is present upstream when missing. The old channel-level `claudecode_enable_billing_header` toggle has been removed from both provider setLow3/21/2026
v0.3.39## v0.3.39 ### English #### Added - Added an optional channel-level `claudecode_enable_billing_header` setting for ClaudeCode. When enabled, gproxy injects the Claude Code `x-anthropic-billing-header` as the first upstream `system` block and computes the `cc_version` hash suffix dynamically from the first user message, matching Claude Code `2.1.76` behavior. #### Changed - Updated the built-in ClaudeCode user-agent defaults/templates to `claude-code/2.1.76` and `claude-cli/2.1.76 (external,Low3/16/2026
v0.3.38## v0.3.38 ### English #### Added - Added per-credential `enable_claude_1m_sonnet` / `enable_claude_1m_opus` fields for ClaudeCode credentials in the admin credential workspace. Newly created ClaudeCode OAuth credentials initialize both flags as enabled. - Added the Anthropic `compact-2026-01-12` beta tag to the built-in ClaudeCode beta reference list / known beta values so it can be selected and normalized like other beta headers. #### Fixed - ClaudeCode requests now preserve `context_manaLow3/15/2026
v0.3.37## v0.3.37 ### English #### Changed - Removed per-credential `enable_claude_1m_sonnet` / `enable_claude_1m_opus` permission fields from ClaudeCode credentials. All ClaudeCode credentials now unconditionally support 1M context — no per-account capability check is performed. - Removed model-based automatic `context-1m-2025-08-07` beta header injection and filtering. Whether the `context-1m` beta is sent upstream is now controlled entirely by request headers or the channel-level `claudecode_extrLow3/14/2026
v0.3.36## v0.3.36 ### English #### Added - Added message-scoped content selectors for built-in Claude `cache_breakpoints`. `messages` rules can now optionally use `content_position` / `content_index` to select a block inside the matched message, and the admin provider config now exposes the same selector mode. #### Changed - Cache breakpoint matching now normalizes Claude shorthand content first, so forms like `system: "..."` and `messages[*].content: "..."` are indexed the same way as canonical tLow3/11/2026
v0.3.35## v0.3.35 ### English #### Added - Added an optional `priority_tier` field to Codex credentials so admins can force Codex upstream requests to use `service_tier=priority` per credential. #### Changed - Refined Codex priority-tier override behavior: `service_tier` is now forced to `priority` only when the credential-level `priority_tier` flag is explicitly enabled; otherwise the request's original tier is preserved. #### Fixed - Fixed OpenAI `chat completions -> responses` history conversLow3/10/2026
v0.3.34## v0.3.34 ### English #### Fixed - Fixed ClaudeCode OAuth persistence so unlabeled OAuth credentials no longer create duplicate rows that can later fail `v1/usage` with `no eligible credential`. - Fixed admin `Test All Credentials` for browser-driven sessions by dropping browser-only passthrough headers such as `origin`, `referer`, `cookie`, `sec-fetch-*`, and `sec-ch-ua*` before forwarding upstream requests. - Fixed default credential naming during persistence so OAuth credentials prefer `uLow3/9/2026
v0.3.33## v0.3.33 ### English #### Added - Added a `Test All Credentials` action in the admin credential workspace. It validates each credential by requesting the model list, picking the first available model, and sending a lightweight test chat request. #### Changed - Renamed the admin provider workspace entry from `渠道` to `渠道/凭证`, and renamed the provider config tab label to `渠道类型` to better distinguish channel type from credential management. - Updated the bulk-delete copy in the credential worLow3/8/2026
v0.3.32## v0.3.32 ### English #### Added - Added OpenAI-compatible image generation and image edit APIs, including request/response transforms and SSE handling for supported upstreams. - Added OpenAI-compatible video create/retrieve/content APIs, and wired video execution flows for the supported Gemini/OpenAI-style upstreams. - Added bulk deletion for dead credentials in the admin credential workspace. #### Changed - Renamed the built-in `claude` channel to `anthropic` across provider/admin configLow3/8/2026
v0.3.30## v0.3.30 ### English #### Changed - Added a reusable `Expert Settings` section to the admin provider form. For built-in channels, only the core identity/base fields stay visible by default, while advanced channel-specific settings start collapsed and can be expanded when needed. - Updated dispatch-template UX in the provider form: built-in templates are now shown/hidden with an explicit toggle, and related buttons/copy were simplified for a cleaner editing flow. - Added optional Anthropic bLow3/7/2026
v0.3.29## v0.3.29 ### English #### Changed - Added backend-specific storage optimization modules for SQLite, MySQL, and PostgreSQL, with shared SeaORM/SeaQuery-managed index setup and per-backend connection tuning. - Switched admin/user usage queries and admin request-log queries to cursor-based pagination in the frontend, using `(at, trace_id)` seek semantics instead of relying on deep offset scans. - Reused usage summary `count` in the usage pages to avoid the extra `/count` round-trip and duplicaLow3/7/2026
v0.3.28## v0.3.28 ### English #### Changed - Added a provider-delete confirmation dialog in the admin UI to reduce accidental removals. - Switched the provider workspace to open on the `bulk` tab after selecting a provider, making bulk credential operations easier to reach. - Reordered Codex OAuth action buttons for a clearer admin flow. - Updated deployment docs, README entries, and templates for ClawCloud Run, including a new `claw.yaml` template and README badge. #### Fixed - Fixed local providLow3/7/2026
v0.3.27## v0.3.27 ### English #### Changed - Migrated release downloads and self-update from CNB to a dedicated Cloudflare Pages downloads site. - Renamed the admin update source shown to users to `Cloudflare`; stored legacy values such as `cnb`, `web-hosted`, and `s3` now normalize automatically. - Updated the release workflow and docs to publish and consume `/manifest.json`, `/releases/manifest.json`, and `/staging/manifest.json` from Cloudflare Pages. - Refreshed container build/runtime bases to Low3/6/2026
v0.3.26Just a fix for Geminicli and antigravityLow3/6/2026
v0.3.25## v0.3.25 ### English #### Changed - Updated provider-route request envelopes for OpenAI, Gemini, and Claude to use flattened header payloads and canonical Claude header names. - Updated ClaudeCode, Codex, and Gemini CLI upstream request helpers to use structured request parameters, removing repeated argument-heavy call patterns. - Updated the `release-binary` workflow to run `gproxy --help` both before and after UPX compression. - Expanded native OpenAI Responses <-> Claude mapping coverageLow3/6/2026
v0.3.24## v0.3.24 ### English #### Added - Added passthrough forwarding for downstream extra headers across provider routes, including Codex-related metadata such as `session_id`, `x-codex-turn-metadata`, and `originator` when present. - Added the latest built-in ClaudeCode beta header set: - `claude-code-20250219` - `adaptive-thinking-2026-01-28` - `context-management-2025-06-27` - `prompt-caching-scope-2026-01-05` - `advanced-tool-use-2025-11-20` - `effort-2025-11-24` #### Changed - Low3/6/2026
v0.3.23## v0.3.23 ### Added - Added end-to-end OpenAI Responses WebSocket and Gemini Live support across protocol, transform, provider dispatch, and provider route layers. - Added transform bridges for WebSocket/HTTP interop: - OpenAI Responses WebSocket `<->` OpenAI HTTP stream/non-stream - Gemini Live WebSocket `<->` Gemini HTTP stream/non-stream - direct OpenAI Responses WebSocket `<->` Gemini Live mapping. - Added upstream WebSocket credential retry support in provider routes via `websocketLow3/5/2026
v0.3.22## v0.3.22 ### Added - Added signed self-update verification for release assets: - updater now resolves `<asset>.sha256` and `<asset>.sha256.sig` - checksum signatures are verified with Ed25519 before binary install. - Added web-hosted self-update source support: - updater can read channel manifests from `<downloads-base>/{releases|staging}/manifest.json` - manifest assets can provide `sha256`, `sha256_url`, `sha256_sig_url`, `key_id`. - Added raw payload execution path for provider roLow3/5/2026
v0.3.21## v0.3.21 ### Added - Added graceful shutdown handling in app runtime: - server now listens for `Ctrl+C` and `SIGTERM` - `axum::serve` now exits via `with_graceful_shutdown(...)` instead of abrupt process termination. - Added cross-log trace correlation for provider traffic: - downstream ingress `trace_id` is propagated internally and persisted as `downstream_trace_id` in upstream request logs and usage logs - admin/user usage and request tables now prefer correlated downstream trace Low3/4/2026
v0.3.20## v0.3.20 ### Changed - Updated Claude / ClaudeCode cache-control guidance to the current `cache_breakpoints` model: - removed old docs/examples based on `enable_top_level_cache_control` - documented rule shape (`target`, `position`, `index`, `ttl`) and 4-slot limit semantics. - Clarified no-ttl default behavior for Claude-family channels: - `claudecode` without `ttl` defaults to `1h` - `claude` without `ttl` defaults to `5m`. - Documented Anthropic TTL ordering constraint for mixed `Low3/3/2026
v0.3.19## v0.3.19 ### Added - Added `append_query_param_if_missing` utility in provider channel helpers, with unit tests to: - append a query key/value when missing - keep existing query intact when key already exists - avoid duplicated query keys. ### Changed - Updated Admin `Request Log` payload query handling: - `req query` now normalizes leading `?` and empty values - upstream rows now derive `req query` from `request_url` when downstream-style `request_query` is unavailable - payloLow3/3/2026
v0.3.18## v0.3.18 ### Changed - Updated binary release workflow S3 auth handling: - removed `aws-actions/configure-aws-credentials` - upload/manifest steps now use explicit AWS env vars (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION`) for better S3-compatible endpoint behavior. - Updated release-channel naming from `release` to `releases` across binary publish/update flow: - workflow now generates/uploads `releases/manifest.json` - system update default channel now resolveLow3/3/2026
v0.3.17## v0.3.17 ### Added - Added S3-compatible binary publish flow in `release-binary.yml` for both: - `push` -> upload staging artifacts to `staging/*` - `release` -> upload latest artifacts to root and versioned artifacts to `releases/<version>/*`. - Added manifest generation from bucket object listing: - global `manifest.json` for downloads page - channel manifests `release/manifest.json` and `staging/manifest.json` for updater compatibility. - Added cache-affinity trace logging controlLow3/3/2026
v0.3.16## v0.3.16 ### Changed - Updated Admin `Request Log` table columns: - upstream view now shows `credential_id` - downstream view keeps `credential_id` hidden (no extra column). - Updated Admin `Usage` detail rows table to show `credential_id` for each usage row. ### Compatibility - No API/protocol behavior changes in this release; updates are frontend display-only. Low3/3/2026
v0.3.15## v0.3.15 ### Added - Added docs `/downloads` index page that renders `release` and `staging` asset lists from manifests. - Added admin console startup release check (`/admin/system/latest_release`) with auto-dismiss toast notification when a newer release is available. - Added copy-to-clipboard buttons in Admin `Request Log` payload view: `req body` / `resp body` now have a clipboard icon next to the eye toggle. Low3/3/2026
v0.3.14## v0.3.14 ### Added - Added OpenAI Chat Completions `reasoning_details` support across request/stream/types, including stream<->non-stream aggregation paths. - Added Claude thinking-to-OpenAI chat streaming mapping for both `reasoning_content` and encrypted `reasoning_details` (`reasoning.encrypted`). - Added ClaudeCode model-list alias expansion: `/v1/models` now includes paired `-nothinking` model IDs. - Added protocol-aware transform stream serialization error chunks: - Gemini NDJSON emiLow3/2/2026
v0.3.13 ### Added - Added automatic upstream HTTP tracking in provider runtime via a unified tracked request wrapper (`wreq` path). - Added internal upstream request event ingestion for auto-captured request/response metadata (`internal=true`), including OAuth/cookie/token/profile side calls. - Added docs publish integration for Cloudflare Pages with latest release package sync for the `/downloads` page. ### Changed - Switched provider-side direct HTTP calls to tracked request flow so OAuth and auxiLow3/2/2026
v0.3.12## v0.3.12 ### Changed - Added request/usage counting capabilities and related admin APIs for upstream/downstream visibility. - Added request path filtering in the admin request module. - Added context flags for recording upstream and stream usage events. - Enforced direct stream-to-stream chat conversion paths and completed direct chat mapping behavior. - Added broader `reasoning_content` support in Chat Completions data structures and transform flows. - Enhanced MCP tool-use handling in OpenLow3/2/2026
v0.3.11## v0.3.11 ### Changed - Reworked admin provider workspace into four tabs: `Single Add`, `Bulk Import/Export`, `Credential List`, and `Config`. - Moved OAuth flows under `Single Add`; credential cards now live in `Credential List`, and editing opens inline below the list. - Added credential auto-naming fallback for create/import and card display: prefer `user_email`, then fall back to key/cookie prefix when name is empty. - Admin default landing module is now `Providers` (instead of `Global SeLow3/2/2026
stagingAutomated staging build from `eff19da15f8a5841ac592b3bc5b93b43b25c4d51`. Low3/1/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

copilot-api🚀 Access the reverse-engineered GitHub Copilot API through this proxy, enabling streamlined integration for your development needs.main@2026-06-01
prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.main@2026-06-05
tensorzeroTensorZero is an open-source LLMOps platform that unifies an LLM gateway, observability, evaluation, optimization, and experimentation.2026.6.0
ai-guideProvide free, open access to comprehensive AI tools, guides, reviews, and resources to reduce knowledge gaps and empower users.main@2026-06-04
LeanKGLeanKG: Stop Burning Tokens. Start Coding Lean.v0.17.1

More in Infrastructure

tensorzeroTensorZero is an open-source LLMOps platform that unifies an LLM gateway, observability, evaluation, optimization, and experimentation.
planoPlano is an AI-native proxy and data plane for agentic apps — with built-in orchestration, safety, observability, and smart LLM routing so you stay focused on your agents core logic.
modelsThis repository contains comprehensive pricing and configuration data for LLMs. It powers cost attribution for 200+ enterprises running 400B+ tokens through Portkey AI Gateway every day.
edgeeOpen-source AI gateway written in Rust, with token compression for Claude Code, Codex... and any other LLM client.