KiroStudio:Rust で書く Anthropic プロトコルゲートウェイ
KiroStudio は Anthropic プロトコルのゲートウェイだ。標準の Anthropic Messages API リクエストを受け取り、変換して Kiro / AWS Q の上流へ転送し、レスポンスを Anthropic フォーマットに戻す。Anthropic 互換のクライアントなら、Claude Code でも SDK でも自作アプリでも、base_url をここに向けるだけで使える。hank9999/kiro.rs(MIT)から fork したもので、プロトコル変換のコアをその上に構築し大幅に拡張した。
バックエンドは Rust + Axum(2024 edition)。フロントの React + Vite 管理パネルはコンパイル時に rust-embed でバイナリに埋め込み、ストレージはローカルの SQLite を使い、最終的に外部静的リソースへの依存を持たない自己完結の単一ファイル実行ファイルを吐き出す。binary 版のインストールは install-binary.sh 一本で済み、Linux x86_64 と systemd があればよく、Docker も Rust も Node も要らない。
コアインターフェースは POST /v1/messages で、ストリーミングと非ストリーミング、tool call、thinking ブロック、画像入力に対応する。認証情報のレイヤーはマルチ credential のスケジューリングと負荷分散(priority または balanced)、自動フェイルオーバー、失敗クールダウン、セッションアフィニティ、RPM ソフトスロットリングを備える。入口のセキュリティも一通り揃っていて、API key 認証、CORS ホワイトリスト、IP ホワイトリスト(CIDR)、単一 IP のレート制限、リクエストボディのサイズ制限、認証情報のログマスキング、さらに内部ネットワークやループバックアドレスへの送信をブロックする SSRF 対策まである。
一番実用的なのは、ゲートウェイが Claude Code のあの厄介な Invalid tool parameters を修正してくれる点だ。不正なエスケープ、裸の制御文字、切り詰めで壊れた JSON を、クライアントに届く前に直しておく。
src/ は責務ごとに分かれている。anthropic/ は入力側プロトコル、kiro/ は上流への変換と credential スケジューリング、admin/ と admin_ui/ が管理パネル、usage/ は使用量の追跡、common/ は CORS、IP、レート制限、SSRF を収める。設定は 2 ファイルで、config.json がサービスとセキュリティ、credentials.json が上流の認証情報を保持し、chmod 600 を推奨する。apiKey は必須で、空なら起動を拒否する。
自分用の位置づけで、MIT。デプロイするなら上流 provider の規約を自分で確認して、この手の credential プールの使い方が許されるかどうかは運営者の責任で判断してほしい。