OpenAI API互換サーバー - Codex CLI と Claude Code をラップしたデスクトップアプリケーション
Codex ClaudeCode API Server は、OpenAI の Codex CLI および Anthropic の Claude Code CLI をラップし、OpenAI API 互換のエンドポイントとして提供するデスクトップアプリケーションです。
既存の OpenAI API クライアントやツールをそのまま使用して、Codex や Claude を利用できます。
- OpenAI API 互換:
/v1/responses,/v1/chat/completionsエンドポイントを提供 - マルチプロバイダー: OpenAI Codex と Anthropic Claude の両方をサポート
- 自動モデルルーティング: モデル名に基づいて適切な CLI に自動ルーティング
- Cloudflare Tunnel: ワンクリックで安全な外部公開
- 認証システム: APIキー管理と外部アクセス認証
- 管理コンソール: Web UI で設定、ログ、API テストを管理
- クロスプラットフォーム: Windows, macOS, Linux 対応
| OS | バージョン |
|---|---|
| Windows | 10/11 (64-bit) |
| macOS | 10.15 (Catalina) 以上 |
| Linux | Ubuntu 20.04+ / Debian 11+ |
以下の CLI ツールを事前にインストールしてください:
npm install -g @openai/codex
codex auth # ChatGPT アカウントで認証npm install -g @anthropic-ai/claude-code
claude # 初回起動で認証インストーラー版
- Releases から
CodexAPIServer-Setup.exeをダウンロード - インストーラーを実行
- デスクトップショートカットから起動
ポータブル版
CodexAPIServer-Portable.exeをダウンロード- 任意の場所に配置して実行(インストール不要)
CodexAPIServer.dmgをダウンロード- アプリケーションフォルダにドラッグ
- 初回起動前にターミナルで権限付与:
xattr -cr "/Applications/Codex ClaudeCode API Server.app" - Launchpad から起動
# AppImage をダウンロード後
chmod +x CodexAPIServer.AppImage
./CodexAPIServer.AppImageまたは .deb パッケージを使用:
sudo dpkg -i codex-api-server_*.debアプリ起動時にセットアップウィザードが表示されます:
- Welcome: 概要説明
- CLI 確認: Codex CLI / Claude Code のインストール状況確認
- 認証確認: 各 CLI の認証状態確認
- マスターキー設定: 外部アクセス用のマスターキーを設定
- ポート設定: API サーバーのポート番号を指定(デフォルト: 8080)
- 完了: サーバー起動
| 操作 | 方法 |
|---|---|
| 起動 | アプリアイコンをダブルクリック |
| 管理画面 | 自動表示、またはトレイアイコンから |
| 最小化 | ウィンドウを閉じるとトレイに格納 |
| 終了 | トレイアイコン右クリック → 終了 |
ブラウザで http://localhost:8080/admin にアクセス、または管理画面から:
- ダッシュボード: サーバー状態、統計情報
- Playground: API テスト用インターフェース
- API Keys: APIキーの作成・管理
- 履歴: リクエスト履歴の確認
- ログ: リアルタイムログ表示
- 設定: サーバー設定、トンネル設定
http://localhost:8080
Cloudflare Tunnel 使用時は発行された URL を使用。
| メソッド | パス | 説明 | 認証 |
|---|---|---|---|
| GET | /health |
ヘルスチェック | 不要 |
| GET | /v1/models |
モデル一覧取得 | 不要 |
| POST | /v1/responses |
レスポンス生成 | 外部アクセス時必須 |
| GET | /v1/responses |
レスポンス履歴取得 | 外部アクセス時必須 |
| GET | /v1/responses/:id |
レスポンス詳細取得 | 外部アクセス時必須 |
| POST | /v1/chat/completions |
チャット補完 | 外部アクセス時必須 |
| POST | /v1/api-keys |
APIキー作成 | 外部アクセス時必須 |
| GET | /v1/api-keys |
APIキー一覧 | 外部アクセス時必須 |
| GET | /docs |
Swagger UI | 不要 |
| GET | /openapi.json |
OpenAPI 仕様 | 不要 |
OpenAI の Responses API 互換エンドポイント。
リクエスト
curl -X POST http://localhost:8080/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-5.2-codex",
"input": "Hello, how are you?",
"stream": false
}'レスポンス
{
"id": "resp_abc123...",
"object": "response",
"created_at": 1704067200,
"model": "gpt-5.2-codex",
"provider": "codex",
"status": "completed",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "I'm doing well, thank you for asking!"
}
]
}
],
"output_text": "I'm doing well, thank you for asking!",
"usage": {
"input_tokens": 10,
"output_tokens": 15,
"total_tokens": 25
}
}パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | No | 使用するモデル(デフォルト: 設定のデフォルトモデル) |
| input | string/array | Yes | 入力テキストまたはメッセージ配列 |
| instructions | string | No | システムインストラクション |
| previous_response_id | string | No | 会話継続用の前回レスポンスID |
| stream | boolean | No | ストリーミングモード |
OpenAI の Chat Completions API 互換エンドポイント。
リクエスト
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "claude-sonnet-4",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is 2+2?"}
]
}'レスポンス
{
"id": "chatcmpl-abc123...",
"object": "chat.completion",
"created": 1704067200,
"model": "claude-sonnet-4",
"provider": "claude",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "2 + 2 = 4"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 10,
"total_tokens": 35
}
}stream: true を指定すると Server-Sent Events 形式でレスポンスを受信できます。
curl -X POST http://localhost:8080/v1/responses \
-H "Content-Type: application/json" \
-d '{"input": "Tell me a story", "stream": true}'イベント形式
data: {"id":"resp_xxx","object":"response.output_text.delta","delta":"Once upon a time"}
data: {"id":"resp_xxx","object":"response.output_text.delta","delta":" there was"}
data: {"id":"resp_xxx","object":"response.completed","output_text":"Once upon a time..."}
data: [DONE]
| モデルID | 説明 |
|---|---|
gpt-5.2-codex |
GPT-5.2 Codex(推奨) |
gpt-5.1-codex |
GPT-5.1 Codex |
gpt-5.2 |
GPT-5.2 |
gpt-5.1 |
GPT-5.1 |
gpt-5 |
GPT-5 |
gpt-4.1 |
GPT-4.1 |
gpt-4.1-mini |
GPT-4.1 Mini |
gpt-4o |
GPT-4o |
gpt-4o-mini |
GPT-4o Mini |
o3 |
O3 |
o3-mini |
O3 Mini |
o4-mini |
O4 Mini |
o1 |
O1 |
o1-mini |
O1 Mini |
| モデルID | エイリアス | 説明 |
|---|---|---|
claude-opus-4 |
opus |
Claude Opus 4 |
claude-opus-4-5 |
- | Claude Opus 4.5 |
claude-sonnet-4 |
sonnet |
Claude Sonnet 4 |
claude-sonnet-4-5 |
- | Claude Sonnet 4.5 |
claude-3-5-sonnet |
- | Claude 3.5 Sonnet |
claude-haiku |
haiku |
Claude Haiku |
claude-3-5-haiku |
- | Claude 3.5 Haiku |
自動ルーティング: claude- で始まるモデル名は Claude Code へ、それ以外は Codex CLI へルーティングされます。
| アクセス元 | 認証 |
|---|---|
| localhost | 不要(設定で変更可能) |
| 外部(Tunnel経由等) | 必須 |
外部アクセスは x-forwarded-for ヘッダーで判定されます。
管理コンソールから
- 「API Keys」タブを開く
- 「新規作成」ボタンをクリック
- キー名を入力して作成
- 表示されたキーを安全に保存(再表示不可)
API経由
curl -X POST http://localhost:8080/v1/api-keys \
-H "Content-Type: application/json" \
-d '{"name": "My App Key"}'curl -X POST https://your-tunnel-url.trycloudflare.com/v1/responses \
-H "Authorization: Bearer cdx_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"input": "Hello"}'マスターキーは全権限を持つ特別なキーです。設定画面で確認・再生成できます。
Authorization: Bearer msk_your_master_key_here設定不要で即座に外部公開できます。
- 管理コンソール → 設定
- 「トンネル開始」をクリック
- 発行された URL(
*.trycloudflare.com)を使用
注意: URL は起動ごとに変わります。
固定の URL やカスタムドメインを使用する場合:
- Cloudflare Zero Trust でトンネルを作成
- トンネルトークンをコピー
- 管理コンソール → 設定 → 「Tunnel Token」に貼り付け
- 「Custom URL」にドメインを入力(例:
https://api.example.com) - トンネル開始
| 項目 | 説明 | デフォルト |
|---|---|---|
port |
APIサーバーのポート | 8080 |
defaultModel |
デフォルトモデル | gpt-5.2-codex |
allowLocalWithoutAuth |
localhost認証スキップ | true |
masterKey |
マスターキー | 自動生成 |
autoStart |
サーバー自動起動 | true |
minimizeToTray |
トレイに最小化 | true |
tunnelAutoStart |
トンネル自動開始 | false |
tunnelToken |
Named Tunnel トークン | - |
tunnelCustomUrl |
カスタムドメインURL | - |
CLI が自動検出されない場合、設定画面で手動指定できます:
- Codex Path: Codex CLI の絶対パス
- Claude Path: Claude Code CLI の絶対パス
codex_cc_openai_server/
├── src/
│ ├── main/ # Electron メインプロセス
│ │ ├── index.ts # エントリーポイント
│ │ ├── config.ts # 設定管理
│ │ ├── server.ts # Express API サーバー
│ │ ├── codex.ts # Codex CLI マネージャー
│ │ ├── claude.ts # Claude Code マネージャー
│ │ ├── model-router.ts # モデルルーティング
│ │ ├── tunnel.ts # Cloudflare Tunnel
│ │ ├── tray.ts # システムトレイ
│ │ ├── logger.ts # ロギング
│ │ └── updater.ts # 自動アップデート
│ ├── preload/ # Preload スクリプト
│ │ └── index.ts
│ └── renderer/ # UI (HTML/CSS/JS)
│ ├── admin.html # 管理コンソール
│ └── onboarding.html # セットアップウィザード
├── assets/ # アイコン等
├── package.json
└── tsconfig.json
# 依存関係インストール
npm install
# 開発モード
npm run dev
# TypeScript コンパイル
npm run build
# パッケージング(現在のプラットフォーム)
npm run dist
# プラットフォーム別ビルド
npm run dist:win # Windows
npm run dist:mac # macOS
npm run dist:linux # Linux┌─────────────────────────────────────────────────────────────┐
│ Electron Application │
├─────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Admin UI │ │ Onboarding │ │ System Tray │ │
│ │ (React) │ │ Wizard │ │ │ │
│ └──────┬───────┘ └──────────────┘ └──────────────────┘ │
│ │ │
├─────────┼────────────────────────────────────────────────────┤
│ ▼ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Express API Server │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │ │
│ │ │ /v1/ │ │ /admin/ │ │ Auth Middleware │ │ │
│ │ │responses │ │ logs │ │ (Bearer Token Auth) │ │ │
│ │ │chat/comp │ │ tunnel │ └──────────────────────┘ │ │
│ │ │models │ │ config │ │ │
│ │ └────┬─────┘ └──────────┘ │ │
│ └───────┼────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Model Router │ │
│ │ ┌─────────────────┐ ┌─────────────────────────┐ │ │
│ │ │ claude-* models │ ───▶ │ Claude Manager │ │ │
│ │ └─────────────────┘ │ (claude -p ... --print)│ │ │
│ │ └─────────────────────────┘ │ │
│ │ ┌─────────────────┐ ┌─────────────────────────┐ │ │
│ │ │ Other models │ ───▶ │ Codex Manager │ │ │
│ │ └─────────────────┘ │ (codex -m ... -p ...) │ │ │
│ │ └─────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Cloudflare Tunnel Manager │ │
│ │ Quick Tunnel (trycloudflare.com) │ │
│ │ Named Tunnel (Custom Domain with Token) │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ SQLite Database (better-sqlite3) │ │
│ │ - responses: レスポンス履歴 │ │
│ │ - api_keys: APIキー管理 │ │
│ │ - usage_logs: 使用量ログ │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Codex CLI
# インストール確認
which codex
# 再インストール
npm install -g @openai/codex
# 認証
codex authClaude Code
# インストール確認
which claude
# 再インストール
npm install -g @anthropic-ai/claude-code
# 認証(初回起動時)
claudeNVM 環境の場合
設定画面で CLI の絶対パスを手動指定してください:
/Users/username/.nvm/versions/node/v22.0.0/bin/codex
別のアプリケーションがポートを使用している場合:
- 設定 → ポート番号を変更(例: 8081)
- サーバー再起動
DNS エラーの場合
DNS 設定を変更してみてください:
- Cloudflare DNS:
1.1.1.1 - Google DNS:
8.8.8.8
Cloudflared が見つからない場合
cloudflared は自動ダウンロードされますが、手動インストールも可能:
# macOS
brew install cloudflared
# Windows
winget install Cloudflare.cloudflared外部からのアクセスには認証が必要です:
# APIキーを使用
curl -H "Authorization: Bearer cdx_your_key" ...
# またはマスターキーを使用
curl -H "Authorization: Bearer msk_your_master_key" ...# Gatekeeper を解除
xattr -cr "/Applications/Codex ClaudeCode API Server.app"
# または右クリック → 開くMIT License
Copyright (c) 2024 DaisukeHori