組み込みの anthropic プロバイダーは shunt のデフォルトの送信先です。一致するルートを持たないモデルは
すべて、そのまま api.anthropic.com へ転送されます(server.default_provider で変更可能)。これは
kind = "anthropic" のプロバイダーです — 上流がすでに Anthropic Messages API を話すため、shunt は
リクエストを変換せずにパススルーし、どの認証情報を上流へ送るかだけを決めます。
| 認証モード | 認証情報 | ユースケース |
|---|---|---|
passthrough(デフォルト) |
呼び出し元自身の x-api-key / Authorization |
透過プロキシ — 各クライアントが自分のキーまたは OAuth トークンを持ち込む |
api_key |
環境変数から取るサーバー側のキー | 運用者所有の API キー 1 本で、すべてのリクエストのキーを差し替える |
claude_oauth |
shunt が管理する 1 つ以上の Claude サブスクリプションアカウント | プーリングとクォータを考慮したローテーションを伴い、Claude サブスクリプションを消費する |
クイックスタート
コーディングエージェントにセットアップを任せることもできます — shunt add は組み込みのセットアップ
ブループリントを出力します(オフラインかつ読み取り専用で、設定を編集するのはエージェントです。この
コマンド自体は編集しません)。
shunt add upstream anthropic --print | claudeまたは、以下の手順に沿って手動で設定してください。
upstream を設定する
anthropic は組み込みです — 設定が一切なくても、shunt はルーティングされないモデルを passthrough として
すでにここへ転送します。(順序付きフェイルオーバーのため、あるいは認証を変えるために)明示的に宣言するには、
kind = "anthropic"、base_url = "https://api.anthropic.com"、auth = "passthrough" を提供するプリセットを
使います。
[[upstreams]]
name = "anthropic"
provider = "anthropic"明示的に指定したフィールドはプリセットのデフォルトを上書きします。従来の [providers.anthropic] テーブル
形式も引き続きサポートされます — ただし [[upstreams]] と [providers.*] を 1 つのファイルで混在させない
でください。
パススルー(デフォルト)
ほかに設定するものはありません。shunt はクライアント自身の x-api-key または Authorization ヘッダーを
転送します。サーバー側のシークレットを設定ファイルに置く必要はありません。クライアントが何を送るべきかは
Claude Code を接続するで扱っています。
サーバー側の API キー
呼び出し元がキーを持ち込むのを信頼する代わりに、運用者所有のキーを注入します。
[[upstreams]]
name = "anthropic"
provider = "anthropic"
auth = { mode = "api_key", env = "ANTHROPIC_API_KEY", header = "x_api_key" }サーバー側の認証情報を注入する場合は、ループバックを越えて公開する前に
[server.auth] でゲートウェイをゲートしてください。
Claude サブスクリプションアカウント(claude_oauth)
リフレッシュ可能な shunt 管理アカウントを一度作成し、upstream をそれにスコープします。
shunt login claude --name primary --mode oauth[[upstreams]]
name = "anthropic"
provider = "anthropic"
auth = { mode = "claude_oauth", account = "primary" }shunt login claude には 3 つのモードがあります。--mode oauth は shunt 自身のリフレッシュ可能な OAuth
フローを実行し(推奨)、--mode import は現在の Claude Code のログインをコピーし、--mode setup-token は
1 年間有効な推論専用トークンを作成します。account(および accounts)を省略すると shunt 管理下の
アカウントストア全体をスキャンします — ストアに複数のアカウントがあれば、セッションスティッキネスと
クォータを考慮したローテーションを備えた負荷分散プールになります。明示的なアカウントエントリ、
アカウント単位のしきい値、[server.pool] のチューニング、フェイルオーバーを含む完全なプーリングの挙動は
Anthropic マルチアカウントに記載されています。
モデルとルーティング
デフォルトプロバイダーであるため、anthropic にルートは不要です — ほかへマッピングしなかったものが
すべてここへ来ます。順序付きフェイルオーバーチェーンの中でモデルを明示的に固定するには:
[[models]]
id = "claude-sonnet-5"
display_name = "Claude Sonnet 5"
[models.upstream_model]
anthropic = "claude-sonnet-5"マップのキーはプリセット id ではなく [[upstreams]].name です。auto_include_builtin_models = true
(デフォルト)の場合、GET /v1/models はまず server.default_provider が Anthropic 種別のときにそこから
ライブのモデル一覧を取得しようとし、それ以外では shunt の組み込み Claude カタログスナップショットへ
フォールバックします — Model Discovery を参照。
検証
shunt check # -> config ok
shunt run
curl -sS http://127.0.0.1:3001/v1/models続いて最小のリクエストを 1 つ送ります(passthrough では自分の認証情報を含め、claude_oauth では
省きます)。
curl -sS http://127.0.0.1:3001/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H 'anthropic-version: 2023-06-01' \
-H 'content-type: application/json' \
-d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"Reply with OK."}]}'関連
- Anthropic マルチアカウント — アカウントプール、クォータを考慮した選択、
[server.pool] - 管理とリモートプロビジョニング — ブラウザからアカウントをプロビジョニングする
- Configuration Reference — すべてのアカウントキー