안정적인 API key와 자동 계정 라우팅을 통해 Codex 호환 에이전트 및 도구를 관리하는 셀프 호스팅 게이트웨이입니다.
다른 이름 icoretech/codex-pooler
- 스타
- 242
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- —
Codex Pooler MCP란?
Codex Pooler은(는) MCP server입니다. 안정적인 API key와 자동 계정 라우팅을 통해 Codex 호환 에이전트 및 도구를 관리하는 셀프 호스팅 게이트웨이입니다.
프로젝트 README에서 생성된 요약
Codex Pooler MCP server 정보
codex-pooler는 개발자와 기술 팀이 단일 인터페이스를 통해 여러 AI 계정과 도구를 관리할 수 있게 해줍니다. 이 셀프 호스팅 게이트웨이는 Codex 호환 에이전트를 위한 중앙 허브 역할을 하며, 사용자가 개별 계정 자격 증명 대신 안정적인 Pool API key를 통해 요청을 라우팅할 수 있도록 합니다. Cursor, Aider, Cline 및 다양한 OpenAI 호환 SDK를 포함한 폭넓은 클라이언트를 지원하여 기존 코딩 워크플로우에 쉽게 통합할 수 있습니다.
운영자는 Docker Compose 또는 Kubernetes를 사용하여 서비스를 배포하고 자체 인프라에 대한 제어권을 유지할 수 있습니다. 시스템은 모델 지원 여부, 사용 가능한 할당량 및 계정 상태를 기반으로 최적의 업스트림 계정을 자동으로 선택합니다. 요청 제한, 일일 또는 주간 사용 허용량, 활동 및 예상 비용 추적을 위한 Observatory 대시보드와 같은 고급 관리 기능을 제공합니다. 메타데이터 중심의 작업에 집중하므로 프롬프트, 파일 또는 이미지와 같은 민감한 대화 내용을 저장하지 않고도 문제 해결 및 사용량 추적이 가능합니다.
활용 사례
- 1AI 계정 관리 중앙화원시 자격 증명을 공유하지 않고도 용량과 라우팅을 공유할 수 있도록 여러 Codex 계정을 단일 풀에 연결합니다.
- 2팀별 사용량 제한 적용각 API key에 대해 특정 요청 제한 및 시간 기반 AI 사용 허용량을 설정합니다.
- 3안정적인 API 연결 유지기본 Codex 계정을 추가하거나 교체하더라도 변경되지 않는 단일 Pool API key를 사용합니다.
- 4리소스 상태 및 비용 모니터링사용자에게 자신의 활동, 응답 시간 및 비용을 확인할 수 있는 개인용 대시보드를 제공합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
구성
CODEX_POOLER_API_KEYCODEX_POOLER_IMAGE_TAGOPENAI_API_KEYOPENAI_BASE_URLSTT_OPENAI_BASE_URL
| 이름 | 설명 | 유형 |
|---|---|---|
| CODEX_POOLER_API_KEY | — | |
| CODEX_POOLER_IMAGE_TAG | — | |
| OPENAI_API_KEY | — | |
| OPENAI_BASE_URL | — | |
| STT_OPENAI_BASE_URL | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능icoretech/codex-pooler is public and reachablegithub.com/icoretech/codex-pooler ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)No license결함 발견
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-14github.com/icoretech/codex-pooler ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Codex Pooler is a self-hosted gateway for running Codex-compatible agents, tools, and automation through stable Pool API keys. It works with one upstream Codex account for credential isolation, client normalization, metadata-only operations, and saved reset visibility; add more accounts when you want shared capacity and routing across eligible accounts.
Clients send familiar Codex backend or OpenAI-compatible requests; Codex Pooler selects an eligible account based on model support, quota evidence, limits, session continuity, routing policy, and health. The Pool key stays stable while upstream assignments, lifecycle state, reset policy, and capacity change behind it.
Operators get one place to manage Pools, accounts, API keys, saved resets, routing, request accounting, audit logs, and health without storing prompts, files, audio, images, bearer tokens, or raw Codex secrets. Instance owners keep the global administration surface, while instance admins work only with their assigned Pools.
Highlights
- 🧩 Use the tools you already know: connect Codex, OpenCode and other supported coding agents, plus apps built with OpenAI-compatible SDKs
- 🔑 One key for your apps: connect tools with a Pool API key that stays the same when you add or replace Codex accounts, without sharing account credentials
- ⚡ High cache reuse across protocols: over 95% cached input observed on HTTP/SSE and WebSockets, backed by cache-aware routing and connection reuse
- 🎯 Automatic account selection: send requests to accounts that can serve the chosen model, with available quota and account health taken into account
- 📏 Control how much each key can use: set request limits and daily or weekly AI usage allowances
- 🚀 Give agents more room to work: let them use several tools at once in Full mode, with Lite compatibility when needed
- 🖼️ Images and voice, too: generate and edit images or transcribe audio through supported apps, using the same Pool API key
- 🛡️ Keep conversation content private: track usage and troubleshoot requests without saving prompts, replies, uploaded files, images or audio
- 🔁 Keep conversations together: keep supported sessions linked to the right account when a client reconnects
- 🔭 Let users track their own usage: enable a personal Observatory dashboard for each key, showing activity, response times and estimated costs
- 🏦 Put saved resets to use: see available reset credits and use them to restore account quota, manually or automatically when enabled
- 🖥️ Manage everything in one place: add accounts, manage keys and invites, check usage and change settings from a browser
- 👥 Organize teams and projects: group accounts into Pools with their own access rules and model choices
- 🤝 Connect accounts by invitation: let account owners join a Pool through a guided browser flow, without sending you credential files
- 🚨 Know when attention is needed: receive alerts about low capacity, account problems and reset events in the dashboard, by email or through webhooks
- 🔎 Spot model downgrades: see when the provider reports a different model from the one sent, or changes the model name during a response
- 🧷 Fill in missing continuity: derive stable session identities from cache keys or conversation IDs when a harness does not send them directly
- 🧱 Choose who can connect: optionally allow requests only from approved networks
- 🐳 Run it on your own infrastructure: start with Docker Compose or deploy on Kubernetes as your needs grow
Harness Configuration
Start with a running Codex Pooler instance, a Pool API key, and an installed
client. The examples include gpt-6-luna, gpt-6.1-sol and gpt-6-astra, with
Sol selected by default. Keep the models available to your Pool.
Replace <pool-api-key> with your key and run the command for your terminal
before starting the client.
macOS / Linux / Windows WSL (bash or zsh)
export CODEX_POOLER_API_KEY="<pool-api-key>"
Windows PowerShell
$env:CODEX_POOLER_API_KEY = "<pool-api-key>"
These commands set the key for the current terminal. For desktop apps, follow the linked guide to save the key for the app.
The paths below are defaults. On macOS/Linux, ~ is your home folder.
On Windows, paste paths starting with %USERPROFILE%, %APPDATA% or
%LOCALAPPDATA% into File Explorer's address bar. If you installed a client
inside WSL, use its Linux paths and commands inside WSL. Custom configuration
folders or profiles take precedence over these defaults.
For a local instance:
| Client | Base URL |
|---|---|
| Codex CLI / Desktop | http://localhost:4000/backend-api/codex |
| Other harnesses and SDKs | http://localhost:4000/v1 |
For a deployed instance, replace http://localhost:4000 with your instance's
host, such as https://codex-pooler.example.com. Merge snippets into existing
configurations. The examples use the large 828,400-token context for GPT-6.
Codex CLI and Desktop read the available context size automatically from your Pool.
Each entry covers the basic connection. Its full setup & extras link covers installation, advanced options and troubleshooting. Operator MCP is optional and uses a separate token; see Operator MCP Service.

| System | Configuration file |
|---|---|
| macOS / Linux | ~/.codex/config.toml |
| Windows | %USERPROFILE%\.codex\config.toml |
Open config.toml at the path for your system and add the following. If you
set CODEX_HOME, use the file in that folder instead. Keep name = "OpenAI"
to preserve Codex's native features. Catalog discovery is enabled by default;
model_catalog_url points it at your Pool.
model = "gpt-6.1-sol"
model_provider = "codex-pooler-ws"
[model_providers.codex-pooler-ws]
name = "OpenAI"
base_url = "http://localhost:4000/backend-api/codex"
model_catalog_url = "http://localhost:4000/backend-api/codex/models"
env_key = "CODEX_POOLER_API_KEY"
wire_api = "responses"
supports_websockets = true
requires_openai_auth = true
Restart Codex and choose a model available to your Pool. If you use Codex Desktop, follow the full guide to make your API key available to the app.
Full setup & extras — desktop setup, account settings, existing conversations and the optional custom provider name with its limitations.

| System | Configuration file |
|---|---|
| macOS / Linux | ~/.config/opencode/opencode.jsonc |
| Windows | %USERPROFILE%\.config\opencode\opencode.jsonc |
Open opencode.jsonc at the path for your system and add the configuration
for your OpenCode version below.
OpenCode v2
{
"$schema": "https://opencode.ai/config.json",
"model": "codex-pooler/gpt-6.1-sol",
"agents": {
"title": {
"model": "codex-pooler/gpt-6-luna"
}
},
"providers": {
"codex-pooler": {
"package": "@opencode/ai/providers/openai/responses",
"settings": {
"baseURL": "http://localhost:4000/v1",
"apiKey": "{env:CODEX_POOLER_API_KEY}",
"transport": "http",
"compaction": {
"type": "summary"
}
},
"models": {
"gpt-6-luna": {
"modelID": "gpt-6-luna",
"capabilities": {
"tools": true,
"input": ["text", "image"],
"output": ["text"]
},
"limit": { "context": 828400, "input": 828400, "output": 32000 },
"settings": {
"reasoningEffort": "high",
"reasoningSummary": "auto"
}
},
"gpt-6.1-sol": {
"modelID": "gpt-6.1-sol",
"capabilities": {
"tools": true,
"input": ["text", "image"],
"output": ["text"]
},
"limit": { "context": 828400, "input": 828400, "output": 32000 },
"settings": {
"reasoningEffort": "high",
"reasoningSummary": "auto"
}
},
"gpt-6-astra": {
"modelID": "gpt-6-astra",
"capabilities": {
"tools": true,
"input": ["text", "image"],
"output": ["text"]
},
"limit": { "context": 828400, "input": 828400, "output": 32000 },
"settings": {
"reasoningEffort": "high",
"reasoningSummary": "auto"
}
}
}
}
}
}
OpenCode v2 full setup & extras — installation and advanced options.
OpenCode v1
{
"$schema": "https://opencode.ai/config.json",
"model": "openai/gpt-6.1-sol",
"small_model": "openai/gpt-6-luna",
"provider": {
"openai": {
"npm": "@ai-sdk/openai",
"name": "Codex Pooler",
"options": {
"baseURL": "http://localhost:4000/v1",
"apiKey": "{env:CODEX_POOLER_API_KEY}"
},
"models": {
"gpt-6-luna": {
"id": "gpt-6-luna",
"name": "GPT-6 Luna",
"family": "gpt",
"attachment": true,
"reasoning": true,
"tool_call": true,
"temperature": false,
"options": {
"reasoningEffort": "high",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"]
},
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"limit": { "context": 828400, "input": 828400, "output": 64000 }
},
"gpt-6.1-sol": {
"id": "gpt-6.1-sol",
"name": "GPT-6.1 Sol",
"family": "gpt",
"attachment": true,
"reasoning": true,
"tool_call": true,
"temperature": false,
"options": {
"reasoningEffort": "high",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"]
},
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"limit": { "context": 828400, "input": 828400, "output": 64000 }
},
"gpt-6-astra": {
"id": "gpt-6-astra",
"name": "GPT-6 Astra",
"family": "gpt",
"attachment": true,
"reasoning": true,
"tool_call": true,
"temperature": false,
"options": {
"reasoningEffort": "high",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"]
},
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"limit": { "context": 828400, "input": 828400, "output": 64000 }
}
}
}
}
}
OpenCode v1 full setup & extras — installation and OMO setup.

| System | Configuration file |
|---|---|
| macOS / Linux | ~/.openclaw/openclaw.json |
| Windows | %USERPROFILE%\.openclaw\openclaw.json |
Open openclaw.json at the path for your system and add this configuration:
{
agents: {
defaults: {
model: {
primary: "openai/gpt-6.1-sol",
list: [{ id: "background", model: "openai/gpt-6-luna" }],
},
compaction: { reserveTokens: 128000 },
},
},
models: {
mode: "merge",
providers: {
openai: {
baseUrl: "http://localhost:4000/v1",
apiKey: "${CODEX_POOLER_API_KEY}",
api: "openai-responses",
agentRuntime: { id: "openclaw" },
timeoutSeconds: 300,
models: [
{
id: "gpt-6-luna",
name: "GPT-6 Luna via Codex Pooler",
reasoning: true,
input: ["text", "image"],
contextWindow: 828400,
contextTokens: 828400,
maxTokens: 128000,
},
{
id: "gpt-6.1-sol",
name: "GPT-6.1 Sol via Codex Pooler",
reasoning: true,
input: ["text", "image"],
contextWindow: 828400,
contextTokens: 828400,
maxTokens: 128000,
},
{
id: "gpt-6-astra",
name: "GPT-6 Astra via Codex Pooler",
reasoning: true,
input: ["text", "image"],
contextWindow: 828400,
contextTokens: 828400,
maxTokens: 128000,
},
],
},
},
},
}
Restart OpenClaw and start a new conversation.
Full setup & extras — background tasks, more models and advanced options.

| System | Folder for .env and config.yaml |
|---|---|
| macOS / Linux | ~/.hermes/ |
| Windows | %LOCALAPPDATA%\hermes\ |
Open .env in the folder for your system and add your Pool API key and
Codex Pooler address. If you set HERMES_HOME, use that folder instead:
OPENAI_API_KEY=<pool-api-key>
OPENAI_BASE_URL=http://localhost:4000/v1
STT_OPENAI_BASE_URL=http://localhost:4000/v1
Add this to config.yaml in the same folder, then restart Hermes:
model:
default: gpt-6.1-sol
provider: openai-api
base_url: http://localhost:4000/v1
api_mode: codex_responses
context_length: 828400
supports_vision: true
agent:
image_input_mode: native
api_max_retries: 2
auto_recovery_cycles: 1
image_gen:
provider: openai
openai:
model: gpt-image-2.6-flare
stt:
enabled: true
provider: openai
openai:
model: gpt-4o-transcribe
compression:
threshold: 0.95
auxiliary:
compression:
timeout: 900
This setup includes image generation and voice-to-text. To switch the chat
model, set model.default to a model available to your Pool.
Keep all three addresses pointed at your Codex Pooler instance. Your Pool must
also offer the image and transcription models to use those features.
Full setup & extras — images, speech-to-text, priority processing and troubleshooting.

| System | Configuration file |
|---|---|
| macOS / Linux | ~/.pi/agent/models.json |
| Windows | %USERPROFILE%\.pi\agent\models.json |
Open models.json at the path for your system and add this configuration:
{
"providers": {
"codex-pooler": {
"name": "Codex Pooler",
"baseUrl": "http://localhost:4000/v1",
"api": "openai-responses",
"apiKey": "$CODEX_POOLER_API_KEY",
"authHeader": true,
"models": [
{
"id": "gpt-6-luna",
"name": "GPT-6 Luna via Codex Pooler",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 828400,
"maxTokens": 128000,
"thinkingLevelMap": { "xhigh": "xhigh" }
},
{
"id": "gpt-6.1-sol",
"name": "GPT-6.1 Sol via Codex Pooler",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 828400,
"maxTokens": 128000,
"thinkingLevelMap": { "xhigh": "xhigh" }
},
{
"id": "gpt-6-astra",
"name": "GPT-6 Astra via Codex Pooler",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 828400,
"maxTokens": 128000,
"thinkingLevelMap": { "xhigh": "xhigh" }
}
]
}
}
}
Add these defaults to settings.json in the same folder:
{
"defaultProvider": "codex-pooler",
"defaultModel": "gpt-6.1-sol",
"enabledModels": [
"codex-pooler/gpt-6-luna",
"codex-pooler/gpt-6.1-sol",
"codex-pooler/gpt-6-astra"
],
"compaction": { "reserveTokens": 128000 }
}
Then start Pi:
pi
Full setup & extras — installation, default models and extra options.

| System | Configuration file |
|---|---|
| macOS / Linux | ~/.omp/agent/models.yml |
| Windows | %USERPROFILE%\.omp\agent\models.yml |
Open models.yml at the path for your system and add this configuration:
providers:
codex-pooler:
baseUrl: http://localhost:4000/v1
api: openai-responses
apiKey: CODEX_POOLER_API_KEY
authHeader: true
remoteCompaction:
enabled: true
api: openai-codex-responses
endpoint: http://localhost:4000/backend-api/codex/responses/compact
v2StreamingEnabled: true
v2Endpoint: http://localhost:4000/backend-api/codex/responses
models:
- id: gpt-6-luna
name: GPT-6 Luna via Codex Pooler
reasoning: true
input: [text, image]
compat:
streamIdleTimeoutMs: 300000
contextWindow: 828400
maxTokens: 128000
- id: gpt-6.1-sol
name: GPT-6.1 Sol via Codex Pooler
reasoning: true
input: [text, image]
compat:
streamIdleTimeoutMs: 300000
contextWindow: 828400
maxTokens: 128000
- id: gpt-6-astra
name: GPT-6 Astra via Codex Pooler
reasoning: true
input: [text, image]
compat:
streamIdleTimeoutMs: 300000
contextWindow: 828400
maxTokens: 128000
Add these defaults to config.yml in the same folder:
startup:
setupWizard: fa
Codex Pooler MCP 질문
Codex Pooler란 무엇인가요?
안정적인 Pool API key를 통해 Codex 호환 에이전트, 도구 및 자동화를 실행할 수 있는 셀프 호스팅 게이트웨이입니다.
Codex Pooler가 대화 내용을 저장하나요?
아니요, 프롬프트, 답변, 파일, 이미지 또는 오디오를 저장하지 않고도 사용량을 추적하고 요청 문제를 해결할 수 있습니다.
Codex Pooler를 어떻게 배포하나요?
Docker Compose로 시작하거나 필요에 따라 Kubernetes에 배포할 수 있습니다.
기존에 사용하던 OpenAI 호환 SDK를 사용할 수 있나요?
네, OpenAI 호환 SDK로 구축된 앱과 함께 작동하며 해당 앱을 위한 base URL을 제공합니다.