Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1090 commits
Select commit Hold shift + click to select a range
8fecd62
fix(antigravity): cap maxOutputTokens using registry max_completion_t…
sususu98 Apr 15, 2026
8fac296
chore: remove Qwen support from SDK and internal components
luispater Apr 15, 2026
3dea1da
Merge pull request #2782 from sususu98/fix/strip-invalid-signature-th…
luispater Apr 15, 2026
f56cf42
Merge pull request #2800 from sususu98/fix/antigravity-max-output-tok…
luispater Apr 15, 2026
a4c1e32
chore(models): remove outdated GPT-5 and related model entries from r…
luispater Apr 15, 2026
7c24d54
feat(session-affinity): add session-sticky routing for multi-account …
sususu98 Apr 14, 2026
d4a6a5a
fix(antigravity): strip billing header from system instruction before…
sususu98 Apr 14, 2026
d1508ca
Merge pull request #2816 from sususu98/feat/session-affinity
luispater Apr 15, 2026
ba454db
Merge pull request #2817 from sususu98/fix/antigravity-strip-billing-…
luispater Apr 15, 2026
1267fdd
fix(docker-build): improve argument handling and error messaging for …
hkfires Apr 16, 2026
8f9e662
fix(util): forward custom Host header to upstream
muzhi1991 Apr 16, 2026
7b03f04
fix(handlers): include execution session metadata and skip idempotenc…
luispater Apr 16, 2026
d949921
feat(auth): add proxy URL override support to auth constructors and e…
luispater Apr 16, 2026
f5dc648
chore: remove iFlow-related modules and dependencies
luispater Apr 16, 2026
5dcca69
feat(models): add Claude Opus 4.7 model entry to registry JSON
luispater Apr 16, 2026
d9a3b3e
fix(tests): update model lookup references and enhance Claude executo…
hkfires Apr 17, 2026
da43f63
fix(tests): update Gemini family test case numbers for consistency
hkfires Apr 17, 2026
eba561b
fix(util): also keep Host in header map for synthetic requests
muzhi1991 Apr 17, 2026
894baad
feat(api): integrate auth index into key retrieval endpoints for Gemi…
LTbinglingfeng Apr 18, 2026
c26936e
fix(management): stabilize auth-index mapping
LTbinglingfeng Apr 18, 2026
a64141a
fix(tests): remove obsolete config_auth_index_test file
LTbinglingfeng Apr 18, 2026
c6baa64
Merge pull request #2892 from router-for-me/fix-provider
LTbinglingfeng Apr 18, 2026
86c856f
feat(translator): add partial and full image generation support in Co…
luispater Apr 18, 2026
f4eb161
fix(executor): drop obsolete context-1m-2025-08-07 beta header (fixes…
octo-patch Apr 19, 2026
e05abec
Merge pull request #2898 from octo-patch/fix/issue-2866-remove-obsole…
luispater Apr 19, 2026
8f4a4ea
feat(docs): add VisionCoder sponsorship details and optimize external…
luispater Apr 19, 2026
e6866ff
feat(auth): add refresh backoff for ineffective token updates
luispater Apr 20, 2026
bb8408c
fix(codex): backfill streaming response output
stringer07 Apr 21, 2026
b6781d6
perf(codex): avoid repeated output patch writes
stringer07 Apr 21, 2026
1716a84
feat(api): add support for `HEAD` requests to `/healthz` endpoint
luispater Apr 21, 2026
3444820
Merge pull request #2939 from stringer07/fix/codex-stream-output-back…
luispater Apr 21, 2026
8ced7a5
Merge pull request #2834 from muzhi1991/fix/openai-compat-host-header
luispater Apr 21, 2026
4fc2c61
feat(models): add Kimi K2.6 model entry to registry JSON
luispater Apr 21, 2026
e935196
feat(models): add hardcoded GPT-Image-2 model support in Codex
luispater Apr 22, 2026
fd71960
fix(handlers): remove handling of unsupported `n` parameter in OpenAI…
luispater Apr 22, 2026
a188159
fix(handlers): remove references to unsupported `n` parameter in Open…
luispater Apr 22, 2026
31934ae
feat(codex): enable image generation for all Codex upstream requests
MoYeRanqianzhi Apr 22, 2026
14d46a0
feat(antigravity): conductor-level credits fallback for Claude models
sususu98 Apr 23, 2026
4d6457e
feat: support extracting X-Amp-Thread-Id header as session id for ses…
XYenon Apr 23, 2026
4de5c29
fix(antigravity): remove credits fallback from CountTokens, fix gofmt
sususu98 Apr 23, 2026
8e49c79
fix: forward HTTP headers to executor Options so session affinity can…
XYenon Apr 23, 2026
e75daa2
fix(antigravity): respect pinned auth in credits fallback, release de…
sususu98 Apr 23, 2026
920b6ef
refactor(logging): strip unrelated deferred body changes, keep credit…
sususu98 Apr 23, 2026
f130846
fix(auth): break credits cold-start deadlock by keeping unknown-hint …
sususu98 Apr 23, 2026
8eb56e5
Merge pull request #2962 from MoYeRanqianzhi/feat/codex-image-generat…
luispater Apr 23, 2026
7ad1900
perf(antigravity): async credits hint refresh for warm tokens
sususu98 Apr 23, 2026
25137b1
feat(logging): add AI API path support for image routes
luispater Apr 23, 2026
12195a2
Merge pull request #2971 from sususu98/feat/antigravity-credits-fallback
sususu98 Apr 23, 2026
7d5f6d9
feat(models): add GPT-5.5 model entry to registry JSON
luispater Apr 23, 2026
736018a
Add GPT-5.5 Codex model support
ben-vargas Apr 23, 2026
1576d14
Merge pull request #2989 from ben-vargas/gpt-5-5-support
luispater Apr 23, 2026
7b89583
chore(models): remove GPT-5.5 model entry from registry JSON
luispater Apr 23, 2026
f1ba615
feat(codex): pass base model to enable conditional image_generation t…
luispater Apr 23, 2026
5f5d593
fix antigravity credits stream fallback
sususu98 Apr 24, 2026
36cc762
Merge pull request #3007 from sususu98/fix-antigravity-credits-stream…
sususu98 Apr 24, 2026
4056c25
fix(codex): classify known upstream failures
Matthias319 Apr 24, 2026
a7e92e2
feat(auth): disallow free-tier Codex auth during selection process
luispater Apr 24, 2026
faad8e3
Add CPA Usage Keeper to README ecosystem list
Willxup Apr 24, 2026
cf043f6
docs:Add CPA Usage Keeper to README ecosystem list
Willxup Apr 24, 2026
be0fe6f
Merge pull request #3022 from Willxup/main
luispater Apr 25, 2026
28d7827
feat(api): implement protocol multiplexer and Redis queue for usage i…
luispater Apr 25, 2026
2c626ef
feat(security): implement IP ban for repeated management key and Redi…
luispater Apr 25, 2026
ea670ef
feat(models): add Codex Auto Review model entry to registry JSON
luispater Apr 25, 2026
0a7c6b0
feat(api): enhance model assignment logic in image handlers
luispater Apr 25, 2026
e707cf7
fix(claude): only reverse-remap OAuth tool names that were forward-re…
edlsh Apr 18, 2026
03ea4e5
perf(claude): pre-allocate reverseMap capacity
edlsh Apr 18, 2026
fc1ddf3
fix(claude): centralize oauth tool-name transform flow
edlsh Apr 19, 2026
95318ad
fix(amp): preserve lowercase glob tool name
edlsh Apr 13, 2026
fd45dec
fix(openai): repair empty responses stream output
edlsh Apr 24, 2026
d36e70e
fix(openai): preserve unindexed response output items
edlsh Apr 25, 2026
80eb037
fix(openai): preserve multiline repaired SSE data
edlsh Apr 25, 2026
32ef158
fix(test): remove free tier from GPT-5.5 inclusion test
philipbankier Apr 26, 2026
3857305
feat(config): add support for disabling OpenAI compatibility providers
luispater Apr 26, 2026
c7b28ba
feat(executor): add support for Codex image generation tool usage tra…
luispater Apr 26, 2026
c5bea6f
Merge pull request #3020 from Matthias319/fix/codex-error-classification
luispater Apr 26, 2026
736ae61
Merge pull request #3051 from philipbankier/fix/gpt55-free-tier-test
luispater Apr 26, 2026
6fc2356
logging: mark antigravity credits requests
sususu98 Apr 26, 2026
a325533
Merge pull request #2972 from XYenon/feat/amp-thread-id
luispater Apr 26, 2026
04a336f
fix(usage_helpers): skip zero-token usage in additional model records
luispater Apr 27, 2026
01e16a8
feat(codex): handle thinking-signature conversion for reasoning content
luispater Apr 27, 2026
d85e13b
fix(codex): include `content` field in reasoning item initialization
luispater Apr 27, 2026
c523101
Preserve Codex reasoning signatures for Claude
sususu98 Apr 27, 2026
34027da
Merge pull request #3088 from sususu98/codex-claude-reasoning-signature
luispater Apr 27, 2026
3ac39dc
feat: support Codex/PI session headers for session affinity
XYenon Apr 27, 2026
a992dee
fix(antigravity): use real antigravity UA when polling credits balance
Xbang0222 Apr 28, 2026
9fb6a49
test(api): add validation for unsupported models in OpenAI image hand…
luispater Apr 28, 2026
b34f3be
Merge pull request #3114 from Xbang0222/fix/antigravity-credits-ua
sususu98 Apr 28, 2026
e78d45a
fix antigravity user agent handling
sususu98 Apr 24, 2026
0e12351
fix antigravity client agent headers
sususu98 Apr 24, 2026
c4965be
Merge pull request #3117 from sususu98/fix/restore-antigravity-ua-han…
sususu98 Apr 28, 2026
f95ab4c
Merge pull request #3089 from XYenon/feat/session-affinity
luispater Apr 28, 2026
2ea8f77
feat(models): add GPT-5.5 to the registry with support for advanced t…
luispater Apr 29, 2026
4982512
fix: parse gemini cli usage metadata variants
sususu98 Apr 29, 2026
1c0c426
fix: align claude codex translation
sususu98 Apr 29, 2026
0d107dd
fix: respect declared claude web search tool names
sususu98 Apr 29, 2026
2c1539e
Merge pull request #3133 from sususu98/optimize/claude-codex-translator
luispater Apr 29, 2026
b3b92f3
Merge pull request #3125 from sususu98/fix/gemini-cli-usage-metadata-…
luispater Apr 29, 2026
a1f0ed9
Merge pull request #3071 from sususu98/fix/antigravity-credits-log
luispater Apr 29, 2026
359ec30
chore(docs): remove LingtrueAPI sponsorship section from README files
luispater Apr 29, 2026
e3e60f9
feat: support disabling image generation globally
luispater Apr 29, 2026
4601841
feat: remove `tool_choice` for `image_generation` when disabled
luispater Apr 30, 2026
f56a19e
feat: add tri-state support for `disable-image-generation` configuration
luispater Apr 30, 2026
6ba7c81
feat: apply image_generation filtering before payload rules
luispater Apr 30, 2026
243c582
feat: add unit tests for OpenAI responses request conversion
Apr 30, 2026
05ecfb6
feat: add local Docker build script and update compose configuration
Apr 30, 2026
aa70d13
docs: add CodexCliPlus to README ecosystem list
C4AL Apr 30, 2026
8b286e8
Merge pull request #3163 from C4AL/docs/add-codexclipplus-ecosystem
luispater Apr 30, 2026
4035abc
refactor(logging): replace gin-specific context handling with generic…
luispater Apr 30, 2026
6187919
feat: add support for recent request tracking in auth records
luispater May 1, 2026
b0dc9df
feat: add API key usage endpoint with provider and key grouping
luispater May 1, 2026
e37f3be
chore: update .goreleaser.yml to include custom archive naming with a…
luispater May 1, 2026
8c2f1a8
feat: enhance API key usage grouping with base URL inclusion
luispater May 1, 2026
b8bba05
feat: add tracking for auth request success and failure counts
luispater May 1, 2026
18bb9c3
chore: remove usage tracking and logging functionality
luispater May 1, 2026
79579c3
docs: update README to consolidate and clarify CPA Usage Keeper details
luispater May 2, 2026
2efa56d
docs: add Playful Proxy API Panel
daishuge May 2, 2026
85124f0
Merge pull request #3194 from daishuge/codex/add-daishuge-cpa-port-20…
luispater May 2, 2026
56df368
feat: add configurable retention period for Redis usage queue
luispater May 2, 2026
101b59c
docs: update Subtitle Translator project description
VjayC May 3, 2026
593995a
Merge pull request #3197 from VjayC/dev
luispater May 3, 2026
5fc6f66
docs: add CLIProxy Pool Watch project
May 3, 2026
81db7fd
Add CLIProxyAPI Usage Dashboard to statistics docs
May 3, 2026
7972130
Update README_CN.md
zhanglunet May 3, 2026
d2386a3
Update README_JA.md
zhanglunet May 3, 2026
054d0de
Merge pull request #3201 from murasame612/docs/add-cliproxy-pool-watch
luispater May 3, 2026
756b600
Merge pull request #3204 from zhanglunet/add-usage-dashboard-link
luispater May 3, 2026
af65908
feat: enhance tool mapping with namespace and web search support
luispater May 3, 2026
672fdd1
feat: filter and drop empty assistant messages in Kimi executor
luispater May 3, 2026
bf0e5c2
fix: prevent goroutine leaks in streaming executors via context-aware…
1137043480 May 3, 2026
2753d9f
feat: add validation for Claude streaming responses
luispater May 3, 2026
82ebe24
Merge pull request #2266 from DragonFSKY/fix/ws-compact-tool-output-m…
luispater May 3, 2026
a1487b0
fix(translator): handle non-string types in tools result processing
luispater May 3, 2026
8e6ef3f
fix(websocket): ensure state consistency on auth errors in streaming
luispater May 3, 2026
38dad2a
chore(docker): upgrade base image to alpine 3.23
luispater May 3, 2026
17be644
fix(translator): improve tool response handling for non-string content
luispater May 3, 2026
c19ae1d
Align Codex websocket protocol semantics
kdcokenny May 3, 2026
08b0fe6
Fix Codex websocket retry metadata
kdcokenny May 4, 2026
6b4bc0a
Align Codex default identity and docs
kdcokenny May 4, 2026
a1eba11
Merge pull request #2416 from kslamph/fix/gemini-cli-projectid
luispater May 4, 2026
89d80bf
fix(executor): adjust ApplyThinking order and add payload override test
luispater May 4, 2026
85c0150
feat(translator): add token usage tracking and improve usage handling
luispater May 4, 2026
bf6fa40
fix(executor): strip Vertex OpenAI response tool call IDs for consist…
luispater May 4, 2026
c1caa45
fix(translator): handle empty tool function names in OpenAI Claude re…
luispater May 4, 2026
162897e
Merge remote-tracking branch 'origin/pr/3205' into dev
luispater May 4, 2026
ecf1c25
fix: preserve Antigravity cancellation errors
luispater May 4, 2026
8262a03
Merge PR #2568: fix Claude refresh backoff
luispater May 4, 2026
e4a93c0
fix(executor): enhance parsing of OpenAI stream data lines
luispater May 4, 2026
bdc4240
Merge pull request #2896 from edlsh/fix/oauth-tool-rename-per-request…
luispater May 4, 2026
28b4b19
Merge pull request #3208 from kdcokenny/codex-websocket-protocol-parity
luispater May 4, 2026
ba5d8ca
feat(usage): add support for requested model alias handling
luispater May 4, 2026
61b39d4
feat(management): add usage record retrieval endpoint
luispater May 4, 2026
da6c599
refactor(management): rename `GetUsage` to `GetUsageQueue` and update…
luispater May 4, 2026
99dfbae
fix(executor): ignore null OpenAI stream usage chunks
mochenya May 5, 2026
ed1458a
chore(docs): update sponsor details in README
luispater May 5, 2026
17a1f53
fix:openai 2 kimi error Continuous function_call
May 6, 2026
ad3f4f2
📝 docs(readme): add CPA-Manager usage statistics recommendation
seakee May 6, 2026
a09a16e
Merge branch 'router-for-me:main' into my-fix
AhDEV-free May 6, 2026
fb08b92
feat(executor): add upstream disconnect handling for Codex WebSocket …
luispater May 6, 2026
0117174
fix(amp): proxy thread actors route
edlsh May 6, 2026
a034cf8
Merge pull request #3247 from edlsh/fix/amp-thread-actors-route
luispater May 7, 2026
785b00c
Merge pull request #3237 from seakee/docs/add-cpa-manager-usage-stati…
luispater May 7, 2026
e50caba
chore: upgrade CLIProxyAPI dependency to v7 across the project
luispater May 8, 2026
c883114
fix responses websocket tool output context
codex May 8, 2026
4071fde
fix: apply default auth-dir when config value is empty
lihan3238 May 8, 2026
4cbe172
refactor: extract DefaultAuthDir constant per review feedback
lihan3238 May 8, 2026
1721994
feat(management): expose additional OAuth and configuration helpers
luispater May 8, 2026
c67096b
feat(server): add support for loading configuration from a remote hom…
luispater May 8, 2026
0f0fcd2
feat(config): add per-auth `disable_cooling` override support
luispater May 9, 2026
0dcb8bd
refactor(cliproxy): remove `ClaudeCodeSessionAffinity` support and si…
luispater May 9, 2026
09ac8a1
Merge pull request #3221 from mochenya/main
luispater May 9, 2026
68fddaa
Merge pull request #3292 from lihan3238/fix-3272
luispater May 9, 2026
c69ff49
feat(auth): add support for persisting `disabled` flag in token storage
luispater May 9, 2026
41f4ee7
feat(auth): enhance auth index generation with improved file path han…
luispater May 9, 2026
3cbd587
Merge pull request #3283 from wuchulonly/fix/responses-ws-tool-output…
luispater May 9, 2026
1abf862
feat(logging): add home request-log forwarding support
luispater May 9, 2026
66c3dae
feat(home): implement `count` for home auth dispatch requests and ena…
luispater May 9, 2026
67fb4eb
feat(auth): add `shouldReturnLastErrorOnPickFailure` helper and impro…
luispater May 9, 2026
a44e5eb
Merge branch 'v7' into dev
luispater May 9, 2026
28dfcae
fix(api): prevent idle TCP connections from blocking the accept loop
lihan3238 May 9, 2026
dc1cc7f
feat(auth): add websocket session reuse for home auths with caching s…
luispater May 10, 2026
8300ee8
feat(auth): enhance home auth session reuse with scoped caching and r…
luispater May 10, 2026
15ac7fb
refactor(auth): simplify home auth session management and remove ref …
luispater May 10, 2026
5e5b1bc
feat(config): add detailed logging for home config changes
luispater May 10, 2026
c5596e0
fix(api): clear sniff deadline before entering Redis handler
lihan3238 May 10, 2026
1fca942
Merge remote-tracking branch 'origin/pr/3239'
luispater May 10, 2026
041ccf0
Merge pull request #3303 from lihan3238/fix-3267
luispater May 11, 2026
bd8c05a
feat(usage): add support for detailed token breakdown in usage tracking
luispater May 12, 2026
6bfcb0c
feat(auth): improve unauthorized error handling for refresh and auto-…
luispater May 12, 2026
bcbb949
feat(client): add cluster node failover and improve reconnection hand…
luispater May 13, 2026
437aa87
feat(api): add dynamic handler for Gemini models with home integration
luispater May 13, 2026
3a9fb37
fix(home): implement home dispatch headers and enhance Gemini model h…
luispater May 13, 2026
229d03a
feat(auth): add support for disabling auth via metadata
luispater May 14, 2026
1d529c3
feat(redis): implement Pub/Sub support for usage tracking
luispater May 15, 2026
9d01c80
feat(redis): implement Pub/Sub support for usage tracking
luispater May 15, 2026
30a8824
fix(gitstore): adjust garbage collection to run after push operation
luispater May 15, 2026
e7a1859
feat(api): add request body decoding with Content-Encoding support
luispater May 16, 2026
82c9e0d
feat(api, watcher): add zstd decoding for request logs and payload di…
luispater May 16, 2026
7a1a340
fix(home): use net.JoinHostPort for consistent host:port formatting
luispater May 16, 2026
48104ab
feat(home): implement home control plane integration with Redis and T…
hkfires May 16, 2026
644d5ea
feat(home): add support for disabling cluster discovery in Redis conf…
hkfires May 16, 2026
f4c6c41
Merge pull request #3430 from router-for-me/home
luispater May 16, 2026
c66fa37
feat(home): add cluster nodes payload parsing and Redis channel handling
luispater May 16, 2026
cd0cea3
refactor(server): consolidate `home_flag` logic into `main.go` for be…
luispater May 16, 2026
e4c9570
feat(auth): add OAuth2 support for xAI with PKCE and token persistence
luispater May 16, 2026
2ff9e33
feat(api, xai): integrate xAI Grok image models and extend API endpoi…
luispater May 16, 2026
53d1fd6
feat(api, xai): add xAI Grok video model support with API integration
luispater May 16, 2026
d606faa
fix: strip Claude Code attribution from non-Anthropic translations
madwiki May 16, 2026
088ab33
feat(api): add Codex client models support for OpenAI API
luispater May 16, 2026
ddd1053
feat(xai): normalize xAI input reasoning items and enhance test cases
luispater May 16, 2026
96754f5
refactor(api): move Codex client model handling to `registry` package
luispater May 16, 2026
8b3670b
feat(xai): support namespace tools and enhance tool normalization logic
luispater May 16, 2026
2607888
fix(xai): default missing function tool parameters
ben-vargas May 16, 2026
74cb53d
feat(xai): support namespace tools and enhance tool normalization logic
luispater May 17, 2026
4b13f9c
Merge pull request #3439 from ben-vargas/fix-grok-tool-params
luispater May 17, 2026
be841b8
log(registry): replace panic with warning on embedded model parse fai…
luispater May 17, 2026
26d13af
feat(runtime): enhance payload rule resolution with dynamic path support
luispater May 17, 2026
2007a89
feat(runtime): enhance payload rule resolution with dynamic path support
luispater May 17, 2026
9ef99aa
refactor(runtime): rename `FormProtocol` to `FromProtocol` across pay…
luispater May 17, 2026
605adaa
feat(api): add support for local management password validation and s…
luispater May 17, 2026
ed0ac68
feat(server): add HOME_ADDR and HOME_PASSWORD env var fallback for ho…
May 17, 2026
5f03965
refactor: move home env vars after godotenv and use lookupEnv helper
May 18, 2026
66c5d60
refactor(api): remove `newTestServerWithOptions` and spoofed IP rejec…
luispater May 18, 2026
64d233f
Merge pull request #3448 from LongDinhh/feat/home-env-vars
luispater May 18, 2026
1c2153a
fix(openai-claude): stabilize streaming tool_use blocks
May 18, 2026
4ad6ffe
Merge pull request #3438 from madwiki/fix/strip-claude-code-attribution
luispater May 18, 2026
2460205
Merge pull request #2926 from slicenferqin/fix-tool-use-name-loss-and…
luispater May 18, 2026
ec79951
fix(proxy): support HTTP CONNECT dialer
sususu98 May 18, 2026
8bc2eff
fix: shorten claude codex tool call ids
sususu98 May 18, 2026
2710f56
Merge pull request #3450 from sususu98/fix/http-connect-proxy-dialer
luispater May 18, 2026
cc0cb05
Merge pull request #3468 from sususu98/fix/claude-codex-call-id-length
luispater May 18, 2026
1583cb4
Cap Gemini max output tokens
sususu98 May 18, 2026
32a0d69
Fix Antigravity Gemini thought signatures
sususu98 May 18, 2026
77ba15f
feat(server): add mTLS certificate bootstrap via JWT for Home connect…
luispater May 18, 2026
ad98c95
feat(runtime): track upstream response headers in logging and usage r…
luispater May 18, 2026
bac006e
feat(thinking): add xAI provider support with reasoning.effort implem…
luispater May 18, 2026
6448235
Merge pull request #3469 from sususu98/fix/gemini-max-output-token-cap
sususu98 May 19, 2026
b67eb6f
Merge pull request #3470 from sususu98/fix/antigravity-gemini-thought…
sususu98 May 19, 2026
feebe6c
feat(api): add OpenAI compatibility for image models
luispater May 19, 2026
bbe30f5
feat(server): enhance Home certificate handling with CA fingerprint v…
luispater May 19, 2026
67f2251
style(docs): improve sponsor section clarity in README files
luispater May 19, 2026
bb5ac40
feat(client): add timeout handling for Redis operations and subscript…
luispater May 19, 2026
7f68fa2
Add Codex Switch tool to README
9ycrooked May 19, 2026
5ef7693
Update README.md
9ycrooked May 19, 2026
b9589e8
Merge pull request #3482 from 9ycrooked/patch-1
luispater May 19, 2026
99fa530
test: remove unused Redis protocol tests and helpers
luispater May 19, 2026
0759b72
fix: always write error logs and include cached tokens in Claude usage
May 10, 2026
8469493
ci: restore custom workflows for fork
May 10, 2026
fb64890
fix: show all request logs when request-log is enabled
May 10, 2026
922717e
fix(usage): include cache_creation tokens in Claude usage calculation
May 14, 2026
6a313bd
docs: add project documentation files and ignore local tooling
May 14, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ bin/*
.agent/*
.agents/*
.opencode/*
.idea/*
.bmad/*
_bmad/*
_bmad-output/*
124 changes: 113 additions & 11 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
name: docker-image

on:
workflow_dispatch:
push:
tags:
- v*

env:
APP_NAME: CLIProxyAPI
DOCKERHUB_REPO: eceasy/cli-proxy-api
DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_USERNAME }}/cli-proxy-api-plus

jobs:
docker:
docker_amd64:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
Expand All @@ -26,21 +29,120 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Generate Build Metadata
run: |
echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- name: Build and push
- name: Build and push (amd64)
uses: docker/build-push-action@v6
with:
context: .
platforms: |
linux/amd64
linux/arm64
platforms: linux/amd64
push: true
build-args: |
VERSION=${{ env.VERSION }}
COMMIT=${{ env.COMMIT }}
BUILD_DATE=${{ env.BUILD_DATE }}
tags: |
${{ env.DOCKERHUB_REPO }}:latest
${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}
${{ env.DOCKERHUB_REPO }}:latest-amd64
${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-amd64

docker_arm64:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Generate Build Metadata
run: |
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- name: Build and push (arm64)
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/arm64
push: true
build-args: |
VERSION=${{ env.VERSION }}
COMMIT=${{ env.COMMIT }}
BUILD_DATE=${{ env.BUILD_DATE }}
tags: |
${{ env.DOCKERHUB_REPO }}:latest-arm64
${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-arm64

docker_manifest:
runs-on: ubuntu-latest
needs:
- docker_amd64
- docker_arm64
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Generate Build Metadata
run: |
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- name: Create and push multi-arch manifests
run: |
docker buildx imagetools create \
--tag "${DOCKERHUB_REPO}:latest" \
"${DOCKERHUB_REPO}:latest-amd64" \
"${DOCKERHUB_REPO}:latest-arm64"
docker buildx imagetools create \
--tag "${DOCKERHUB_REPO}:${VERSION}" \
"${DOCKERHUB_REPO}:${VERSION}-amd64" \
"${DOCKERHUB_REPO}:${VERSION}-arm64"
- name: Cleanup temporary tags
continue-on-error: true
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
set -euo pipefail
namespace="${DOCKERHUB_REPO%%/*}"
repo_name="${DOCKERHUB_REPO#*/}"

token="$(
curl -fsSL \
-H 'Content-Type: application/json' \
-d "{\"username\":\"${DOCKERHUB_USERNAME}\",\"password\":\"${DOCKERHUB_TOKEN}\"}" \
'https://hub.docker.com/v2/users/login/' \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["token"])'
)"

delete_tag() {
local tag="$1"
local url="https://hub.docker.com/v2/repositories/${namespace}/${repo_name}/tags/${tag}/"
local http_code
http_code="$(curl -sS -o /dev/null -w "%{http_code}" -X DELETE -H "Authorization: JWT ${token}" "${url}" || true)"
if [ "${http_code}" = "204" ] || [ "${http_code}" = "404" ]; then
echo "Docker Hub tag removed (or missing): ${DOCKERHUB_REPO}:${tag} (HTTP ${http_code})"
return 0
fi
echo "Docker Hub tag delete failed: ${DOCKERHUB_REPO}:${tag} (HTTP ${http_code})"
return 0
}

delete_tag "latest-amd64"
delete_tag "latest-arm64"
delete_tag "${VERSION}-amd64"
delete_tag "${VERSION}-arm64"
4 changes: 4 additions & 0 deletions .github/workflows/pr-test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- name: Set up Go
uses: actions/setup-go@v5
with:
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Build and Publish

on:
push:
branches: [main]
tags: ['v*']
workflow_dispatch:
inputs:
platforms:
description: 'Target platforms to build'
required: true
default: 'linux/amd64'
type: choice
options:
- 'linux/amd64'
- 'linux/arm64'
- 'linux/amd64,linux/arm64'

permissions:
contents: read
packages: write

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
if: contains(github.event.inputs.platforms || 'linux/amd64', 'arm64')
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate Build Metadata
run: |
echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=semver,pattern={{version}}
type=sha
type=raw,value=latest

- name: Determine platforms
id: platforms
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "platforms=${{ github.event.inputs.platforms }}" >> $GITHUB_OUTPUT
else
# Default to amd64 only for push events (faster builds)
echo "platforms=linux/amd64" >> $GITHUB_OUTPUT
fi

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
platforms: ${{ steps.platforms.outputs.platforms }}
build-args: |
VERSION=${{ env.VERSION }}
COMMIT=${{ env.COMMIT }}
BUILD_DATE=${{ env.BUILD_DATE }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
11 changes: 8 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
# run only against tags
tags:
- '*'
workflow_dispatch:

permissions:
contents: write
Expand All @@ -16,21 +17,25 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- run: git fetch --force --tags
- uses: actions/setup-go@v4
with:
go-version: '>=1.24.0'
go-version: '>=1.26.0'
cache: true
- name: Generate Build Metadata
run: |
echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- uses: goreleaser/goreleaser-action@v4
with:
distribution: goreleaser
version: latest
args: release --clean
args: release --clean --skip=validate
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ env.VERSION }}
Expand Down
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,25 @@ GEMINI.md

# Tooling metadata
.vscode/*
.worktrees/
.codex/*
.claude/*
.gemini/*
.serena/*
.agent/*
.agents/*
.agents/*
.opencode/*
.idea/*
.beads/*
.bmad/*
_bmad/*
_bmad-output/*

# macOS
.DS_Store
._*
.gocache/

scripts
.omc
.omx
5 changes: 5 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
version: 2

builds:
- id: "cli-proxy-api"
env:
Expand All @@ -6,6 +8,7 @@ builds:
- linux
- windows
- darwin
- freebsd
goarch:
- amd64
- arm64
Expand All @@ -16,6 +19,8 @@ builds:
archives:
- id: "cli-proxy-api"
format: tar.gz
name_template: >-
{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{- if eq .Arch "arm64" -}}aarch64{{- else -}}{{ .Arch }}{{- end -}}
format_overrides:
- goos: windows
format: zip
Expand Down
Loading
Loading