# Codex External Provider : deepseek로 codex 돌리기

## 들어가며

- 저는 codex의 헤비 유저입니다. 오픈클로와 헤르메스도 깔아두었지만, 요즘은 코덱스를 제일 많이 사용하고 있습니다. 

- AI 기업들이 Subscription 비용의 수십배에 달하는(단순히 API로 구매했다고 가정한다면) 토큰을 구독제와 에이전트 서비스에 제공하고 있다는 이야기는 들어보셨을 겁니다.

- 저만 하더라도 Input : Output 을 7:3으로 가정 했을 때 (Cached Input 을 고려하더라도) 90만원짜리 요금제에 사용한 토큰량이 API로 구매했다고 한다면 수천만원에 달하더군요.

- 물론 똑똑한 토큰의 비용이 시간이 지남에 따라 저렴해질 것이라는 믿음은 있습니다.

    - 전력, 칩, 모델, 데이터, 하네스의 5계층이 모두 발전하고 있으니 이에 대한 비관론을 가지지는 않습니다.

    - 다만, 단기적으로 재정적으로 위험한 불가능할 정도로 퍼주는 이 출혈 경쟁이 오래 지속될 것 같지는 않습니다.

- Codex가 OpenAI의 GPT 모델 말고도 외부 Provider의 모델들도 지원한다는 사실을 얼마 전 처음 알았습니다.

## 코덱스가 좋은 이유

굳이 설정까지 해가면서 codex를 쓰는 이유가 무엇인지, 내가 왜 요새 codex를 가장 많이 사용하는지 고민해보았습니다. 사실 다른 provider 자체에서 제공하는 cli 들이나, opencode 같은 제품들도 있을텐데요. 

![https://i.imgur.com/Fabfdt2.png](https://i.imgur.com/Fabfdt2.png)

- 플러그인 설치가 매우 쉽습니다. 

- 플러그인이 마켓플레이스에 추가되는 추세가 매우 가파릅니다. (올해 초만 하더라도 10개 내외였던 거 같은데, 지금은 2일에 한번씩은 추가가 되는 것 같습니다.)
- 

![Record & Replay in Codex](https://www.youtube.com/watch?v=ZK3JhU73W18&t=1s)

- computer use 와 browse use, 그리고 이번에 나온 Record & Replay 까지. 내가 정교하게 스킬을 만들지 않더라도 얘가 다 해줍니다. (다만, 지금은 브라우저를 다루는 방법이 너무 다분화되어있어 헷갈리긴 합니다.)

![https://i.imgur.com/jMq7sww.png](https://i.imgur.com/jMq7sww.png)

- 사이드채팅이 가능합니다. 
- (25년 초 쯤 아이패드로 끄적였던 아이디어중에 '횡으로만 진행되는 컨텍스트 채팅을 벗어난 새로운 LLM 소통 UX' 로 그리드 기반의 2차원 채팅이 있었는데요. 이걸 codex에서 더 멋진 해결책으로 만들어주니 행복하게 쓰고 있습니다.)
- - 큰 분기가 생겨서 다른 버전을 만들고 싶거나, 작업이 나뉘었다면 (그리고 위 쪽에 있던 컨텍스트를 사용해야한다면) local 에 fork 하여 작업 이어나가기. 
- - 이 큰 스레드에서 작은 질문사항이나, 사소한 요구사항들(잔가지)은 사이드채팅에서 처리.
- 

![https://i.imgur.com/bhMxPze.png](https://i.imgur.com/bhMxPze.png)

- 별도의 IDE를 사용하지 않아도 됩니다. 클로드코드 쓰던 시절에는 IDE 터미널이나 플러그인으로 에이전트를 띄워서 쓰거나, 클로드 앱을 키더라도 서버 실행, 코드베이스 확인, 터미널 명령들을 타이핑하기위해  IDE 도 같이 켜놨어야했는데요. 
- 코덱스는 파일탐색기, 파일 미리보기, 워크스페이스에 대한 터미널, 브라우저까지 모두 있습니다. 그것도 굉장히 간결하고 컴팩트하게.
- 

![https://i.imgur.com/1CHlfTz.png](https://i.imgur.com/1CHlfTz.png)

- 디자인이 깔끔하고, 인지적 부담이 적습니다.

- 어플리케이션으로서의 완성도가 그 어느 경쟁자보다 뛰어납니다. 그래서 꼭 개발 작업이 아닌 일상작업에서도 거리낌 없이 손이갑니다.

- 오픈소스와 다른 에이전트들에서 바이럴이 된 좋은 기능이 있다면, 2주일이면 긴빠이(?)를 해옵니다. 

    - Goal(OmO), btw(클로드코드), 인앱브라우저(커서)

- 사실 오픈클로 개발자 영입한 것 부터, 개인용 에이전트 만들겠다는 강력한 의지표명이고, 이런 기능들이 점점 많이 생기고 있습니다.
- 

![https://i.imgur.com/TFZx5x6.png](https://i.imgur.com/TFZx5x6.png)

- 모바일 기능(ChatGPT ios app에서 내 로컬에 있는 codex로 명령을 실행할 수 있습니다. )이 너무너무 편합니다. 이 기능을 출시하면서 caffeinate 기능도 코덱스 설정에 포함을 시켜서 맥북 닫아놓고 폰으로 이것저것 시킬 수 있습니다. 한번은 센터에 노트북을 두고왔는데 필요한 파일이 있어서 모바일로 이거 파일 가져와줘로 모바일로 받아본 경험도 있습니다.

- OpenAI의 GPT 모델은 멀티모달이 됩니다. 따로 API를 연결하지 않아도 Transcription 이 가능하고 (물론 앱에서만) 개발이나 작업중 필요한 에셋이나 이미지가 있다면 이미지 모델로 스스로 만들어 냅니다.

- 토큰 제한이 매우 넉넉합니다. 그리고 이 넉넉한 토큰 제한으로 OAuth로 이것저것 할 수 있는 것도 너무 좋습니다.(Openclaw, Hermes, Aside...)

## 외부 제공자로 Codex 돌리기

![https://i.imgur.com/qlcVQQb.png](https://i.imgur.com/qlcVQQb.png)

[https://developers.openai.com/codex/config-advanced#custom-model-providers](https://developers.openai.com/codex/config-advanced#custom-model-providers)

이걸 보고 따라해봤습니다. 마침 Deepseek API 에 충전된 크레딧이 남는게 있어서 이걸 사용해보고자 했다.

```toml
model = "deepseek-v4-flash"
model_provider = "deepseek"
[model_providers.deepseek]
name = "DeepSeek"
base_url = "https://api.deepseek.com"
env_key = "DEEPSEEK_API_KEY"
wire_api = "chat"
```

### chat api 지원 종료

이렇게 했더니 오류가 나고, codex 앱을 키더라도 원래대로 OpenAI 플랜의 gpt 모델이 fallback으로 선택되었다.

알고보니 OpenAI Codex 공식 GitHub discussion #7782는 Codex가 기존 `chat/completions` wire API 지원을 단계적으로 종료하고 `responses`wire API로 통일한다는 내용을 담고 있다. 

해당 공지에 따르면 Codex CLI는

`chat/completions`로 설정된 경우 먼저 deprecation warning을 띄우고, 2026년 2월부터는 이를 hard error로 전환해 지원을 완전히 제거할 예정이라고 설명한다. 특히 custom model provider를 쓰는 사용자는 기존에 `wire_api = "chat"`을 사용했거나 `wire_api`를 생략했다면 provider 설정을 명시적으로 `wire_api = "responses"`로 바꿔야 한다고 안내한다. 

이는 Codex가 단순 채팅 클라이언트가 아니라 코드 수정, 도구 호출, 에이전트 루프를 다루는 개발 도구이기 때문에, OpenAI가 새 표준으로 밀고 있는 Responses API에 맞추려는 변화로 볼 수 있다. 

### response api를 아직 지원하지 않습니다.

그래서 `wire_api`를 response로 수정했는데, 이젠 인증 실패 오류들이 떴다.

```
- Reconnecting... 5/5 (16s • esc to interrupt) └ Unexpected status 401 Unauthorized: Authentication Fails (governor), url: https://api.deepseek.com/v1/responses
```

따라서 DeepSeek나 Mistral처럼 `/v1/chat/completions` 호환만 제공하는 API는 최신 Codex에 직접 붙이기 어렵고, `/v1/responses`를 지원하는 provider나 변환 proxy가 필요했다.

## 오픈라우터

생각보다 Response API를 지원하는 모델들이 그래서 대안을 찾던 중에, OpenRouter를 발견했다. 여기는 모델들을 여러 Provider 들에서 서빙을 하고, 키 하나로 라우팅해가면서 쓸수 있는 게이트웨이 서비스이다.

거기다가 BYOK 방식으로 내가 가진 키를 등록하면, 인당 월 100M 요청까지는 수수료 안받고 라우팅을 해준다고한다.

먼저 Workspace > BYOK 에서 가지고 있는 프로바이더의 API 키를 등록한다.

![https://i.imgur.com/UEUpcus.png](https://i.imgur.com/UEUpcus.png)

그리고 오픈라우터 API Key를 생성한다. 

![https://i.imgur.com/TGAb8fa.png](https://i.imgur.com/TGAb8fa.png)

여기서 가드레일을 설정해주어야합니다. (우측 하단 Actions에 configure 버튼... )

워크스페이스나 계정 전체에 전역으로 걸어도 되고, 이 API Key에 대해서만 걸어줘도 됩니다.

사용하고자 하는 모델이 있는 Provider를 Allowed List에 넣어줍니다. 이때 하나의 모델에 대해서도 여러 공급자들이 있는데, 각 공급자별로 데이터 활용정책과 비용이 조금 다를 수 있습니다.

![https://i.imgur.com/E7DK5Tn.png](https://i.imgur.com/E7DK5Tn.png)

내가 입력과 컨텍스트로 입력할 데이터가 모델의 학습으로 사용되어도 괜찮으시다면 아래에서 Paid endpoints that may train on request data 를 허용해주면 됩니다.

![https://i.imgur.com/4v8z0cb.png](https://i.imgur.com/4v8z0cb.png)

그렇지 않으면 여러 Provider 들 중에 Data Policy 에 의해 딥시크 본사에서 직접 제공하는 서빙 환경(내가 직접 등록한 BYOK API key)은 막힙니다. 

초반에 왜 BYOK가 안되고 크레딧을 사용하여 StreamLake에서 서빙하는 딥시크가 돌아갔을까 고민했는데, 데이터 제공 정책(딥시크가 당신 데이터 쓸 수 있어요)에 동의를 안해줘서였다. 

보안과 데이터가 중요한 사용자의 경우 굳이 복잡하게 이렇게 하지 않고, 5%수수료 내더라도 데이터도 지키고, 크레딧도 일원화되서 관리하면 더 좋을 수 있다.

![https://i.imgur.com/gg1ileE.png](https://i.imgur.com/gg1ileE.png)

```toml
model = "deepseek/deepseek-v4-pro"
model_provider = "openrouter"
model_reasoning_effort = "minimal"

[model_providers.openrouter]
name = "OpenRouter"
base_url = "https://openrouter.ai/api/v1"
env_key = "OPENROUTER_API_KEY"
wire_api = "responses"
```

그리고 `.codex/config.toml` 에 값을 이렇게 설정하면 codex 는 이제 짭덱스가 된다. 

## 짭덱스 리뷰

gpt5.5가 아니라 맞춤형으로 뜬다...!

![https://i.imgur.com/xDoFtKn.png](https://i.imgur.com/xDoFtKn.png)

프로필을 바꾸니, 옛날 채팅내역은 보이지 않는다. 물론 프로필을 다시 기본으로 돌리면 복원되긴한다.

![https://i.imgur.com/5d9SdKI.png](https://i.imgur.com/5d9SdKI.png)

사용가능한 플러그인의 종류도 현저히 적어진다. 이게 모델 종류에 따라서 달라지는건 아닌 것 같고, 기준이 뭔지는 모르겠다.

![https://i.imgur.com/LKA5nqB.png](https://i.imgur.com/LKA5nqB.png)

deepseek 는 놀랍게도 멀티모달 입력을 지원하지 않는다. 그래서 스크린샷을 처리하려하면 바로 오류가 뜬다.

![https://i.imgur.com/YEHy870.png](https://i.imgur.com/YEHy870.png)

![https://i.imgur.com/3DpxNFy.png](https://i.imgur.com/3DpxNFy.png)

더 심각한건 한번 컨텍스트에 이미지가 들어간 순간 그 채팅은 컨텍스트에 그 이미지를 가지고 있어서 계속 오류가 뜬다는거다. 

그래서 그냥 쾌적하게 카카오톡이 선물해준 90% 할인된 ChatGPT Pro Plan 이나 쓰기로 했다

![https://i.imgur.com/iQuZUS8.png](https://i.imgur.com/iQuZUS8.png)

![https://i.imgur.com/4zWVAlb.png](https://i.imgur.com/4zWVAlb.png)

For the site tree, see the [root Markdown](https://slashpage.com/yejun-cheon.md).
