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 SDK — gproxy-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
v4.2.1## v4.2.1 > An OpenDesign channel, `gproxy-client-sdk` and `gproxy-store` on crates.io, a rewritten manual, and a fix for a mislabelled rule preset. > > 新增 OpenDesign 渠道,`gproxy-client-sdk` 和 `gproxy-store` 发布到 crates.io,文档全面重写,并修正一个名称错误的规则预设。 ### English #### Added - `opendesign` channel for the OpenDesign Go / Cloud subscription, with an API key from the account dashboard: Chat Completions, Responses and Claude Messages on `https://amr-link.open-design.ai`, plus the model list. It has no qHigh11/7/2026
v4.1.14## v4.1.14 > Fix Antigravity's default backend and GitLab/WinGet release automation. > > 修复 Antigravity 默认后端及 GitLab、WinGet 自动发布流程。 ### English #### Fixed - Use `https://daily-cloudcode-pa.googleapis.com` as Antigravity's default base URL. - Synchronize the version tag to GitLab before creating its release, so a stalled repository mirror does not prevent publication. - Decode GitHub CLI responses as UTF-8 in WinGet automation on Windows, avoiding errors when checking existing pull requests cHigh11/1/2026
v4.1.12## v4.1.12 > A first-run setup wizard for the CLI, matching the application's, with channel and credential setup in both; reproducible F-Droid builds again; and a per-user data directory for WinGet installs. > > CLI 新增与 Application 一致的首次设置向导,两者都可在设置时选择渠道并添加凭据;恢复 F-Droid 可复现构建;WinGet 安装改用按用户的数据目录。 ### English #### Added - Running `gproxy` in a terminal for the first time now starts a setup wizard instead of printing generated credentials: language, listening address, data directory and databaHigh10/26/2026
v4.1.11## v4.1.11 > Copilot CLI and Antigravity IDE client identities, upstream-aligned credential lifecycles, and a Microsoft Store CLI that starts without administrator rights. > > Copilot 改用 CLI 身份、Antigravity 以 IDE 身份接入,凭证生命周期对齐上游客户端,Microsoft Store 版 CLI 无需管理员权限即可启动。 ### English #### Added - Present the Antigravity channel as the Antigravity IDE. Login, token, Code Assist setup and userinfo calls follow the IDE (IDE scopes, no PKCE, IDE client metadata); inference, model catalogue and quota caHigh10/26/2026
v4.1.10## v4.1.10 > OrcaTerm support, complete coding-agent tool continuations, and unified credential initialization. > > 新增 OrcaTerm 支持,打通编程客户端工具续轮,并统一凭证初始化。 ### English #### Added - Add the OrcaTerm channel with browser OAuth, China/international endpoints, dynamic model discovery and account quota queries. - Support OrcaTerm text/image conversations and model-specific thinking settings. Resize/compress oversized static images and reuse fresh uploads within the same credential. - Bind supported High10/25/2026
v4.1.9## v4.1.9 > More accurate cache accounting, expanded OpenAI compatibility, Volcengine channels, and Russian localization. > > 改进缓存计账与 OpenAI 兼容性,新增火山引擎渠道及俄语本地化。 ### English #### Added - Add Volcengine Agent and Coding Plan channels. - Add OpenAI Live and voice APIs, including realtime client-secret support. - Add Russian localization for the application and documentation. - Unify offline v2-to-v4 migration through SQLite, including a PostgreSQL export bridge. - Add sliding tabs for personal High10/22/2026
v4.1.8## v4.1.8 > Claude Code usage-limit modes, new upstream channels, clearer streaming errors, and more reliable request history. > > 新增 Claude Code 额度续用模式和上游渠道,改进流式错误处理与请求历史。 ### English #### Added - Add opt-in Claude Code lower-priority waiting and extended usage grace. Both switches default to off; explicit client `slow` and `extended` headers are supported. Capacity retries remain on the same credential and respect cancellation and host deadlines. - Add Command Code and Trae China/internatiHigh10/18/2026
v4.1.7## v4.1.7 > Provider-name model routing, Vertex region overrides, Devin model discovery, and faster streaming conversions. > > 模型前缀只按供应商名解析,新增 Vertex 区域覆盖与 Devin 模型发现,流式转换更及时。 ### English #### Breaking - A model prefix now always names a provider. The `channel/model` form is removed: `codex/gpt-5` reaches the provider named `codex`, not every provider on the `codex` channel. Use a model route to balance across providers. This fixes provider mounts such as `/openai/v1` failing with `no_usableHigh10/15/2026
v4.1.6## v4.1.6 > More reliable credential renewal, clearer upstream usage attribution, and simpler CLI installation. > > 改进凭据续期、上游用量归属展示和 CLI 安装体验。 ### English #### Added - Show upstream usage attribution in the Console and support filtering usage records by attribution. - Add one-line CLI installers for Unix and Windows to the download documentation. #### Fixed - Renew credentials before refresh tokens expire and refresh access tokens five minutes before expiry. - Supply the default redirect UHigh10/12/2026
v4.1.5## v4.1.5 ### English - Rebuild vendored OpenSSL in every release build instead of reusing it from the build cache. Cached builds embedded an earlier commit's build date, so F-Droid's clean rebuild could not reproduce the reference APK. - Publish the headless Android CLI as a Termux package, `gproxy-headless-android-<arch>.deb`. It provides the same `gproxy` command and replaces the full `gproxy` package. - Compress Windows ARM64 executables with LZMA, as on x64. - Update the Claude Code (2.1.High10/10/2026
v4.1.1## v4.1.1 ### English - Make release builds reproducible with fixed build paths, pinned Android tools and source-derived timestamps. - Normalize macOS HFS images, Windows MSIX ZIP dates, Android R8 metadata, HarmonyOS archives and Linux packages. - Add a separately signed F-Droid APK to stable releases using the existing upstream signing certificate, with signature-copy verification. - Repair F-Droid build dependencies and CI artifact handling; refresh frontend, documentation and Rust dependenHigh10/7/2026
v4.1.0## v4.1.0 > Smaller capture storage, configurable payload retention, expanded Linux packages, and improved Console and upstream compatibility. ### English #### Added - Capture storage now compresses native payloads, deduplicates request bodies and headers, and coalesces stream segments while preserving SSE, NDJSON and WebSocket message boundaries. - Configurable capture payload retention, defaulting to 7 days and 2 GiB. Expired or over-budget payloads are removed while request metadata and aHigh10/5/2026
v4.0.4# GPROXY 4.0.4 > Add GLM, MiniMax and Devin capabilities, reduce mobile downloads, and improve OAuth, Responses compatibility and usage totals. ## English ### Added - GLM/Z.ai API and Coding Plan channels, including their separate endpoints, model catalogs and subscription quota queries. - MiniMax API and subscription support, including text, quota queries and H3 video operations. - Devin OAuth login and native CLI tool support. - Batch model selection in the Console catalog, and a restored High10/3/2026
v4.0.3# GPROXY 4.0.3 > Control thinking-block forwarding across all channels, preserve Claude thinking budgets, and improve application packaging and release isolation. ## English ### Added - A **Forward thinking blocks** switch in every provider's configuration, enabled by default. Turning it off removes historical thinking/reasoning blocks and signatures from Claude, Responses, Chat and Gemini requests, including Responses WebSocket traffic. Text, tool calls and controls for newly generated thinHigh10/2/2026
v3.0.22## v3.0.22 > Keep Codex priority requests and upstream routing hints in sync. > 修复 Codex priority 请求与上游路由提示不同步的问题。 ### English #### Fixed - Rebuild the Codex `x-codex-routing-hint` header from the final upstream model and service tier after model variants and request rewrites, for both HTTP and Responses WebSocket requests. - Normalize Codex `service_tier: fast` to `priority`, matching the Codex CLI wire format. - Prevent duplicate WebSocket fields from overwriting normalized request fields,High9/27/2026
v3.0.21## v3.0.21 > Support PostgreSQL TLS and improve SQL connection diagnostics and model variant discovery. > 支持 PostgreSQL TLS,完善 SQL 连接错误诊断及模型变体发现。 ### English #### Fixed - Connect to TLS-required PostgreSQL services such as Neon using `sslmode=require`, with certificate and hostname verification against bundled Mozilla roots. - Preserve underlying PostgreSQL and MySQL connection failure details instead of returning a generic connection error. Invalid MySQL option values are omitted from diagnHigh9/23/2026
v3.0.20## v3.0.20 > Update Codex CLI compatibility and plugin request authentication metadata. > 更新 Codex CLI 兼容性及插件请求认证元数据。 ### English #### Fixed - Preserve `OAI-Product-Sku` through Codex plugin service forwarding. Plugin catalog and workspace sharing requests default to `codex` when the client supplies no product selection. #### Changed - Update the default Codex CLI identity and model discovery client version from `0.153.2` to `0.156.0`, retaining client-supplied identity values. ### 简体中文 High9/23/2026
v3.0.17## v3.0.17 > Restore release identity and update signature verification for cross-built binaries. > 修复交叉编译产物的发布身份和更新签名校验。 ### English #### Fixed - Pass the update signing public key, build version, release channel, build hash, and installation kind into cross build containers. Linux musl and RISC-V GNU release binaries now embed the correct release identity and update verification key (#254). - The fix also applies to musl container images built from these binaries. Users of affected v3.0.16High9/16/2026
v3.0.16## v3.0.16 > Correct provider-scoped model catalogues and model names. > 修复渠道限定路由的模型列表范围和模型名称。 ### English #### Fixed - Requests such as `/provider/v1/models` now return only that provider's models, without the gateway-added `provider/` prefix. Upstream model IDs such as `vendor/model` retain their own prefix. This applies to OpenAI, Claude, Gemini, and Codex model-list formats and provider model lookups. - Provider-scoped catalogues include the enabled, manually maintained models when automHigh9/15/2026
v3.0.14# gproxy v3.0.14 ## 修复 - 修复 Claude Code ToolSearch 返回 `tool_reference` 时,Claude Messages → OpenAI Chat Completions 转换失败的问题(#239)。工具引用降级为文本,保留工具名称与现有工具定义。 - 恢复统计页用量记录的批量删除:选择记录后确认删除,刷新明细与相关统计,并返回第一页。删除保留已结算费用、配额归属和历史小时汇总。 - 修复 Claude Messages → OpenAI Responses(包括 Codex)未请求思维链摘要的问题。`adaptive` / `enabled` 的默认显示以及 `summarized` / `updates` 会请求 `reasoning.summary=auto`;`omitted` 不请求摘要。普通响应同时保留可见摘要与加密续接签名,未提供签名的推理文本也正确标记为思考内容。 ## Fixes - Accept Claude Code ToolSearch `tool_reference` results when High9/13/2026
v2.9.5## v2.9.5 > Fixes OpenAI Chat requests targeting Claude Opus 4.8 when system or developer > messages appear between assistant turns. > > 修复 OpenAI Chat 请求使用 Claude Opus 4.8 时,system 或 developer 消息夹在 > assistant 消息之间会被上游拒绝的问题。 ### English #### Fixed - **Opus 4.8 mid-conversation system turns no longer create empty user messages.** OpenAI Chat system and developer messages after the conversation starts now become native Claude system-role turns on supported models instead of user turns containHigh8/29/2026
v2.8.3## v2.8.3 > Surfaces Codex model limits from the live catalogue, folds `max_input_tokens` into `context_window`, routes Kimi Code natively, and replaces the Console's rolling time presets with an explicit start/end range. ### English #### Added - **Codex model metadata.** The Codex model catalogue previously flattened every upstream entry to `{id, created, object, owned_by}`, so the channel exposed no context window at all. It now passes `display_name`, `context_window`, `max_context_window`High8/17/2026
v2.2.6## v2.2.6 > Brings release notes into the Console as a floating dialog and adds a signed maintainer announcement feed, both served from the documentation site. ### English #### Added - **In-Console release notes.** When an update is available, the Console now shows the release notes in a floating dialog — opened from the update banner or the Updates page — instead of sending you to GitHub. The dialog renders the section matching the Console's current language when the release provides one, aHigh8/4/2026
v2.1.0## v2.1.0 > Adds exact per-operation provider endpoints, client compatibility presets, richer observability, model-scoped health, and merged credential model catalogues, while consolidating persistence and runtime architecture for the 2.1 line. ### English #### Added - **Exact provider endpoint overrides.** Providers can set a final URL for each routed operation while retaining `base_url` as the fallback prefix. Exact endpoints take precedence, receive no appended path, preserve configured qHigh7/20/2026
v2.0.14## v2.0.14 > Adds GPT-5.6 protocol support and explicit OpenAI prompt-cache breakpoints, rounds out Grok Build API coverage, and improves browser-based admin access. ### English #### Added - **GPT-5.6 model family.** OpenAI model handling now recognizes `gpt-5.6`, `gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna` across the existing OpenAI routes and transforms. - **New OpenAI protocol fields.** Responses support now covers programmatic tool calling, program and multi-agent items, `max` reaHigh7/9/2026
v2.0.8## v2.0.8 > Tightens the staging/release pipeline, fixes several Responses/Codex streaming paths, improves cache-token usage accounting, and makes the Console's self-update channel selector take effect immediately. ### English #### Added - **Staging release channel builds.** Pushes to `main` now refresh the rolling `staging` release with all native targets and a signed staging manifest, and staging Docker images are published as `staging` / `staging-<sha>` tags (including musl variants). ManHigh6/29/2026
v2.0.0## v2.0.0 > A full rewrite. The whole proxy is now a single Rust crate that builds the same engine for native, Docker, and the serverless edge (WebAssembly); an Operation-first protocol taxonomy replaces the old per-family transform tree, and existing v1 SQLite databases migrate in place on first boot. ### English #### Added - **Three runtime form factors from one engine.** The same crate compiles to a native binary, a distroless Docker image, and a `wasm32` edge library. Edge wasm is live-vHigh6/21/2026
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-15
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-11-07
botserverComplete open-source AI collaboration suite and multi-agent platform featuring LLM orchestration, automation, and virtual assistants. Scales seamlessly from small deployments to large enterprise enviralm-20261107T105002Z-b49d0ac
new-apiA unified AI model hub for aggregation & distribution. It supports cross-converting various LLMs into OpenAI-compatible, Claude-compatible, or Gemini-compatible formats. A centralized gateway for persv1.0.0-rc.48
smgEngine-agnostic LLM gateway in Rust. Full OpenAI & Anthropic API compatibility across SGLang, vLLM, TRT-LLM, OpenAI, Gemini & more. Industry-first gRPC pipeline, KV cache-aware routing, chat history, v1.14.0

More in Infrastructure

mossOfficial Repo of Moss
botserverComplete open-source AI collaboration suite and multi-agent platform featuring LLM orchestration, automation, and virtual assistants. Scales seamlessly from small deployments to large enterprise envir
OmniRouteOmniRoute is an AI gateway for multi-provider LLMs: an OpenAI-compatible endpoint with smart routing, load balancing, retries, and fallbacks. Add policies, rate limits, caching, and observability for
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.