Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
980c3bc
docs(readme): add panel4cliproxyapi to community projects
yaanlaan Sep 24, 2026
cb9a0b5
feat(thinking): support output_config.effort for enabled Claude thinking
luispater Sep 29, 2026
a0cc065
fix(claude): distinguish claude-sonnet-5-5 from sonnet-5 in model checks
luispater Sep 29, 2026
fbc8e44
fix(claude): replay thinking block before tool use after web search r…
luispater Sep 29, 2026
b7f321f
feat(api): support request path overrides and image protocols in mode…
luispater Sep 29, 2026
02548d6
fix(auth): log warnings on auth persistence failures
luispater Sep 29, 2026
c8a2bfe
feat(models): add gpt-6.1-sol model
luispater Sep 29, 2026
81756a5
fix(auth): track auto-refresh job epochs and bound credential acquisi…
luispater Sep 29, 2026
f169711
fix(interactions): handle failure events in response translators and …
luispater Sep 30, 2026
6004ebd
fix(claude): fail open on unmapped oauth mcp tool aliases
luispater Sep 30, 2026
369df97
fix(claude): map and disambiguate tool names in responses translation
luispater Sep 30, 2026
f33f04d
fix(codex): convert agent_message in compat mode without multi-agent …
luispater Sep 30, 2026
71a5f1f
fix(codex): normalize tool parameter number types to integer for code…
luispater Sep 30, 2026
097511b
fix(management): remove deprecated credential quota endpoints from v8…
LTbinglingfeng Sep 30, 2026
bfa5aed
fix(home): defer plugin load marking and preempt failing config on retry
luispater Sep 30, 2026
4b4a444
fix(claude): normalize boolean subschemas in tool parameter schemas
luispater Sep 30, 2026
e5b5a1c
fix(kimi): reorder interleaved tool outputs in responses input
luispater Sep 30, 2026
82f8e92
fix(executor): support negotiated ALPN protocols in uTLS client
luispater Sep 30, 2026
a8ffd5a
fix(codex): skip tool parameter integer normalization for codex execu…
luispater Sep 30, 2026
67cb32b
fix(codex): determine tool integer normalization by target executor i…
luispater Sep 30, 2026
9e71c20
fix(codex): handle upstream stream disconnect before first payload as…
luispater Sep 30, 2026
97f244b
fix(codex): pass target executor to compatibility translation and tok…
luispater Sep 30, 2026
b467a83
fix(xai): bump pinned grok client version to 1.0.44 for chat-proxy
ggbdpq Sep 30, 2026
fd48ea6
Merge pull request #6252 from ggbdpq/fix/xai-grok-client-version-bump
luispater Oct 1, 2026
3ebee06
fix(interactions): bridge apply_patch tool calls in responses transla…
luispater Oct 1, 2026
63c04b4
feat(config): introduce client configuration section for codex settings
luispater Oct 1, 2026
028f6a1
docs(readme): refresh provider models and add Muse Code and Devin (#6…
kdcokenny Oct 2, 2026
f3fd2f2
fix(signature): suppress routine Gemini bypass logs
hkfires Oct 1, 2026
9f35c1d
refactor(signature): improve logging and sanitize logic for Gemini si…
hkfires Oct 1, 2026
cf3102c
refactor(executor): optimize translation logic and improve plugin inv…
hkfires Oct 2, 2026
2783e10
fix(executor): publish antigravity stream usage first
hkfires Oct 2, 2026
6fecc6e
Merge pull request #6271 from router-for-me/gemini
hkfires Oct 2, 2026
5ec3144
fix(gemini): handle split usage metadata and max tokens in responses …
luispater Oct 2, 2026
30aa1f1
test(executor): relax connection reuse bounds in transport tests
luispater Oct 2, 2026
8fbf152
fix(executor): preserve top-level responses token usage when service …
luispater Oct 2, 2026
d7c3c0a
feat(antigravity): trace upstream connection reuse in debug logs
sususu98 Oct 2, 2026
52d5507
feat(config): add shared upstream provider settings
hkfires Oct 2, 2026
3be5fa4
fix(config): support historical v8 aliases
hkfires Oct 2, 2026
e2bff01
Merge pull request #6285 from sususu98/feat/antigravity-connection-de…
luispater Oct 2, 2026
8348923
feat(pluginhost): add host routing reset cooldown callback
luispater Oct 2, 2026
d306f2c
fix(codex): retain template freeform apply_patch capability by default
luispater Oct 2, 2026
6d57ac9
fix(claude): pin session date in cloaked reminder to prevent prompt c…
luispater Oct 2, 2026
0fb50a1
feat(management): inject auth indexes into v8 api-keys config
luispater Oct 2, 2026
c163bae
fix(auth): preserve terminal unauthorized state and prevent unsafe re…
luispater Oct 2, 2026
e6f6f26
fix(claude): handle pause_turn stop reason in responses translation
luispater Oct 2, 2026
2044a01
fix(codex): preserve web search sources in responses request include
luispater Oct 2, 2026
5dbce4f
perf(claude): prefilter JSON payloads before diagnostic walks
luispater Oct 3, 2026
e3abd9a
fix(antigravity): replace retired Claude 4.6 models with 5.5
sususu98 Oct 3, 2026
c575291
fix(antigravity): align Claude 5.5 token limits with upstream catalog
sususu98 Oct 3, 2026
6b037f6
fix(antigravity): use actual Claude 5.5 high model IDs
sususu98 Oct 3, 2026
42d484f
fix(claude): map request timeout status to timeout_error
luispater Oct 3, 2026
d469266
fix(auth): snapshot auth before unlocking during registration and update
luispater Oct 3, 2026
ea8ffd5
fix(devin): stream content early and defer thought stop for late sign…
luispater Oct 3, 2026
ed4d972
fix(responses): complete reasoning summary stream lifecycle events
luispater Oct 3, 2026
a3b7756
fix(codex): publish main usage before image tool usage in execute
luispater Oct 3, 2026
2c1dcc7
fix(claude): include web search sources in codex request when search …
luispater Oct 3, 2026
d7914af
fix(codex): expand integer field normalization mappings for tools
luispater Oct 3, 2026
8a945b3
fix(antigravity): restore Claude 4.6 model definitions
sususu98 Oct 3, 2026
9b9c2bd
feat(antigravity): support Claude 5.5 CAQS thinking signature replay
sususu98 Oct 3, 2026
174248c
fix(antigravity): reject ambiguous CAQS signature wrappers
sususu98 Oct 3, 2026
0594a63
Merge pull request #6318 from router-for-me/feat/antigravity-caqs-sig…
sususu98 Oct 3, 2026
91c934f
feat(responses): support local shell tool translation
luispater Oct 3, 2026
61a70dc
feat(claude): adapt native messages JSON to SSE for non-stream transl…
luispater Oct 3, 2026
7e857c3
feat(antigravity): refresh per-account model entitlements safely
sususu98 Oct 3, 2026
9521fe2
fix(antigravity): preserve model lifecycle and cooldown state
sususu98 Oct 3, 2026
ad38143
fix(antigravity): coalesce probes and respect plugin model ownership
sususu98 Oct 3, 2026
38a089e
Merge pull request #6330 from sususu98/feat/antigravity-account-model…
sususu98 Oct 3, 2026
868e137
feat(payload): introduce payload finalizer for protobuf and multipart…
luispater Oct 3, 2026
cbc4cd5
feat(interactions): support antigravity session continuation and mode…
luispater Oct 3, 2026
33ec550
fix(claude): refine model version parsing for assistant prefill rejec…
luispater Oct 3, 2026
6d06098
docs(readme): add cliproxy-rs to More choices
vayungodara Oct 3, 2026
8ef43e4
fix(readme): remove AxisNow sponsorship details from README files
LTbinglingfeng Oct 4, 2026
1672be5
feat(registry): support custom model catalog sources and dynamic reload
luispater Oct 4, 2026
8a01bc0
feat(auth): introduce mutation locking and persistence delta merging
luispater Oct 4, 2026
c997cbb
feat(httpwire): introduce error-aware response flushing helper
luispater Oct 4, 2026
5d89040
fix(claude): keep system messages top level for terminal user turns
luispater Oct 4, 2026
26e5efb
fix(claude): reserve cache breakpoint for thread continuation
luispater Oct 4, 2026
5c959cb
fix(claude): mark missing thread state error for client replay
luispater Oct 4, 2026
dfd7c63
docs(readme): add Oh-My-CPA to usage statistics
WizisCool Oct 4, 2026
678a925
feat(claude): preserve OAuth tool aliases across thread continuations
luispater Oct 4, 2026
d31b61c
fix(websockets): propagate upstream disconnect errors during session …
luispater Oct 4, 2026
4e4dede
fix(antigravity): surface backend errors and support multi-line strea…
luispater Oct 4, 2026
16d9888
feat(codex): preserve URL citations in OpenAI response translation
luispater Oct 4, 2026
97dd9ee
fix(openai): report error on truncated stream missing finish_reason
luispater Oct 4, 2026
a4acc9f
fix(antigravity): treat client disconnect after terminal stream chunk…
luispater Oct 4, 2026
13da3ce
Merge pull request #6373 from WizisCool/docs/add-oh-my-cpa-usage-stat…
luispater Oct 4, 2026
68afd0d
feat(codex): support action sources in Claude web search translation
luispater Oct 4, 2026
611ebba
refactor(executor): unify model reporting and replay logs
hkfires Oct 5, 2026
17dc1b8
feat(antigravity): enhance context hash rejection logging and introdu…
hkfires Oct 5, 2026
40f4df0
feat(antigravity): enhance context hash rejection logging and batch r…
hkfires Oct 5, 2026
eb6a768
feat(claude): support explicit prompt cache options
luispater Oct 5, 2026
3e83083
Merge pull request #6386 from router-for-me/logs
luispater Oct 5, 2026
0ea4e1d
fix(openai): complete responses stream on clean EOF after finish reason
luispater Oct 5, 2026
01e2856
fix(registry): disable Devin catalog for home builds
hkfires Oct 5, 2026
30700d4
Merge pull request #6391 from router-for-me/home
luispater Oct 5, 2026
c7b4d57
fix(codex): record reasoning effort after applying payload overrides
luispater Oct 5, 2026
ba1bbd7
fix(gemini): support document blocks in Claude request translation
luispater Oct 5, 2026
e1e3a81
fix(gemini): enforce object type on schema nodes with properties
luispater Oct 5, 2026
d2597a2
fix(openai): preserve unknown encrypted content in responses compat mode
luispater Oct 5, 2026
7dc25a7
Merge pull request #6355 from vayungodara/docs/add-cliproxy-rs
luispater Oct 5, 2026
abe54e8
Merge pull request #6112 from yaanlaan/docs/add-panel4cliproxyapi
luispater Oct 5, 2026
d2e3a77
docs(readme): add japanese translation for panel4cliproxyapi
luispater Oct 5, 2026
a2976eb
fix(claude): share OAuth tool alias store across scoped executor copies
luispater Oct 5, 2026
d510dcc
fix(gemini): support camelCase systemInstruction in request translation
luispater Oct 6, 2026
a0d3192
fix(gemini): map refusal finish reasons and handle partless stream co…
luispater Oct 6, 2026
68ea171
fix(gemini): handle carrier thinking blocks for signed visible text a…
luispater Oct 6, 2026
6a853dc
feat(xai): expose Grok TTS on /v1/audio/speech
luohui1 Oct 6, 2026
da5f109
test(cliproxy): fix model catalog restore configuration in tests
luispater Oct 6, 2026
50d5fe1
fix(cliproxy): avoid selecting rejected credentials during refresh an…
luispater Oct 6, 2026
6920ed5
fix(cliproxy): propagate credential version and registration epoch in…
luispater Oct 6, 2026
935aa6e
fix(cliproxy): prevent in-flight token refresh from overwriting concu…
luispater Oct 6, 2026
dbc4aad
fix(gemini): ignore context cancellation after terminal chunk in Vert…
luispater Oct 7, 2026
eca1d11
fix(claude): keep system prompt at top level for single terminal user…
luispater Oct 7, 2026
39632e5
fix(claude): keep system prompt at top level for leading user message…
luispater Oct 7, 2026
57bde35
fix(executor): preserve upstream usage on apply patch failures
luispater Oct 7, 2026
061001f
Merge PR #6418: feat(xai): expose Grok TTS on /v1/audio/speech
luispater Oct 7, 2026
306c9bd
fix(routing): restrict speech-only models to speech endpoints and ref…
luispater Oct 7, 2026
3b69068
fix(translator): stop dropping attachments and empty turns
soilSpoon Oct 7, 2026
14dc4e0
fix(claude): relocate caller system prompt to messages for OAuth requ…
luispater Oct 7, 2026
cd9e5ac
fix(api): compact json error response bodies for SSE compatibility
luispater Oct 7, 2026
e7b2226
fix(claude): support plain-text and structured response bodies for mi…
luispater Oct 7, 2026
7c41cd0
feat: add global server GitHub token configuration
LTbinglingfeng Oct 7, 2026
f3703e8
Merge pull request #6444 from router-for-me/feat/server-github-token
LTbinglingfeng Oct 7, 2026
90654da
feat(xai): dynamically fetch latest Grok CLI version from npm registr…
jellyfish-p Oct 7, 2026
7cd8f7b
Merge pull request #6441 from soilSpoon/fix/attachment-parts
luispater Oct 7, 2026
f51624a
fix(translator): report unsendable user turn attachments in openai re…
luispater Oct 7, 2026
298649f
Merge pull request #6446 from jellyfish-p/feat/grok-cli-dynamic-version
luispater Oct 7, 2026
34e73c7
fix(xai): add proxy support and semver validation to Grok CLI updater
luispater Oct 7, 2026
0f96f56
refactor(translator): update openai and interactions request converte…
luispater Oct 7, 2026
2d5351b
feat(vertex): add support for native gemini interactions api
luispater Oct 8, 2026
249e9ef
fix(meta): preserve foreign reasoning encrypted content in responses …
luispater Oct 8, 2026
0a23627
fix(config): normalize collection styles and unquote mapping keys in …
luispater Oct 8, 2026
7c2133e
fix(cliproxy): reconcile concurrent auth updates during batch model r…
luispater Oct 8, 2026
54946fa
docs(readme): remove full QQ group in README_CN
luispater Oct 8, 2026
6331b38
feat(openai): support response.interrupt in responses websocket handling
luispater Oct 8, 2026
ab151f5
fix(antigravity): include thoughts token count in openai completion t…
luispater Oct 8, 2026
8080967
fix(claude): ignore overage billing resets in unified rate limit parsing
luispater Oct 8, 2026
2bc236d
feat(claude): support responses compaction in claude executor
luispater Oct 8, 2026
a881c03
fix(claude): respect registry completion limit for default responses …
luispater Oct 8, 2026
6746588
fix(pluginhost): detach unselected plugins on config apply
luispater Oct 8, 2026
054e75b
Merge upstream 67465884ca17 with Pinable host integration preserved
Oct 9, 2026
fd6d88e
ci: validate native runtimes for core Go changes and pin the new sync…
PinableAgents Oct 9, 2026
2397d57
fix: flush host shutdown acknowledgement before closing connections
PinableAgents Oct 9, 2026
d21ac84
test: synchronize upstream HTTP interrupt cancellation observation
PinableAgents Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 6 additions & 1 deletion .github/workflows/pinable-runtime.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,19 @@ on:
pull_request:
branches: [main]
paths:
- 'cmd/server/**'
- 'internal/**'
- 'sdk/**'
- 'go.mod'
- 'go.sum'
- '.github/workflows/pinable-runtime.yml'
- 'scripts/pinable/runtime.py'
- 'scripts/pinable/test_runtime.py'
- 'scripts/pinable/test_publish_runtime.py'
- 'scripts/pinable/test_smoke_runtime.py'
- 'scripts/pinable/smoke_runtime.py'
- 'scripts/pinable/publish_runtime.py'
- 'docs/pinable/desktop-runtime.md'
- 'internal/watcher/**'
workflow_dispatch:
inputs:
version:
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/pinable-upstream-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ jobs:
persist-credentials: false
- name: Verify synchronization baseline ancestry
run: |
git merge-base --is-ancestor 2eb057869ca11301edf1768e6ff68d8f95521e10 HEAD
git merge-base --is-ancestor a270e7b9e57aaecd8f82555f44c2108518ad2330 HEAD
git merge-base --is-ancestor fa10525c30391ebade420d23302425eecc9678c1 HEAD
git merge-base --is-ancestor 67465884ca179a8f9098328d03a361b50003fdd7 HEAD
- name: Test safe synchronization script
run: |
bash -n scripts/pinable/sync-upstream.sh
Expand All @@ -42,6 +42,10 @@ jobs:
run: go test ./...
- name: Repeat timeout ordering regressions
run: go test ./internal/runtime/executor -run 'TestCodex(Websockets)?Executor_BootstrapBuffering_(TimeBudgetReleasesStream|OverloadDirectlyAfterTimeoutDeliveredInStream|StatusBearingErrorAfterTimeoutDeliveredInStream)$' -count=20
- name: Repeat shutdown acknowledgement regressions with race detection
run: go test -race ./internal/api/handlers/management -run '^TestPostRuntimeShutdown(WaitsForResponseFlush|AcknowledgesBeforeImmediateConnectionClose)$' -count=50
- name: Repeat HTTP interrupt cancellation regression
run: go test ./sdk/api/handlers/openai -run '^TestResponsesInterruptStopsHTTPUpstream$' -count=100
- name: Probe version and discovery output
shell: bash
run: |
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ go build -o test-output ./cmd/server && rm test-output # Verify compile (REQUIRE
- As a rule, do not make standalone changes to `internal/translator/`. You may modify it only as part of broader changes elsewhere.
- If a task requires changing only `internal/translator/`, run `gh repo view --json viewerPermission -q .viewerPermission` to confirm you have `WRITE`, `MAINTAIN`, or `ADMIN`. If you do, you may proceed; otherwise, file a GitHub issue including the goal, rationale, and the intended implementation code, then stop further work.
- `internal/runtime/executor/` should contain executors and their unit tests only. Place any helper/supporting files under `internal/runtime/executor/helps/`.
- Payload configuration MUST be the final semantic barrier before sending requests in every executor, including streaming, WebSocket, continuation, retry/fallback, image, and token-count paths where applicable. Complete all built-in payload translation, normalization, injection, and cleanup first, then evaluate and apply user payload rules exactly once to the final business payload. No subsequent logic may overwrite configured values or restore filtered fields. Only necessary transport framing, serialization, signature calculation, and read-only validation may follow without changing business payload semantics. Add regression tests when introducing or changing request-building paths to enforce this ordering.
- Follow `gofmt`; keep imports goimports-style; wrap errors with context where helpful
- Do not use `log.Fatal`/`log.Fatalf` (terminates the process); prefer returning errors and logging via logrus
- Shadowed variables: use method suffix (`errStart := server.Start()`)
Expand Down
38 changes: 27 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,31 @@ You can access the following providers locally and with multiple CLI accounts th
</tr>
<tr>
<td align="center"><a href="https://www.kimi.com/code/?aff=cliproxyapi"><img src="./assets/logo/kimi.svg" alt="Kimi" width="28" height="28" /></a></td>
<td>Kimi series models (Kimi K3, Kimi K2.7 Code, etc.). <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> is Moonshot AI’s most capable model and the world’s first open 3T-class model. With 2.8 trillion parameters, native vision, and a 1-million-token context window, K3 is built for long-horizon coding, knowledge work, and reasoning. CLIProxyAPI supports Kimi through OAuth or compatible API interfaces. Try a <strong>Kimi Code plan</strong> (<a href="https://www.kimi.com/code?aff=cliproxyapi">中文站</a> | <a href="https://www.kimi.ai/code?aff=cliproxyapi">Global</a>), or get an <strong>API key</strong> from the Kimi Open Platform (<a href="https://platform.kimi.com?track_id=track-f15622e7182046baa22ca35e006e13a7&aff=cliproxyapi">中文站</a> | <a href="https://platform.kimi.ai?track_id=track-8a28e4b291d84f62af2fccc3e7a21cb3&aff=cliproxyapi">Global</a>). Thanks to Kimi for supporting CLIProxyAPI and the open-source community!</td>
<td>Kimi series models (Kimi K3, K2.8 Preview, etc.). <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> is Moonshot AI’s most capable model and the world’s first open 3T-class model. With 2.8 trillion parameters, native vision, and a 1-million-token context window, K3 is built for long-horizon coding, knowledge work, and reasoning. CLIProxyAPI supports Kimi through OAuth or compatible API interfaces. Try a <strong>Kimi Code plan</strong> (<a href="https://www.kimi.com/code?aff=cliproxyapi">中文站</a> | <a href="https://www.kimi.ai/code?aff=cliproxyapi">Global</a>), or get an <strong>API key</strong> from the Kimi Open Platform (<a href="https://platform.kimi.com?track_id=track-f15622e7182046baa22ca35e006e13a7&aff=cliproxyapi">中文站</a> | <a href="https://platform.kimi.ai?track_id=track-8a28e4b291d84f62af2fccc3e7a21cb3&aff=cliproxyapi">Global</a>). Thanks to Kimi for supporting CLIProxyAPI and the open-source community!</td>
</tr>
<tr>
<td align="center"><a href="https://platform.openai.com/docs/guide/gpt-5.6"><img src="./assets/logo/openai.svg" alt="OpenAI" width="28" height="28" /></a></td>
<td>OpenAI GPT series models (GPT 5.6, GPT 5.5, etc.). GPT-5.6 sets a new quality and efficiency baseline for complex production workflows. GPT-5.6 is especially token-efficient and improves frontend aesthetics, including layout, visual hierarchy, and design judgment.</td>
<td align="center"><a href="https://developers.openai.com/api/docs/models"><img src="./assets/logo/openai.svg" alt="OpenAI" width="28" height="28" /></a></td>
<td>OpenAI GPT-6 models (GPT-6 Astra, GPT-6.1 Sol, GPT-6 Luna), including access through Codex OAuth. Astra is the flagship for complex reasoning and coding, Sol balances capability and cost, and Luna handles focused, high-volume work.</td>
</tr>
<tr>
<td align="center"><a href="https://www.anthropic.com/claude/fable"><img src="./assets/logo/claude.svg" alt="Anthropic" width="28" height="28" /></a></td>
<td>Anthropic Claude series models (Claude Fable, Claude Opus, Claude Sonnet, etc.). Claude Fable 5 is Anthropic's most capable widely released model, built for the most demanding reasoning and long-horizon agentic work.</td>
<td>Anthropic Claude models (Claude Fable 5.1, Claude Opus 5.5, Claude Sonnet 5.5). Fable 5.1 is built for ambitious, long-running coding and knowledge work; Opus 5.5 brings strong agentic coding at a lower cost.</td>
</tr>
<tr>
<td align="center"><a href="https://antigravity.google/"><img src="./assets/logo/antigravity.svg" alt="Antigravity" width="28" height="28" /></a></td>
<td>Google Gemini series models (Gemini 3.5 Flash, Gemini 3.1 Pro, etc.). Gemini 3.5 Flash provides sustained frontier-level intelligence optimized for real-world tasks at a higher speed and lower cost. Designed for the agentic era, it excels at sub-agent deployment, multi-step workflows, and long-horizon tasks at scale. This model is particularly effective for rapid agentic loops involving complex coding cycles and iterations.</td>
<td>Google Gemini models include Gemini 3.8 Flash and Gemini 3.1 Pro Preview. CLIProxyAPI supports Gemini API, AI Studio, Vertex AI, Gemini CLI, and Antigravity accounts; model availability varies by channel. Gemini 3.8 Flash is Google's latest Flash model for long-horizon software engineering and agentic workflows.</td>
</tr>
<tr>
<td align="center"><a href="https://x.ai/grok"><img src="./assets/logo/xai.svg" alt="xAI" width="28" height="28" /></a></td>
<td>xAI Grok series models (Grok 4.5, Grok Composer 2.5 Fast, etc.). Grok 4.5 is SpaceXAI's frontier model built for coding, agentic tasks, and knowledge work. It was trained in SpaceXAI's data centers in Memphis with new datasets spanning science, engineering, and math.</td>
<td align="center"><a href="https://docs.x.ai/developers/grok-4-7"><img src="./assets/logo/xai.svg" alt="xAI" width="28" height="28" /></a></td>
<td>xAI Grok models (Grok 4.7, Grok 4.7 Build Fast, etc.). Grok 4.7 is SpaceXAI's latest model for coding, agentic tasks, and knowledge work.</td>
</tr>
<tr>
<td align="center"><a href="https://dev.meta.ai/docs/overview"><img src="./assets/logo/meta.svg" alt="Meta" width="28" height="28" /></a></td>
<td>Meta Muse models (Muse Spark 1.3, Muse Spark 1.2, etc.). CLIProxyAPI supports Muse Code accounts through Meta login and Meta Model API keys, with Muse Spark 1.3 for coding and agentic workflows.</td>
</tr>
<tr>
<td align="center"><a href="https://devin.ai/cli">Devin</a></td>
<td>Devin models (SWE-2, GPT-6 Astra, Claude Fable 5.1, etc.). Connect a Devin account with <code>--devin-login</code> to route the models available to that account.</td>
</tr>
</tbody>
</table>
Expand Down Expand Up @@ -81,10 +89,6 @@ PackyCode provides special discounts for our software users: register using <a h
<td>Thanks to APIMart for sponsoring this project! APIMart is a low-cost API platform for AI image &amp; video generation — GPT-Image-2 from &#36;0.006/image, 160+ images per dollar. One async API covers both image and video: submit a task, get an ID, fetch results via polling or callback. Batch tens of thousands of images without timeouts, switch models without changing code. Pay-as-you-go with no monthly fee — <a href="https://go.apimart.ai/gh-cliproxyapi">sign up here</a> to get started.</td>
</tr>
<tr>
<td width="180"><a href="https://www.axisnow.io/zh"><img src="./assets/axisnow.png" alt="AxisNow" width="150"></a></td>
<td>Protect and accelerate websites and APIs while optimizing access from both mainland China and the rest of the world. Extend acceleration and security to native and mobile apps through client SDKs — <b>self-hosted private CDN | subscription-based DDoS-protected CDN | independently controlled, flexibly composable CDN networks.</b></td>
</tr>
<tr>
<td width="180"><a href="https://www.swiftproxy.net/?code=PR67S9A95"><img src="./assets/swiftproxy.png" alt="Swiftproxy" width="150"></a></td>
<td>Swiftproxy provides 90M+ clean residential IPs across 220+ locations, supporting HTTP(S)/SOCKS5, IP rotation, Sticky Sessions, and precise location targeting. It helps AI API tools and automation workflows access online services reliably from different locations, making it ideal for API requests, web access, data collection, and location-based testing. Residential proxies from &#36;0.7/GB. Free testing is available, with 10% off using code PROXY90. <a href="https://www.swiftproxy.net/?code=PR67S9A95">Try Swiftproxy Now</a></td>
</tr>
Expand Down Expand Up @@ -150,6 +154,10 @@ Standalone persistence and visualization service for CLIProxyAPI, with periodic

Full CLIProxyAPI management center with request-level monitoring and cost estimates. CPA-Manager tracks collected requests by account, model, channel, latency, status, and token usage; estimates cost with editable model prices and one-click LiteLLM price sync; persists events in SQLite; and provides Codex account-pool operations with batch inspection, quota detection, unhealthy account discovery, cleanup suggestions, and one-click execution for day-to-day multi-account maintenance.

### [Oh-My-CPA](https://github.com/WizisCool/oh-my-cpa)

Modern Ant Design-based management console for CLIProxyAPI v8+, combining CPAMC-style administration with SQLite-backed request records and usage analytics. Covers OAuth accounts, API providers, client keys, quotas, pricing and CPA operations in one interface. Tracks request-level latency, TTFT, tokens and cost, with multi-dimensional filtering, live dashboards and token heatmaps. OpenRouter price sync, custom rates and per-request price snapshots keep historical costs stable; a built-in Agent and MCP tools support assisted investigation and management.

## SDK Docs

- Usage: [docs/sdk-usage.md](docs/sdk-usage.md)
Expand Down Expand Up @@ -291,6 +299,10 @@ Claude Code status line for CLIProxyAPI: per-account Codex / Grok / Antigravity

Cross-platform Electron tray dashboard for CLIProxyAPI. Shows the real OAuth quota windows per account across ChatGPT/Codex, Claude, Gemini/Antigravity, Grok, Kimi and Cursor, estimates usage-queue cost, and tracks OpenAI/Claude service status. Dark terminal-style UI; runs on Windows and Linux.

### [panel4cliproxyapi](https://github.com/yaanlaan/panel4cliproxyapi)

A modern, responsive web dashboard and management console for CLIProxyAPI built with React and Tailwind CSS. Features multi-provider OAuth login with LAN redirect assistance, visual zero-YAML configuration, real-time traffic analytics charts, client API key management, core version checking & hot-reloading, and a live SSE streaming playground.

> [!NOTE]
> If you developed a project based on CLIProxyAPI, please open a PR to add it to this list.

Expand All @@ -312,6 +324,10 @@ OmniRoute is an AI gateway for multi-provider LLMs: an OpenAI-compatible endpoin

This is a tool built with Tauri 2 + Vue 3 for managing multiple OpenAI Codex desktop accounts. Switch between saved ChatGPT/Codex certification profiles, check 5-hour and weekly quota usage in real time, verify token health, view active account details, and import or save auth.json files without manual copying.

### [cliproxy-rs](https://github.com/vayungodara/cliproxy-rs)

A Rust port of CLIProxyAPI that reads the same `config.yaml` and auth files and serves the same routes and v8 Management API, so you can switch between the two in either direction. Ships as a single binary with the management dashboard built in (per-account 5-hour and weekly quota view, account sign-in, client setup guides), and adds an opt-in `soonest-reset` routing strategy that spends the account whose weekly window resets first.

> [!NOTE]
> If you have developed a port of CLIProxyAPI or a project inspired by it, please open a PR to add it to this list.

Expand Down
Loading
Loading