Codexbox について
CodexboxはDockerコンテナ内でOpenAI Codex CLIを実行し、ラッパーでワークスペースとCodexの状態を保持します。対話利用と自動実行に対応し、MCPサーバーモードも備えています。
主な機能
- 01Docker内でCodex CLIを実行
- 02ワークスペースごとのコンテナとCodex状態の永続化
- 03対話実行と単発実行
- 04API、Telegram、cronモード
- 05minimalまたはfullイメージを選択
活用シーン
- 01ローカルのワークスペースでCodexを実行
- 02cronモードでCodexのジョブをスケジュール
- 03MCPまたはAPI経由でCodexを提供
MCP 対応
MCPモードは他のフォアグラウンドモードと並行して動作します。APIモードでは`/mcp/`にマウントされ、それ以外では専用ポートのサイドカーとして実行されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
docker-codexbox
aicodebox コンテナー内で動作する OpenAI Codex CLI です。最小構成とツールチェーンを搭載したイメージを用意し、対話型シェル、単発実行、OpenAI 互換エンドポイント、MCP サーバー、Telegram ボット、任意のスケジュールで codex を実行する cron スケジューラーの 5 つの方法で利用できます。
codexbox に話しかけると、codexbox が codex に話しかけます。codex は OpenAI、または ChatGPT サブスクリプションに話しかけます。間に何があるかは誰も気にしません。
目次
クイックスタート
必要なのは、Docker がインストールされ、実行されていることだけです。
ワンライナーでインストール
インストーラーは選択したイメージを取得し、Codex と SSH 用の永続ディレクトリを作成して、ラッパーをダウンロードし、codexbox を PATH にインストールします。
# minimal image — default
curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-codexbox/master/install.sh | bash
# full image — every development tool pre-installed
export CODEXBOX_FULL=1 && curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-codexbox/master/install.sh | bash
# custom command name
curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-codexbox/master/install.sh | bash -s -- codex
CODEXBOX_FULL=1 を指定してインストールすると、ラッパーに latest-full が設定され、その選択が保持されます。そのため、再度エクスポートする必要はありません。CODEXBOX_FULL は curl だけでなく bash に設定する必要があるため、上記のように export … && の形式を使います。
ローカルチェックアウト
このリポジトリをチェックアウトした状態から、対応するイメージをビルドし、公開済みの codexbox イメージを取得せずにローカルのラッパーをインストールします。
make install # minimal image
make install-full # full image
# install only the local wrapper; do not build or pull
make install-wrapper
CODEXBOX_FULL=1 make install-wrapper # full image
これらのターゲットは CODEXBOX_SRC_LOCAL=true を設定します。make install と make install-full は先にイメージをビルドします。make install-wrapper は、選択した既存のイメージを使ってローカルの wrapper.sh をインストールするだけです。対象のイメージがない場合、docker pull に切り替えるのではなく失敗します。
リモートインストーラーは、対応するリリースタグから wrapper.sh をダウンロードします。自動化で別のコマンドディレクトリにインストールする場合は、既存の SSH キーを置き換えるかどうかを尋ねないように、CODEXBOX_INSTALL_DIR、CODEXBOX_BIN_NAME、AICODEBOX_MANAGED_INSTALL=1 を設定できます。
codexbox ラッパーの使用
ラッパーは現在のディレクトリをワークスペースとしてマウントし、~/.codex を永続化してログイン状態がコンテナーの再作成後も維持されるようにします。また、認証情報と設定済みの環境変数を引き継ぎ、ディレクトリごとのコンテナーを管理します。
export OPENAI_API_KEY=sk-... # or use a subscription: `codexbox login --device-auth`
codexbox # interactive TUI — continues the last session for THIS dir
codexbox --no-continue # same, but starts a brand-new session instead
codexbox exec "fix the failing test in ./app" # one-shot codex exec, output to your terminal
echo "summarize README.md" | codexbox exec - # prompt via stdin
codexbox login --device-auth # ChatGPT-subscription OAuth login (persists in ~/.codex)
codexbox login status # which auth mode is active
codexbox --version # passthrough to `codex --version`
codexbox stop # stop this dir's running container(s)
codexbox clear-session # drop codex's saved sessions (keeps auth + config)
ラッパーは "$@" をイメージにそのまま渡すため、任意の codex サブコマンドを使用できます(codexbox mcp ...、codexbox doctor など)。サンドボックスを無効にするフラグはコンテナー内で挿入されるため、自分で渡す必要はありません。
対話型 TUI を引数なしで起動すると、現在のディレクトリで直近に使用したセッションを継続する設定がデフォルトです(claudebox のデフォルトと同じ考え方です)。codex 独自の resume --last は、現在の作業ディレクトリに対象を限定して検索し、再開できるセッションがなければ自動的に新しいセッションを開始するため、新しいワークスペースでも安全に使えます。新しいセッションを強制するには --no-continue を渡します。
別のボックスから起動する必要がある場合は、codexbox、claudebox、pibox を同じコマンドディレクトリ(通常は /usr/local/bin)にインストールしてください。ラッパーはそこにある兄弟ラッパーファイルを見つけ、コンテナー内に読み取り専用でマウントします。兄弟ラッパーはホストの Docker デーモン経由で実行され、それぞれのホストデータディレクトリをマウントします。Codexbox が他のエージェントのホームディレクトリを直接マウントすることはありません。
エージェントの使用とネストした起動
インストールされたラッパーは、ユーザーやエージェントが通常使用するインターフェースです。エージェントは新しい docker run コマンドを組み立てるのではなく、指定されたワークスペースから codexbox を実行してください。ラッパーは、ワークスペースのパス、Codex の状態、SSH の状態、イメージの選択、ワークスペースごとのコンテナーのライフサイクルを維持します。
codexbox exec "inspect this workspace and report the failing tests"
CODEXBOX_FULL=1 codexbox exec "run the full test suite"
printf '%s\n' "summarize README.md" | codexbox exec -
あるボックスから別のボックスを起動する場合は、codexbox、claudebox、pibox を同じコマンドディレクトリにインストールしてください。実行中のボックスから、兄弟のコマンドを直接呼び出せます。親ラッパーはホストの起動コンテキストを渡し、兄弟ラッパーのファイルのみをマウントします。AICODEBOX_HOST_* を設定したり、ラッパーをコピーしたり、別のボックスの状態ディレクトリを手動でマウントしたりしないでください。
ラッパーは SSH エージェントを自動では転送しません。エージェントをボックスで使用するには、そのソケットをマウントし、SSH_AUTH_SOCK をそのソケットに設定します。
CODEXBOX_MOUNT_SSH="$SSH_AUTH_SOCK:/ssh-agent:ro" CODEXBOX_ENV_SSH_AUTH_SOCK=/ssh-agent codexbox
そのエージェントに読み込まれているすべての鍵を、ボックス内で使用できるようになります。
Docker の手動使用
明示的にコンテナーのデプロイを求められた場合に限り、Docker を直接使用してください。対話型、一回限り、ローカルサービスでの使用には、通常ラッパーを使います。デプロイに関するコマンドと設定については、モードセクションを参照してください。
イメージのバリエーション
psyb0t/codexbox:latestはデフォルトの最小イメージです。Codex、Node.js、Python、uv、Docker、Git、jq、curlが含まれます。psyb0t/codexbox:latest-fullは共有のaicodebox:latest-fullベースから始まり、Codexbox のアダプター、エントリーポイント、認証、設定を追加します。
CODEXBOX_FULL は二択です。インストーラーのデフォルトは最小イメージで、0 は最小イメージ、1 はフルイメージを選択します。実行時に値が未設定の場合は、インストール済みのイメージ選択が維持されます。それ以外の値ではエラーになります。インストーラーは解決済みのイメージをインストール済みのラッパーに書き込むため、実行のたびに変数をエクスポートしなくても選択が維持されます。実行時に CODEXBOX_FULL=0 または CODEXBOX_FULL=1 を指定すると、一時的にバリエーションを強制できます。明示的な指定では CODEXBOX_IMAGE が常に最優先されます。
フルイメージには、次のものが追加されます。
- gopls、Delve、golangci-lint、staticcheck、gofumpt、テスト/コード生成用ヘルパーを含む Go 1.27.2
- pytest、Black、Flake8、mypy、Pyright、Poetry、Pipenv、一般的な HTTP/解析ライブラリを含む Python 3.14.8
- JavaScript と TypeScript の lint、フォーマット、プロセス、フレームワーク、API テスト、静的サーバー、Lighthouse、Storybook 用 CLI
- GitHub CLI、Terraform、kubectl、Helm
- ビルドツール、CMake、ClangFormat、Valgrind、GDB、strace、ltrace
- PostgreSQL、MySQL、SQLite、Redis のクライアント
- Vim、Nano、tmux、htop、アーカイブツール、ネットワーク診断ツール、ripgrep、fd、bat、eza、shellcheck、shfmt
フルバリエーションは、共有の Aicodebox フルイメージを継承します。共有ツールチェーンのバージョン固定、ロック、サプライチェーンのチェックは Aicodebox が管理します。Codexbox が追加するのは、エージェントパッケージと起動レイヤーのみです。
ライセンスに関する注意: 最小イメージは Apache-2.0 の Codex のみを aicodebox ベースに追加したもので、ライセンス上の懸念はありません。フルイメージにはさらに HashiCorp Terraform が含まれます。Terraform は BUSL-1.1(ソース公開、競合利用不可)であり、OSI 承認のオープンソースではありません。これが用途に影響する場合は、最小イメージを使用するか、latest-full を使用する前にBUSL-1.1 の条件を確認してください。詳細は THIRD_PARTY.md を参照してください。
ラッパー環境変数
ホスト上で CODEXBOX_GIT_NAME と CODEXBOX_GIT_EMAIL を設定すると、起動フックの実行前にランタイムユーザーのグローバル Git ID を設定できます。コンテナーを直接デプロイする場合も同じ名前の変数を使用できます。コンテナー内で空ではない AICODEBOX_GIT_NAME と AICODEBOX_GIT_EMAIL が設定されている場合は、そちらが優先されます。ラッパー経由では、これらの共通の値を AICODEBOX_ENV_AICODEBOX_GIT_NAME と AICODEBOX_ENV_AICODEBOX_GIT_EMAIL として指定します。値が空の場合、既存の Git 設定が維持されます。複数行の値は指定できません。
make version V=X.Y.Z を実行すると、コミットやタグ付けを行わずに、パッケージのメタデータ、ロックファイル、Codex プラグインマニフェスト、インストーラーのラッパーリリース参照が同期されます。リモートからインストールする場合、CODEXBOX_INSTALL_REF で上書きしない限り、対応するリリースのラッパーがダウンロードされます。イメージを更新しても、インストール済みのラッパーは更新されません。
codexbox を実行する前に、ホスト上で以下を設定します。
| 変数 | デフォルト | 内容 |
|---|---|---|
OPENAI_API_KEY | — | API キー認証(起動時に ~/.codex/auth.json に設定されます)。サブスクリプションでログインする場合は不要です。 |
OPENAI_BASE_URL | — | codex の接続先を OpenAI 互換エンドポイントに指定します |
CODEXBOX_IMAGE | インストール済みのイメージ | ラッパーが実行するイメージを上書きします |
CODEXBOX_FULL | インストール時の選択(初期値は 0) | 0 はミニマル構成を強制し、1 はフル構成を強制します |
CODEXBOX_DATA_DIR | ~/.codex | CODEX_HOME としてマウントされるホストディレクトリ(認証情報、設定、セッション) |
CODEXBOX_SSH_DIR | ~/.ssh/codexbox | コンテナーにマウントされる SSH 鍵ディレクトリ(SSH 経由の Git 用) |
CODEXBOX_MAX_MEM | 10g | コンテナーごとのメモリ上限 |
CODEXBOX_CONTAINER_NAME | $PWD から生成 | ワークスペースごとのコンテナー名を上書きします |
CODEXBOX_ENV_* | — | 任意の環境変数をコンテナーに渡します(プレフィックスを削除:CODEXBOX_ENV_FOO=bar → FOO=bar) |
CODEXBOX_MOUNT_* | — | 追加のホストディレクトリをマウントします(/host:/container 形式、または両側で同じパスを使う場合はパスのみ) |
AICODEBOX_ENV_* | — | プレフィックスを削除して、共通の環境変数を起動するコンテナーに渡します |
AICODEBOX_MOUNT_* | — | 共通のホストディレクトリを起動するコンテナーにマウントします |
AICODEBOX_HOST_* は、関連するラッパー間で使用される、バージョン管理された入れ子起動コンテキストです。ホストのバインド元パスを記録し、ラッパーによって自動的に設定されます。通常のホスト起動では設定しないでください。
CODEXBOX_MODE_CRON=1 + CODEXBOX_MODE_CRON_FILE=/path/cron.yaml codexbox を実行すると、代わりに cron スケジューラーが長時間実行されるバックグラウンドコンテナーとして起動します。
ホストにインストールせずに使いたい場合 ラッパーが行う処理はすべて通常の docker run です。Docker の手動使用 とモードを参照してください。
モード
フォアグラウンドモード(API/Telegram/Cron)は相互排他的です。ただし、CODEXBOX_TELEGRAM_MODE=1 + CODEXBOX_CRON_MODE=1 の場合は併用され、Telegram 内のスレッドで cron が実行されます。他のモードと併せて設定されている場合は、API が優先されます。
MCP モード(CODEXBOX_MCP_MODE=1)は独立しており、実行中のフォアグラウンドモードと併用できます。API モードでは API ポートの /mcp/ にマウントされ、それ以外のモードでは専用ポートでサイドカーの uvicorn として実行されます。
各モードのページに、詳しいセットアップ手順、環境変数、例が記載されています。
API モード →
:8080 で長時間実行される FastAPI サーバーです。エージェントの実行(同期、実行 ID ポーリングによる非同期、キャンセル可能)、ワークスペースのファイルのアップロード/ダウンロード/一覧表示/削除(パストラバーサル検査付き)、ストリーミングとクライアント実行型のツール呼び出しに対応した OpenAI 互換の chat/completions エンドポイントを提供します。Codex のネイティブな --output-schema が jsonSchema を支えるため、スキーマに準拠した出力の生成に再試行は不要です。
environment:
- CODEXBOX_API_MODE=1
- CODEXBOX_API_MODE_TOKEN=your-secret
- CODEXBOX_AVAILABLE_MODELS=gpt-5.1-codex,gpt-5.1-codex-mini
Telegram モード →
Telegram から codex と会話できます。チャットごとに分離されたワークスペース、チャット許可リストとチャットごとのユーザー許可制御、ファイルの取り込み、ファイルを受け取るための [SEND_FILE: path]、再起動後も保持されるチャットごとの /model、/effort、/system_prompt、/append_system_prompt の上書きを利用できます。
environment:
- CODEXBOX_TELEGRAM_MODE=1
- CODEXBOX_TELEGRAM_MODE_TOKEN=123456:ABC
Cron モード →
6 フィールドの croniter スケジュールで YAML 定義の定期実行ジョブを実行します。実行ごとの履歴ディレクトリに meta.json、stdout.log、stderr.log、result.txt が保存され、「前回の実行」のヒントが提供されるため、ジョブは自身の履歴を参照できます。
environment:
- CODEXBOX_CRON_MODE=1
- CODEXBOX_CRON_MODE_FILE=/home/aicode/.aicodebox/cron.yaml
MCP モード →
ストリーミング可能な HTTP 経由で run_prompt とワークスペース内に制限されたファイルツールを公開し、他のエージェントが codex をツールとして操作できるようにします。フォアグラウンドモードと共存し、API モードでは API ポートの /mcp/ にマウントされ、それ以外のモードでは専用ポートのルートで提供されます。codex 自体の MCP クライアント/サーバー機能とは別のもので、codexbox では接続されていません。
environment:
- CODEXBOX_MCP_MODE=1
- CODEXBOX_MCP_MODE_TOKEN=your-secret
設定
命名規則:CODEXBOX_<MODE>_MODE=1 はオン/オフのフラグ、CODEXBOX_<MODE>_MODE_<KNOB>=... はその設定値です。モードに固有でない変数(ワークスペース、コンテナ名、利用可能なモデル)は接頭辞のない名前です。
このイメージは aicodebox をベースに構築されているため、同等の AICODEBOX_* 名も使用できます。codexbox の接頭辞付き変数だけが設定されている場合、エントリーポイントが CODEXBOX_X を AICODEBOX_X に変換します。両方を設定した場合は、AICODEBOX_* が優先されます。
モードフラグ
| 変数 | デフォルト | 機能 |
|---|---|---|
CODEXBOX_API_MODE | 0 | HTTP API サーバーを起動します(フォアグラウンド) |
CODEXBOX_TELEGRAM_MODE | 0 | Telegram ボットを起動します(フォアグラウンド) |
CODEXBOX_CRON_MODE | 0 | cron スケジューラーを起動します(フォアグラウンド。telegram も有効な場合は同じスレッド内で実行) |
CODEXBOX_MCP_MODE | 0 | MCP を公開します。API モードでは /mcp/ にマウントされ、それ以外ではサイドカーとして動作します |
各モード固有の設定(ポート、トークン、設定ファイルのパス、履歴ディレクトリ)は、それぞれのページに記載されています:api.md、telegram.md、cron.md、mcp.md。
ワークスペースとランタイム
| 変数 | デフォルト | 機能 |
|---|---|---|
CODEXBOX_WORKSPACE | /workspace | コンテナ内のルートワークスペースディレクトリ |
CODEXBOX_CONTAINER_NAME | aicodebox | コンテナごとの状態ファイル(認証など)の範囲指定に使用します |
CODEXBOX_AVAILABLE_MODELS | — | API モードでは必須です。 /openai/v1/models が返すモデルと、telegram の /model 選択メニューに表示するモデルの CSV リストです。これがないと API モードは起動せず、telegram の /model 選択メニューは「この環境変数を設定してください」という応答に切り替わります。 |
CODEXBOX_AVAILABLE_EFFORTS | none,minimal,low,medium,high,xhigh,max | telegram の /effort 選択メニューに表示する effort/reasoning リストを上書きします(カンマ区切り) |
CODEXBOX_MODEL | — | 呼び出し元がモデルを指定しない場合に codex に渡すデフォルトモデル(-m/--model) |
初期化スクリプトとユーザー用 bin
$HOME/.aicodebox/bin は、codex 自体、初期化スクリプト、および docker exec シェルで、ほかのすべてのパスより優先される PATH に含まれています。独自のスクリプトをここに配置してください。
$HOME/.aicodebox/init.d/*.sh は、イメージ独自の /aicodebox-init.d/*.sh の後に、パスワードなしの sudo を使える aicode としてコンテナごとに 1 回実行されます。スクリプトが失敗しても、その旨がログに記録され、残りのスクリプトは引き続き実行されます。いずれかのディレクトリを提供するには、$HOME/.aicodebox をバインドマウントしてください。以前に使用した $HOME/.aicodebox を使う場合でも、新しいコンテナでは初期化が再実行されるため、スクリプトは繰り返し実行しても安全なものにしてください。
認証
codex は、互いに異なる 2 つ の認証モードに対応しています。どちらか一方を選択してください。
1. API キー(従量課金)
OPENAI_API_KEY を設定します。任意で OPENAI_BASE_URL を設定すると、デフォルトの OpenAI API の代わりに OpenAI 互換エンドポイントを指定できます。
docker run --rm \
-e OPENAI_API_KEY=sk-... \
-v "$PWD/.codex:/home/aicode/.codex" \
psyb0t/codexbox:latest \
exec "say HELLO"
コンテナは起動時に、OPENAI_API_KEY を使って codex の $CODEX_HOME/auth.json を初期化します(内部では codex login --with-api-key を実行し、標準入力からキーを読み込みます。codex の codex exec は OPENAI_API_KEY 単独の環境変数を受け付けないため、実際に auth.json を書き込むにはログイン手順が必要です)。この初期化は毎回の起動時に安全に実行できます。書き込むのは apikey モードの認証情報だけであり、既存の ChatGPT サブスクリプションのログイン情報には触れません(後述)。
2. ChatGPT サブスクリプション(Plus / Pro / Team)
API キーは一切不要です。codex は代わりに ChatGPT サブスクリプションに課金します。初回にインタラクティブな OAuth ログインを行う必要があります。また、ログイン状態をコンテナの再作成後も保持するため、~/.codex をバインドマウントする必要があります(コンテナ内では /home/aicode/.codex に対応します)。
docker run -it \
-v "$HOME/.codex:/home/aicode/.codex" \
psyb0t/codexbox:latest \
login --device-auth
URL と短いコードが表示されます。任意のブラウザーで URL を開き、コードを入力して承認すると、codex は OAuth トークンを $CODEX_HOME/auth.json に書き込みます(auth_mode は apikey ではなく、OAuth/chatgpt 形式です)。同じ ~/.codex をバインドマウントした状態で以降の docker run を実行すれば、ログイン状態が再利用され、OPENAI_API_KEY なしでサブスクリプションに課金されます。
docker run --rm \
-v "$HOME/.codex:/home/aicode/.codex" \
psyb0t/codexbox:latest \
exec "say HELLO"
これは ~/.codex がバインドマウントされている場合にのみ機能します。 バインドマウントしない場合、ログイン状態は破棄されるコンテナのファイルシステム内に保存されるため、コンテナを削除すると失われます。毎回 OAuth フローをやり直す必要があります。サブスクリプションでログインした後に環境変数へ OPENAI_API_KEY も設定しても、既存のログイン情報が上書きされることはありません。既存の OAuth ログインは、API キーの設定処理より常に優先されます。codex login status(そのまま実行されます)で現在有効なモードを確認でき、codex logout でログイン状態を消去できます。
モデルと推論の強度
Codex に固定のデフォルトモデルスラッグはありません。利用可能なモデルはサーバーによって決まり、認証方法にも依存します。
- ChatGPT サブスクリプション — GPT-5.6 ファミリー:
gpt-5.6-luna(最速かつ最安。テストに適しています)、gpt-5.6-terra(バランス型)、gpt-5.6-sol(フラッグシップ。アカウントのデフォルト)。*-codex/*-codex-miniスラッグは ChatGPT アカウントでは拒否されます(400「未サポート」)。 - API キー — API カタログ:
gpt-5.1-codex、gpt-5-codex、gpt-5.1-codex-mini(小型)など。
-m / --model(そのまま引き渡されます)でモデルを指定するか、CODEXBOX_MODEL を設定するか、/run および /openai/v1/chat/completions の model フィールドに設定します。
推論の強度は、codex の model_reasoning_effort 設定キー(-c model_reasoning_effort=<level>)に対応します。レベルは none、minimal、low、medium、high、xhigh、max(デフォルトは medium)です。API では thinking フィールドとして、Telegram では /effort コマンドとして公開されており、ほかの aicodebox 子ツールと同じ形式です。
システムプロンプトとツールの制御
標準の /run 設定が適用されます。codex では pi/claude とは異なる方法で公開されています。
systemPrompt→ 組み込みのシステムプロンプトを置き換えます(-c instructions=…)。appendSystemPrompt→ 開発者ロールのメッセージを追加します(-c developer_instructions=…)。noTools→ シェル/exec とウェブ検索のツールを無効化し、サンドボックスを読み取り専用で実行することで、エージェントが操作を行わずに回答するようにします。(codex には設定で削除できないapply_patch/update_planツールの定義が残りますが、読み取り専用にすることで機能しなくなります。これは codex で pi/claude の--no-toolsに最も近い機能です。)toolsAllowlist→ サポートされていません。codex には名前ベースの組み込みツール許可リストがなく、MCP サーバーごとのenabled_toolsのみがあります。警告を表示して無視されます。- セッション:
resumeもnoContinueも指定せずに呼び出すと、標準のワークスペースに固定されたトップレベルの Codexexecセッションが継続されます。最初の呼び出しで永続的なルートセッションが開始され、以降の呼び出しでは正確な ID を使って再開するため、新しいサブエージェントのロールアウトによって継続先が切り替わることはありません。既存のワークスペースでは、最新のトップレベルexecロールアウトへ自動的に移行します。resumeを指定すると特定のセッション ID を対象にして再固定し、noContinueを指定すると固定先を変更せずに一時的に実行します。
エージェント連携
スキルは .agents/skills/ を読み込む任意のエージェント(peen など)で利用でき、以下のクライアントにはネイティブにインストールできます。
Claude Code
claude plugin marketplace add psyb0t/agents
claude plugin install codexbox@psyb0t
Claude Code では codexbox の URL を入力するよう求められます。サーバーに API/MCP トークンが設定されている場合は、対応するベアラートークンも入力します。機密情報は OS のキーチェーンに保存されます。
Codex
codex plugin marketplace add psyb0t/agents
codex plugin add codexbox@psyb0t
マーケットプレイスからインストールすると、このスキルは $codexbox:codexbox として呼び出されます。また、.agents/skills/ を含む任意のリポジトリでは、インストールしなくても Codex がスキルを自動的に認識し、そこで $codexbox として呼び出せます。
OpenClaw
このスキルは、リリースのたびに ClawHub に公開されます。
openclaw skills install @psyb0t/codexbox
ローカル stdio に対応する MCP クライアントの場合、@psyb0t/codexbox プラグインが、実行中のボックスの /mcp エンドポイントへのブリッジとして機能します。
openclaw plugins install clawhub:@psyb0t/codexbox
次に CODEXBOX_URL を設定します(サーバーの起動時に設定した場合は CODEXBOX_MCP_MODE_TOKEN も設定します)。
開発
このリポジトリの隣に psyb0t/docker-aicodebox をチェックアウトしておく必要があります(../docker-aicodebox)。
make help # list targets
make build-base # build aicodebox-base from ../docker-aicodebox
make build # build codexbox:local on top of it
make build-full # build + tag the full toolchain variant
make build-all # build both variants
make test # run the full e2e suite (needs .env.test)
make test-image-select # hermetic installer/wrapper variant regression
make test-full-image # build full and check every advertised tool
make clean # remove built images
テスト
エンドツーエンドテストでは、イメージをビルドし、実際の OpenAI/codex エンドポイントに対して実行します。Telegram テストでは、実際の MTProto ユーザーボットとして psyb0t/telethon-plus を使用します。
cp .env.test.example .env.test
$EDITOR .env.test # fill in OPENAI_API_KEY and optionally Telegram creds
make test
AICODEBOX_TELEGRAM_MODE_TOKEN が空の場合、Telegram テストは自動的にスキップされます。それ以外のテストに必要なのは OPENAI_API_KEY だけです(サブスクリプション認証の経路もテストする場合は、実際の ChatGPT サブスクリプションへのログインも必要です)。
make test-image-select の実行には、認証情報も Docker デーモンも必要ありません。CODEXBOX_FULL=0|1 が同じイメージを選択、プル、ビルドすることを確認します。make test-full-image は latest-full をビルドし、そのバリアントマーカー、Codex、固定された Go/Python のバージョン、および提示されている CLI の組み合わせを確認します。
ライセンス
WTFPL — LICENSE を参照してください。好きなようにしてください。
公開イメージにバンドルされているサードパーティ製コンポーネント(Codex、および full イメージのみ — Terraform、gh、kubectl、Helm、golangci-lint)は、それぞれ独自のライセンスに従います。THIRD_PARTY.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。