OpenCode ↗ は、カスタムプロバイダー設定に対応するオープンソースのコーディングエージェントです。組み込みプロバイダーを AI Gateway に向けると、OpenCode からのモデルリクエストを観測・制御できます。
開始前に次が必要です。
- AI Gateway と、そのゲートウェイスラッグ。
- 十分な Unified Billing クレジット、または各プロバイダーの
defaultエイリアス付きで保存した プロバイダーキー。 - インストール済みの OpenCode ↗。
この方法では、認証済みゲートウェイ とそのゲートウェイトークンも必要です。トークンには Run 権限が必要です。Cloudflare のアカウント ID も必要です。確認方法は アカウント ID とゾーン ID を見つける を参照してください。
-
ゲートウェイトークンを
CF_AIG_TOKEN環境変数に設定します。次のコマンドは現在のセッション向けです。永続化するには、シェルのプロファイルに追加します。<CF_AIG_TOKEN>をゲートウェイトークンに置き換えます。export CF_AIG_TOKEN="<CF_AIG_TOKEN>"$env:CF_AIG_TOKEN = "<CF_AIG_TOKEN>" -
プロジェクトルートに
opencode.jsonを作成します。<ACCOUNT_ID>と<GATEWAY_ID>を、アカウント ID とゲートウェイスラッグに置き換えます。opencode.jsonjson { "$schema": "https://opencode.ai/config.json", "share": "disabled", "disabled_providers": ["opencode"], "enabled_providers": ["anthropic", "openai", "google", "xai"], "provider": { "anthropic": { "name": "Anthropic through Cloudflare AI Gateway", "options": { "baseURL": "https://gateway.ai.cloudflare.com/v1/<ACCOUNT_ID>/<GATEWAY_ID>/anthropic/v1", "apiKey": "", "headers": { "cf-aig-authorization": "Bearer {env:CF_AIG_TOKEN}" } } }, "openai": { "name": "OpenAI through Cloudflare AI Gateway", "options": { "baseURL": "https://gateway.ai.cloudflare.com/v1/<ACCOUNT_ID>/<GATEWAY_ID>/openai", "apiKey": "", "headers": { "cf-aig-authorization": "Bearer {env:CF_AIG_TOKEN}" } } }, "google": { "name": "Google AI Studio through Cloudflare AI Gateway", "options": { "baseURL": "https://gateway.ai.cloudflare.com/v1/<ACCOUNT_ID>/<GATEWAY_ID>/google-ai-studio/v1beta", "apiKey": "", "headers": { "cf-aig-authorization": "Bearer {env:CF_AIG_TOKEN}" } } }, "xai": { "name": "xAI through Cloudflare AI Gateway", "options": { "baseURL": "https://gateway.ai.cloudflare.com/v1/<ACCOUNT_ID>/<GATEWAY_ID>/grok/v1", "apiKey": "", "headers": { "cf-aig-authorization": "Bearer {env:CF_AIG_TOKEN}" } } } } }各
apiKeyの値は空のままにします。プロバイダーの認証情報は、Unified Billing または保存済みプロバイダーキー経由で AI Gateway が供給します。defaultエイリアスなしの保存キーを使う場合は、そのプロバイダーのheadersオブジェクトにcf-aig-byok-aliasヘッダー を追加します。使わないプロバイダーは削除します。その他の設定は OpenCode providers ↗ を参照してください。 -
OpenCode を起動し、設定済みのプロバイダーとモデルを選びます。
opencode
トラフィックが AI Gateway に届いているかは、動作確認 を参照してください。
ゲートウェイが Cloudflare Access で保護されている場合、OpenCode はゲートウェイトークンの代わりに、有効期限の短い Access トークンで認証できます。設定を中央でホストし、ユーザーはログインコマンド 1 つで接続することもできます。
この構成には、AI Gateway の カスタムドメイン、各ユーザー端末の cloudflared、設定ファイル 2 つの公開 HTTPS 配置先が必要です。カスタムドメイン付きの R2 バケット を使えます。
ファイルには設定だけがあり、認証情報は含みません。Single Redirect が、AI Gateway カスタムドメインへの /.well-known/opencode リクエストを、ディスカバリーファイルへ送ります。
ユーザーは、グローバル設定またはプロジェクト設定でリモート設定を上書きできます。組織全体の設定を強制するには、OpenCode managed settings ↗ を参照してください。
次の例では、AI Gateway ドメインに ai.example.com、設定ホストに config.example.com を使います。両方のホスト名を自分の値に置き換えてください。
-
OpenCode プロジェクトの外で、ゲートウェイトークンで接続する の
opencode.jsonをコピーします。各プロバイダーのbaseURLを次の値に置き換えます。プロバイダー Base URL Anthropic https://ai.example.com/anthropic/v1OpenAI https://ai.example.com/openaiGoogle https://ai.example.com/google-ai-studio/v1betaxAI https://ai.example.com/grok/v1各プロバイダーの
headersオブジェクトを、次の値に置き換えます。{ "cf-access-token": "{env:TOKEN}", "X-Requested-With": "XMLHttpRequest" } -
opencode.jsonを公開 HTTPS ホストへアップロードします。その URL が、認証なしで想定どおりの JSON を返すことを確認します。R2 を使う場合は、オブジェクトをバケットにアップロードし、カスタムドメインを接続 します。例のファイルは
https://config.example.com/opencode.jsonで取得できる必要があります。プロジェクト設定やグローバルな OpenCode 設定に、別コピーを残さないでください。ローカル設定はリモート設定より優先され、あとからのホスト側更新が適用されなくなります。
-
opencodeディスカバリーファイルを作成します。remote_config.urlに、opencode.jsonの公開 URL を設定します。opencodejson { "auth": { "command": [ "cloudflared", "access", "login", "--no-verbose", "-app=https://ai.example.com/" ], "env": "TOKEN" }, "remote_config": { "url": "https://config.example.com/opencode.json" } }OpenCode は認証コマンドを実行し、その出力を
{env:TOKEN}として使えます。その値を、リモートのプロバイダー設定に代入します。 -
opencodeを公開 HTTPS ホストへアップロードします。https://config.example.com/opencodeが、認証なしでディスカバリー JSON を返すことを確認します。 -
AI Gateway カスタムドメインのゾーンで、次の設定の Single Redirect を作成 します。
- Rule name:
OpenCode discovery - Custom filter expression:
(http.host eq "ai.example.com" and http.request.uri.path eq "/.well-known/opencode") - Target URL:
https://config.example.com/opencode - Status code:
302 - Preserve query string: Off
- Rule name:
-
有効な Access セッションがないブラウザーで、
https://ai.example.com/.well-known/opencodeを開きます。Access のプロンプトなしでディスカバリー JSON が返ることを確認します。 -
OpenCode を接続するには、次を実行します。
opencode auth login https://ai.example.com求められたら Access のログインを完了します。OpenCode は得られた認証情報をローカルに保存し、リモート設定を読み込みます。Access セッションが切れたら、同じコマンドを再実行します。
-
OpenCode を起動し、設定済みのプロバイダーとモデルを選びます。
opencode