Preskoči na sadržaj

Codex preko LiteLLM

Codex CLI je OpenAI-jev terminalski coding agent. Po defaultu se veže direktno na OpenAI (ChatGPT login ili OpenAI API ključ). Kod nas ga umjesto toga vežemo na InfoPuls LiteLLM gateway (gateway.infopuls.app) — isti gateway koji koriste hub MCP, stop hookovi i ostali alati. Tako Codex koristi naše modele i jedan zajednički ključ, a sve troškove vidimo centralno.

Šta dobijaš

  • Jedan ključ za sveLITELLM_API_KEY umjesto zasebnog OpenAI logina
  • Centralni usage/trošak — svi pozivi prolaze kroz gateway i mjere se
  • Bez ChatGPT loginacodex login status smije pisati Not logged in
  • Isti modeli kao ostatak timachatgpt/gpt-5.5, chatgpt/gpt-5.4

Kako to izgleda

flowchart LR
    A[codex CLI] -->|wire_api: responses<br/>Bearer LITELLM_API_KEY| B[LiteLLM gateway<br/>gateway.infopuls.app/v1]
    B --> C[chatgpt/gpt-5.5]
    B --> D[chatgpt/gpt-5.4]
    B --> E[chatgpt/gpt-5.3-codex]

Codex ne zna da je iza gatewaya LiteLLM — za njega je to običan OpenAI-kompatibilan provider. Gateway radi auth, routing i mjerenje.


Preduvjeti

  • codex CLI instaliran (testirano na codex-cli 0.135.0; treba 0.133+)
  • LITELLM_API_KEY — tvoj lični LiteLLM ključ (sk-…). Ako ga nemaš, uzmi ga iz Infisical-a ili traži od admina. Ne dijeli ga i ne commituj.

Radi na sva tri OS-a

Codex CLI radi nativno na macOS, Linux i Windows (PowerShell, sa Windows sandboxom). Na Windowsu možeš i kroz WSL2 — ali tada WSL koristi svoj ~/.codex, odvojen od native Windows configa (osim ako ne postaviš CODEX_HOME na Windows putanju). Setup je isti; razlikuju se samo putanje i kako se postavlja env varijabla — birај svoj OS u tabovima ispod.


Korak 1 — Ključ u okruženje

Codex čita ključ iz environment varijable (ne iz config fajla). Postavi LITELLM_API_KEY trajno — odaberi svoj OS:

Dodaj u ~/.zshrc:

export LITELLM_API_KEY="sk-tvoj-licni-kljuc"

Pa reload i provjera:

source ~/.zshrc
echo "${LITELLM_API_KEY:+kljuc je postavljen}"

Dodaj u ~/.bashrc (bash) ili ~/.zshrc (zsh):

export LITELLM_API_KEY="sk-tvoj-licni-kljuc"

Pa reload i provjera:

source ~/.bashrc       # ili: source ~/.zshrc
echo "${LITELLM_API_KEY:+kljuc je postavljen}"

Postavi trajno (vrijedi za nove prozore):

setx LITELLM_API_KEY "sk-tvoj-licni-kljuc"

Zatvori i otvori novi PowerShell, pa provjera:

if ($env:LITELLM_API_KEY) { "kljuc je postavljen" }

setx vs $env: (i CMD)

setx upisuje trajno, ali tek za buduće prozore. $env:LITELLM_API_KEY = "…" vrijedi samo za trenutnu sesiju. U CMD-u je isto: setx LITELLM_API_KEY "…". Alternativno: System Properties → Environment Variables → New (User variable).

Ključ ide u env, ne u config.toml

Nikad ne hardkoduj sk-… u config.toml. Config se može lako podijeliti ili commitovati; ključ ostaje samo u tvom ~/.zshrc (ili Infisical/secret manageru). U configu se referencira imenom varijable (env_key).


Korak 2 — Provider i model

🎯 Ovo je srž cijelog setupa

Sve se svodi na jedno: reći Codexu „ne idi na OpenAI, idi na naš LiteLLM gateway“. To radi blok [model_providers.litellm] ispod. Profili, veliki context, troubleshooting — sve ostalo na ovoj stranici je nadogradnja. Bez ovih nekoliko linija Codex ne zna za naš gateway i ništa ne radi.

Codex config živi na različitim putanjama po OS-u:

OS Putanja do config.toml
macOS ~/.codex/config.toml
Linux ~/.codex/config.toml
Windows %USERPROFILE%\.codex\config.tomlC:\Users\<ime>\.codex\config.toml

Folder .codex možda ne postoji

Ako ga nema, kreiraj ga: mkdir ~/.codex (macOS/Linux) ili mkdir $env:USERPROFILE\.codex (Windows PowerShell). Lokaciju možeš promijeniti CODEX_HOME varijablom.

Otvori (ili kreiraj) taj config.toml i zalijepi ovo — identično na sve tri platforme. Označene linije su ono što veže Codex na naš gateway:

# Default model i provider
model = "chatgpt/gpt-5.5"
model_provider = "litellm"

# ⬇ NAJBITNIJE: veže Codex na InfoPuls LiteLLM gateway (bez ovoga ide na OpenAI)
[model_providers.litellm]
name = "LiteLLM"
base_url = "https://gateway.infopuls.app/v1"
env_key = "LITELLM_API_KEY"
wire_api = "responses"

Šta koja linija radi:

Polje Vrijednost Značenje
model chatgpt/gpt-5.5 Default model (prefiks chatgpt/ je naziv na gatewayu)
model_provider litellm Koji provider blok koristiti
base_url …/v1 OpenAI-kompatibilan endpoint gatewaya — /v1 je obavezan
env_key LITELLM_API_KEY Ime env varijable iz koje Codex čita ključ
wire_api responses Wire format — gateway radi preko OpenAI Responses API-ja

wire_api mora biti responses

Gateway servira chatgpt/* modele kroz Responses API. Ako izostaviš wire_api ili staviš "chat", dobićeš greške pri pozivu. Drži "responses".


Korak 3 — Provjera

codex "Reci 'radi' ako me čuješ."

ili neinteraktivno:

codex exec "Ispiši samo riječ: radi"

Not logged in je očekivano

codex login status će vjerovatno pisati Not logged in — i to je u redu. Mi ne koristimo OpenAI/ChatGPT login; autentikacija ide isključivo preko LITELLM_API_KEY na gatewayu.


Dostupni modeli

Aktuelni chatgpt/* modeli na gatewayu. Listu uvijek možeš provjeriti uživo:

curl -s https://gateway.infopuls.app/v1/models \
  -H "Authorization: Bearer $LITELLM_API_KEY"
curl.exe -s https://gateway.infopuls.app/v1/models `
  -H "Authorization: Bearer $env:LITELLM_API_KEY"

curl.exe, ne curl

U PowerShell-u je curl alias za Invoke-WebRequest. Koristi curl.exe za pravi curl, ili Invoke-RestMethod sa -Headers @{ Authorization = "Bearer $env:LITELLM_API_KEY" }.

Model (na gatewayu) Context window Namjena
chatgpt/gpt-5.5 400k Najjači agentic coding model — default
chatgpt/gpt-5.4 1M Veliki context (cijeli codebase, dugi taskovi)
chatgpt/gpt-5.4-mini 272k Jeftiniji/brži za lakše taskove
chatgpt/gpt-5.3-codex 400k Codex-specijalizovan
chatgpt/gpt-5.3-codex-spark 128k Najlakši/najbrži (npr. za stop hook gate)

Profili — brza promjena modela

Umjesto da mijenjaš model u configu svaki put, definiši profile pa biraj preko --profile:

[profiles."gpt-5.4"]
model_provider = "litellm"
model = "chatgpt/gpt-5.4"
model_reasoning_effort = "xhigh"

[profiles."gpt-5.5"]
model_provider = "litellm"
model = "chatgpt/gpt-5.5"
model_reasoning_effort = "xhigh"

Korištenje:

codex --profile gpt-5.4 "Refaktoriši ovaj modul"   # 1M context
codex --profile gpt-5.5 "Brzi fix"                 # default jačina
Opcija Vrijednost Efekat
model_reasoning_effort lowxhigh Dubina razmišljanja (više = sporije/skuplje, ali pametnije)
service_tier fast Brži tier kad je dostupan
personality pragmatic Stil odgovora agenta

Napredno — veliki context window (models.json)

Codex po defaultu klampuje context window na vrijednost iz svog ugrađenog kataloga, pa čak i ako model na gatewayu podržava 1M tokena, Codex ga može ograničiti. Profile-scoped i top-level override ne rade pouzdano u trenutnim verzijama (codex-cli issues #14456, #19185, #16068).

Pouzdano rješenje je custom katalog koji podiže max_context_window. Putanja je opet OS-specifična:

model_catalog_json = "/Users/<ti>/.codex/models.json"
model_catalog_json = "/home/<ti>/.codex/models.json"

TOML tretira \ kao escape u običnim stringovima — koristi forward slash (radi i na Windowsu) ili single-quote literal string:

# preporučeno:
model_catalog_json = "C:/Users/<ime>/.codex/models.json"

# ili literal string (bez escape-ovanja):
# model_catalog_json = 'C:\Users\<ime>\.codex\models.json'

U models.json se za chatgpt/gpt-5.4 (i ostale aliase) postavi željeni max_context_window (npr. 1000000). Tada nije potreban nikakav dodatni override u config.toml — Codex preuzme context iz kataloga.

Treba ti ovo samo ako gađaš puni context

Za svakodnevni rad default je sasvim dovoljan. Catalog override radi tek kad namjerno hoćeš puni 1M context na gpt-5.4 za velike codebase taskove.


Veza s ostalim alatima

Isti LITELLM_API_KEY i isti gateway koriste i drugi dijelovi setupa:

  • Stop Hooks — oba gate-a pozivaju codex CLI preko ovog gatewaya. Kad ovo proradi, prorade i oni.
  • hub MCP — u config.toml se MCP server hub autenticira istim ključem (x-litellm-api-key: Bearer sk-…).
  • Modeli — širi pregled modela i kad koji koristiti.

Troubleshooting

401 Unauthorized / invalid api key

LITELLM_API_KEY nije u okruženju tog shella, istekao je, ili je pogrešan. Provjeri da je vidljiv u istom terminalu iz kojeg pokrećeš codex (macOS/Linux: echo ${LITELLM_API_KEY:+ok}, Windows PowerShell: $env:LITELLM_API_KEY). Ako si ga tek dodao: na macOS/Linux uradi source ~/.zshrc (ili ~/.bashrc), a na Windowsu otvori novi PowerShell (setx vrijedi tek za nove prozore).

model not found / nepoznat model

Naziv mora uključivati prefiks chatgpt/ (npr. chatgpt/gpt-5.5, ne samo gpt-5.5). Listu provjeri sa curl …/v1/models.

Greške pri pozivu iako ključ radi

Skoro uvijek wire_api. Mora biti "responses" u [model_providers.litellm].

Context se i dalje siječe na manje od očekivanog

Codex klampuje na ugrađeni katalog. Postavi model_catalog_json i podigni max_context_window u models.json (vidi sekciju iznad).

codex login status kaže Not logged in

To je očekivano i nije problem — ne koristimo OpenAI login, nego LITELLM_API_KEY. Ignoriši poruku.