CLIProxyAPI
Vytvořeno: 21.8.2026 | Aktualizováno: 12.09.2026 15:19
CLIProxyAPI je lokální proxy služba v Go, která převádí rozhraní OpenAI, Gemini, Anthropic/Claude, Codex a Grok. Umožňuje použít jeden AI klient nebo coding agent s modelem přihlášeným u jiného podporovaného poskytovatele.
Princip
CLIProxyAPI stojí mezi klientem a modelem. Přijme požadavek v protokolu klienta, přeloží jej pro zvolený upstream a odpověď vrátí zpět v očekávaném formátu.
Claude Code → CLIProxyAPI → Codex/GPT, Claude, Gemini, Grok nebo jiný kompatibilní upstream
Projekt podporuje OAuth přihlášení pro Codex, Claude Code, Gemini/Antigravity a Grok Build, API klíče i vlastní OpenAI-compatible upstreamy. Podle podpory upstreamu zprostředkuje streaming, tool/function calling, multimodální vstupy a některé WebSocket scénáře.
Ověřená instalace pro Claude Code a ChatGPT
Následující postup byl ověřený na Alpine Linuxu pro ARM64. CLIProxyAPI bylo sestavené ze zdrojových kódů; projekt vyžadoval Go alespoň ve verzi 1.26. Lokální Go 1.25.10 proto sestavení odmítlo. Pokud není vynucený GOTOOLCHAIN=local, Go si může potřebný toolchain stáhnout automaticky.
Pro izolované lokální použití má proxy poslouchat na 127.0.0.1 a používat samostatný adresář ~/.cli-proxy-api pro konfiguraci a OAuth credentials. V ověřené instalaci běžela na portu 8317.
Přihlášení k ChatGPT přes Codex OAuth
Podle dokumentace pro Claude Code umí CLIProxyAPI vystavit Anthropic-compatible rozhraní. Pro headless prostředí fungovalo přihlášení Codex device-code flow:
./cli-proxy-api --codex-device-login
Příkaz vypíše jednorázový kód. Ten se dokončí v prohlížeči na zařízení, kde je možné se přihlásit k ChatGPT účtu. Po úspěšném přihlášení se credentials uloží do ~/.cli-proxy-api.
Proxy se následně spustí například takto:
cd ~/cliproxyapi && nohup ./cli-proxy-api -config ~/.cli-proxy-api/config.yaml > ~/cliproxyapi.log 2>&1 &
Ověřené byly endpointy /v1/models i Anthropic-compatible /v1/messages; proxy vrátila modely i odpověď z GPT modelu. Proces spuštěný přes nohup přežije zavření terminálu, ale ne restart kontejneru nebo hostitele. Trvalé spuštění přes OpenRC či jiný init systém je potřeba nastavit zvlášť.
Samostatný příkaz ''claudex''
Globální ~/.claude/settings.json není vhodné přepisovat, pokud má běžný příkaz claude dál mířit přímo na Anthropic. Praktické řešení je samostatný wrapper ~/.local/bin/claudex, který nastaví proxy pouze pro nový proces:
#!/usr/bin/env bash export ANTHROPIC_BASE_URL="http://127.0.0.1:8317" export ANTHROPIC_AUTH_TOKEN="<api-klic-z-config.yaml>" export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY="1" exec claude "$@"
ANTHROPIC_AUTH_TOKEN je API klíč nastavený pro CLIProxyAPI; do wrapperu nepatří skutečný klíč zkopírovaný do dokumentace nebo repozitáře. Proměnná CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 zpřístupní modely oznámené proxy. Po spuštění claudex lze model vybrat přes /model nebo ho předat při startu:
claudex --model gpt-5.6-sol
Při ověřené instalaci byly přes proxy dostupné mimo jiné modely gpt-5.6-sol, gpt-5.6-terra a gpt-5.6-luna. Dostupný seznam závisí na aktuálním přihlášeném účtu a verzi proxy; je vhodné si jej ověřit přes /v1/models.
Co nelze přepnout za běhu
ANTHROPIC_BASE_URL určuje server při startu Claude Code. Příkaz /model mění pouze vybraný model na již nastaveném serveru, ne připojený server. Nelze tedy mít jednu spuštěnou session přímo u Anthropicu a za běhu ji přepnout na lokální GPT proxy.
Pro zachování oddělených backendů je možné používat:
claudepro přímé připojení k Anthropicu,claudexpro GPT přes lokální CLIProxyAPI.
Při změně backendu jde o nový proces Claude Code. Volba –continue může navázat na historii předchozí session, ale nejde o živé přepnutí backendu. Stejně tak nelze v jedné session nechat hlavního agenta přímo na Anthropicu a pouze subagenta poslat přes tuto proxy: všechny procesy session sdílejí stejné připojení.
Claude Code s jiným modelem
Pro Claude Code je podstatné, že proxy vystaví Claude-compatible endpoint a katalog modelů. Po přihlášení potřebného účtu nebo nastavení API klíče může Claude Code požadovat dostupný model podle jeho ID.
Název modelu může být skutečné upstream ID nebo alias definovaný v konfiguraci. Alias slouží jen pro routing; není důkazem, který model požadavek skutečně obsloužil. Pro přehledný provoz je vhodné zachovat názvy podle skutečného backendu, například gpt-…, gemini-… a claude-….
To znamená, že Claude Code zůstává uživatelským a agentním rozhraním, ale model, který generuje odpovědi, lze vybrat na straně proxy. Jde o překladovou vrstvu, nikoli o nativní podporu těchto modelů v Claude Code.
Příspěvek Tibo na X ukazuje stejný princip přes alias claudex, který spouští Claude Code s modelem gpt-5.6-sol.
Routing více účtů a modelů
Při více přihlašovacích údajích umí CLIProxyAPI používat round-robin, weighted round-robin nebo fill-first routing. Konfigurace obsahuje také retry, cooldown po chybách, volitelnou afinitu relace ke konkrétnímu účtu a modelové prefixy pro jednoznačné směrování.
Tato vrstva je užitečná hlavně tehdy, když je potřeba:
- přepínat backendové modely bez změny hlavního klienta,
- používat více účtů stejného poskytovatele,
- směrovat různé modelové názvy na různé upstreamy,
- provozovat klienta nad vlastním OpenAI-compatible API.
Bezpečnost a provoz
Proxy pracuje s OAuth tokeny a API klíči. Výchozí konfigurační soubor nastavuje host: „“, což znamená naslouchání na všech IPv4 a IPv6 rozhraních. Pro lokální použití je bezpečnější nastavit 127.0.0.1 nebo localhost, používat vlastní silný API klíč a nevystavovat službu ani její management rozhraní přímo do internetu.
Přihlašovací údaje se standardně ukládají do ~/.cli-proxy-api. Management API vyžaduje samostatný tajný klíč; pokud zůstane prázdný, management endpointy se nezpřístupní. Pluginy jsou ve výchozí konfiguraci vypnuté, protože se načítají jako důvěryhodný kód přímo do procesu.
Kontextová okna GPT a wrapper ''claudex''
CLIProxyAPI oznamuje klientovi velikosti oken přes /v1/models. Hodnoty pro Codex/GPT ale vycházejí z komunitního katalogu router-for-me/models, nikoli z měření konkrétního účtu. Katalog je vhodný jako průběžně aktualizovaný zdroj modelů, ale deklarované číslo není samo o sobě důkaz skutečného stropu API.
Obnovení přihlášení po změně tarifu
Po změně tarifu ChatGPT je vhodné vytvořit nové Codex OAuth přihlášení, aby proxy získala aktuální token:
cd ~/cliproxyapi ./cli-proxy-api --codex-device-login -config ~/.cli-proxy-api/config.yaml
Starý OAuth soubor pro stejný účet je potřeba z ~/.cli-proxy-api odstranit, aby proxy neměla dva záznamy s rozdílnými atributy. Přípona v názvu souboru a plan_type jsou jen údaje pro výběr katalogu; nejsou samy o sobě spolehlivým důkazem dostupného kontextového okna.
Katalog, endpoint a skutečný limit jsou různé údaje
V této instalaci prošel vstup o 900 314 tokenech u gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra a gpt-6-astra. U luny a astry selhal vstup o 1 000 314 tokenech; luna selhala už při 950 314 tokenech. Hodnota 921 000 proto leží v ověřeném intervalu pro lunu a astru. U sol a terra je ověřena pouze dolní hranice 900 314 tokenů.
To opravuje původní závěr, že gpt-6-astra má pevné okno 272 000 tokenů. Katalog pro něj uváděl chybnou hodnotu 272 000; problém popisuje issue #53 komunitního katalogu. Naopak gpt-5.5 při testu neprošel přes 350 314 tokenů a gpt-5.3-codex-spark přes 200 314 tokenů. Velké okno proto nelze zobecnit na všechny GPT modely.
GPT prompt cache nad 272 000 tokenů
Hranice 272 000 tokenů cache nevypíná. Při opakování stejného požadavku byla druhá odpověď cacheovaná z 99,7 % u vstupu 60 314 tokenů a z 99,95 % u vstupu 400 314 tokenů. Druhé měření je přímo nad hranicí 272 000 tokenů.
Některé veřejné zdroje spojují tuto hranici s dražším dlouhým vstupem u placeného API. V této instalaci ale nebyl změřen dopad na kvótu ChatGPT předplatného. Výchozí strop 272 000 tokenů je proto provozní volba pro vědomé používání dlouhého kontextu, ne potvrzený tarifní limit ani hranice prompt cache.
Podmíněná oprava Astry a volba plného okna
Wrapper claudex načte okno živě z proxy a nastaví ho přes CLAUDE_CODE_MAX_CONTEXT_TOKENS. Protože katalog Astry vracel přesně chybných 272 000 tokenů, wrapper obsahuje podmíněnou opravu:
CLAUDEX_WINDOW_FIXES="${CLAUDEX_WINDOW_FIXES-gpt-6-astra|272000|921000}"
Pravidlo znamená: pokud katalog pro gpt-6-astra hlásí právě 272 000, použij 921 000. Jakmile katalog začne vracet jinou hodnotu, podmínka přestane platit a wrapper znovu použije živý údaj z proxy. Korekci lze pro diagnostiku vypnout prázdnou proměnnou CLAUDEX_WINDOW_FIXES.
Běžný běh wrapperu je zastropovaný proměnnou CLAUDEX_CTX_ECO na 272 000 tokenů. Plné okno se vyžádá explicitně:
claudex --ctx-max
Ruční hodnota CLAUDEX_CTX má přednost před údajem z proxy i úsporným stropem. Kontextové okno Claude Code nelze změnit v již běžící session, protože se předává proměnnou prostředí při startu procesu. Pro navázání na poslední session s plným oknem slouží:
claudex --ctx-max --continue
Konfigurace stejného problému pro OpenCode je samostatně v článku Kontextová okna GPT v OpenCode. OpenCode v této instalaci používá přímé OpenAI OAuth, takže změna OAuth tokenu CLIProxyAPI jeho limity neovlivní.
Omezení
Překlad protokolu nemůže zaručit plnou shodu funkcí. Záleží na konkrétním modelu a upstreamu, zda správně fungují tool calls, streaming, reasoning bloky, prompt cache, dlouhé relace nebo poskytovatelem specifické funkce.
Použití OAuth předplatného přes jiný klient také automaticky neznamená oprávnění k API použití. Před nasazením je potřeba ověřit aktuální podmínky každého použitého poskytovatele; použití proxy s OAuth tokenem může nést riziko omezení nebo blokace účtu.
Pokud má Codex fungovat jako samostatný specialista vedle Claude Code, místo náhrady hlavního backendu, je vhodnější cc-codex-bridge.