튜토리얼

Token Station을 통해 Codex에서 어떤 모델이든 실행하기

OpenAI가 Codex에 대해 조용하지만 유용한 점을 짚었다. Codex의 app, CLI, SDK는 OpenAI 모델뿐 아니라 어떤 모델이든 실행할 수 있다. 제품은 이 하네스이고, 그 뒤의 모델은 선택의 문제다. 그러니 Codex는 그대로 두고 GPT-5.5, Claude, 또는 GLM-5.2나 Kimi K2.7 같은 오픈웨이트 모델 등 작업에 맞는 쪽으로 향하게 하면 된다.

다만 많은 사람이 걸려 넘어지는 함정이 하나 있다. 2026년 2월부터 Codex는 OpenAI의 Responses API로 통일되었다. 프로바이더 연동은 wire_api = "responses"를 전제로 하며, 기존 Chat Completions 경로는 더 이상 입구가 아니다. 즉, Codex를 향하게 하는 모델 플랫폼은 Chat Completions뿐 아니라 Responses API를 네이티브로 구사해야 한다. 대부분의 게이트웨이는 후자만 구현해 두어, 여기서 막힌다.

Token Station은 호스팅하는 모든 모델을 OpenAI Responses API(/v1/responses)로 노출하므로, Codex가 심(shim) 없이 바로 연결된다. 이 글은 그대로 쓸 수 있는 설정, 검증 명령, 한 줄로 모델 바꾸기, 그리고 smart routing이 어디에 들어맞는지를 다룬다.

왜 커스텀 프로바이더가 필요한가 (환경 변수만으로는 안 된다)

Claude Code라면 환경 변수만으로 다른 엔드포인트로 리디렉션할 수 있다. Codex는 다르다. 내장 OpenAI 프로바이더는 OPENAI_BASE_URL을 무시하고 항상 api.openai.com으로 연결한다. 그 변수를 설정해도 기본 프로바이더에는 아무 효과가 없다.

OpenAI의 고급 설정 문서에 따른 지원 경로는, ~/.codex/config.toml[model_providers.<id>] 아래에 직접 항목을 정의하고 model_provider로 선택하는 것이다. (내장 프로바이더를 옮기려면 openai_base_url을 쓰며, 예약된 openai id는 재사용할 수 없으므로, 이름 있는 커스텀 프로바이더가 깔끔한 길이다.) API 키는 환경 변수에 남겨 두고 설정에서는 env_key로 참조하므로, 비밀 값이 파일에 남지 않는다.

한 번만 하는 설정

설정 파일을 만든다. 이는 Responses API를 쓰는 token_station 프로바이더를 정의하고 기본값으로 삼는다:

mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
model = "openai/gpt-5.5"
model_provider = "token_station"

[model_providers.token_station]
name = "Token Station"
base_url = "https://models.bytefuture.ai/v1"
env_key = "TOKEN_STATION_API_KEY"
wire_api = "responses"
EOF

그런 다음 Token Station 키를 export하고(변수 이름은 위의 env_key와 일치해야 한다), 한 줄로 확인한다:

export TOKEN_STATION_API_KEY="YOUR_TOKEN_STATION_KEY"

codex exec "Respond with exactly the word: pong"

pong이 출력되면 Codex가 Responses API로 Token Station과 통신하고 있는 것이다. 여기서부터 codex를 실행하면 같은 프로바이더로 대화형 세션이 열린다.

각 필드의 의미

의미
modelCodex가 기본으로 요청하는 모델 ID. provider/model 형식(여기서는 openai/gpt-5.5).
model_provider어느 프로바이더 블록을 쓸지. [model_providers.<id>]의 id와 일치해야 한다.
name사람이 읽는 라벨. 자유 텍스트이며 id가 아니다.
base_urlToken Station의 OpenAI 호환 베이스 https://models.bytefuture.ai/v1. Codex가 /responses를 덧붙인다.
env_keyCodex가 키를 읽는 환경 변수. 비밀 값은 파일 밖에 둔다.
wire_api"responses". 바로 이 부분이 핵심이다. Responses API를 선택하며, Codex가 요구하고 Token Station이 네이티브로 지원한다.

OpenAI 공식 문서와 일치한다

위의 모든 키는 OpenAI가 문서화한 커스텀 프로바이더 schema 그대로다. 최상위의 modelmodel_provider, 그다음 name, base_url, env_key, wire_api를 가진 [model_providers.<id>] 테이블. token_station이라는 id가 허용되는 것은 예약 id(openai, ollama, lmstudio)가 아니기 때문이다. 오늘의 Codex에서 정확히 맞춰야 하는 유일한 값은 wire_api = "responses"다. 이 블록에 Token Station 고유 문법은 전혀 없으며, 어떤 프로바이더에든 쓰는 형태와 동일하다.

한 줄로 모델 바꾸기

Token Station의 모든 모델이 같은 키, 같은 Responses 엔드포인트 뒤에 있으므로, 모델 전환은 설정의 model 한 곳을 고치거나 실행 시 플래그 하나면 된다:

codex --model anthropic/claude-opus-4-8 exec "Summarize git diff and suggest a commit message"

같은 설정 그대로 지금 바로 model에 넣을 수 있는 모델 ID 몇 가지:

모델 ID적합한 용도
openai/gpt-5.5OpenAI의 플래그십. Codex의 네이티브 기본값.
anthropic/claude-opus-4-8장기 호흡의 에이전트 코딩과 리팩터링.
glm/glm-5.2오픈웨이트, 100만 토큰 컨텍스트, 낮은 가격에 코드에 강함.
kimi/kimi-k2.7-code일상 작업용 저렴한 오픈웨이트 코딩 모델.
xai/grok-build-0.1빠르고 저렴하며, 출력 비용은 플래그십의 일부 수준.

OpenAI가 말하려던 점이 여기서 분명해진다. Codex는 모델에 구애받지 않는다. 어려운 작업에는 비싼 모델을, 보일러플레이트에는 저렴한 오픈웨이트 모델을. 하네스를 떠나지 않고, 바꾸는 것도 한 줄뿐이다.

Smart routing: ID 하나에 모델 선택을 맡기기

작업마다 모델을 고정하는 것도 괜찮지만, Token Station에서는 이름이 아니라 규칙으로 라우팅할 수도 있다. 워크로드에 정책을 정의하면(품질 하한을 통과하는 가장 저렴한 모델, 임계값 이하의 지연에 프로바이더 허용 목록을 둔 경우, 또는 기본 모델 뒤에 예비를 두는 엄격한 폴백 체인 등), Token Station이 요청마다 모델을 고른다.

Codex에는 이게 편리하다. Codex 자체는 모델 ID를 하나만 보내기 때문이다. model을 라우팅된 워크로드로 향하게 하면 결정이 서버 쪽으로 옮겨 간다. 기본 모델이 느리거나 쓸 수 없으면 예비가 응답하고, Codex 세션은 그 사실을 알 필요조차 없다. 라우팅은 config.toml이 아니라 Token Station에서 바꾸므로, 같은 Codex 설정이 정책의 변화에 자동으로 따라간다.

Codex는 모델 ID 하나를 보낸다. 실제로 누가 응답할지는 smart routing이 결정하므로, 비용과 폴백 로직은 설정에 고정되지 않고 Token Station에 자리한다.

연결이 안 될 때

  • 여전히 api.openai.com으로 간다. OPENAI_BASE_URL을 설정하고 내장 프로바이더가 따라오리라 기대했는가. 그러지 않는다. 위의 커스텀 프로바이더를 쓰고 model_provider = "token_station"을 설정하라.
  • 401 / 인증 오류. export한 변수 이름이 env_key(TOKEN_STATION_API_KEY)와 정확히 일치해야 하며, 키는 codex를 실행하는 같은 셸에서 export해야 한다.
  • 모델에서 프로토콜 오류 또는 404. wire_api = "responses"를 확인하라. Codex는 Responses API를 요구하며, Chat Completions만 지원하는 게이트웨이로는 충족할 수 없다.
  • 모델 id가 틀렸다. provider/model 형식(예: anthropic/claude-opus-4-8)을 쓰고, 모델 이름만 단독으로 쓰지 마라.

시작하기

Codex로 어떤 모델이든 실행하는 일은 결국 TOML 네 줄과 환경 변수 하나로 귀결되며, 발목을 잡는 유일한 요건은 Responses API다. Token Station은 호스팅하는 모든 모델을 이 API로 제공하므로, 위 설정은 GPT-5.5, Claude, GLM-5.2, 또는 라우팅된 워크로드 어느 쪽을 돌리든 그대로 작동한다.

models.bytefuture.ai에서 가입하고($10 무료 크레딧, 카드 불필요), 키를 TOKEN_STATION_API_KEY에 넣은 뒤 pong 체크를 실행하라. 키 하나, 엔드포인트 하나로 Codex 세션에 필요한 모든 모델이 갖춰진다.


이 글 공유하기 Post LinkedIn Facebook Hacker News Reddit