Kiro Account Manager: Kiro のマルチアカウント切り替えと内蔵ゲートウェイ、ソースを読むために fork した
Kiro Account Manager はアカウントを管理する Tauri 2.x のデスクトップアプリだ。フロントエンドは React 18 + Vite + shadcn/ui + Tailwind 4、バックエンドは Rust で、3 プラットフォームすべてで動く。やることは明快で、Kiro IDE のアカウントとローカル設定を一元管理し、ワンクリックでのアカウント切り替えとクォータ監視を行う。オリジナルの作者は hj01857655 で、自分はソースを読みつつ手を加えるために fork した。功績は彼のものだ。
惹かれたのは、OAuth ログインからローカルの token ファイル書き込み、さらに内蔵の API ゲートウェイまで、チェーン全体を徹底的に噛み砕いている点だ。最近 Kiro をヘビーに使っていて、手元に貯まったアカウントを行ったり来たり切り替えるのが面倒だったので、ちょうどそのソースを reverse engineering の学習材料にした。
コードを読むうえで特に気になった箇所がいくつかある。アカウント切り替え時のファイル書き込み順序が一番おもしろい。順序を誤ると IDE が古いアカウントや中途半端な token を読んでしまう。作者は書き込みを IDE の読み取りタイミングに合わせ、ログアウトと切り替えを 2 つの門番に分けている。マシンコードは当初グローバルに 1 つの machineId で、アカウント間の混線がひどかったが、後にアカウントごとに個別に永続化する方式へ変更された。リクエストの UA も実物の Kiro IDE に合わせてあり、management と streaming で異なるバージョンの aws-sdk-js / codewhisperer 識別子を使っている。これは reverse engineering しなければ到底わからない。
最もぶっ飛んでいるのは内蔵の OpenAI 互換ゲートウェイだ。Anthropic の /v1/messages、OpenAI の /v1/responses と /v1/chat/completions を同時にさばき、prompt cache のマッピング、アカウントプールのルーティング、API Key の認証、モデルマッピングを備える。Cursor や Cline のようなツールはそのまま接続でき、自分のアカウントプール経由で転送できる。ストリーミングの tool_use イベント順序、MCP の元ツール名の復元といった落とし穴も、作者が一つずつ patch している。
自前でビルドするのはごく普通で、bun で依存関係をインストールし、bun run tauri dev で開発を起動、bun run tauri build でパッケージを生成する。前提として Node.js 20+ と Rust が必要だ。面倒なら Releases から直接ビルドを取ってくればいい。Windows の MSI、macOS の DMG、Linux の AppImage/DEB/RPM がすべて揃っている。

fork したのはゼロから作り直すためではなく、デスクトップツールが他人の IDE のアカウント体系にどう寄生するかを理解するためだ。このタイミング、マシンコード、リクエストヘッダーの整合という考え方は、場面が変わっても同じように使える。