
2026/09/11 12:45
Claude Web のマイクロVM をリバースエンジニアリング:Anthropic が隠した Antspace を暴く
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
最も重要な発見は、Anthropic が「Antspace」という完全に垂直統合化され、AI 固有のインフラを運用しており、モデルのデプロイメントを一般的なクラウドプロバイダーに依存せず、自社のプライベートサーバー内で完全に管理している点である。この発見は、大規模言語モデルのアプライケーション層と基盤となる物理インフラの間にある分離に関する前提を覆すものである。標準的な Linux ツールを用いたフォレンジック分析により、ストリップされていない Go バイナリ、カスタムの Rust スーパーバイザー、および「Baku」のような特定の内蔵パッケージを特定し、この隠されたアーキテクチャが解明された。これらのコンポーネントは、セキュリティのためのメモリアーザーからデータベースのプロビジョニング、スナップショット管理に至るまで、Anthropic の制御下で直接すべてを管理する。プラットフォーム自体は「Bring Your Own Cloud」モードもサポートしているものの、コアオーケストレーションは依然として独自のものとなっている。したがって、開発者は本質的に、自然言語コマンドが生産環境へとシームレスに変換され、Anthropic の壁の向こう側へ出ることもなく、エコシステム内で機能する状況にロックインされることになっている。この境界線の曖昧さは、現代の AI サービスが、公衆向けのドキュメントよりもはるかに統合された自立型のスタック上で動作することを示唆しており、サービス提供元に実行から意図に至るまでの開発ライフサイクル全体に対する前例のない制御を付与していることを意味する。
本文
Claude Code Web の内部構造:Anthropic の機密 PaaS と「Antspace」の解明
調査の背景と前提条件
- 調査対象: Claude Code Web のランタイム環境
- 到達地点: 未公開(アンリリース)の Anthropic インフラストラクチャおよびアプリケーションホスティングプラットフォームの発見
- 調査手法:
- 完全な Linux ツール(
,strace
,strings
,objdump
)を使用した標準的な分析。go tool objdump - 特異な攻撃や権限昇格、ネットワーク攻撃は行わなかった。
- 重要: 調査対象のバイナリは**未ストリップ(デバッグシンボル完全)**であり、公開環境でもセキュリティリスクが示唆される構造となっている。
- 完全な Linux ツール(
第 1 レイヤー:Firecracker MicroVM ベースのハイパーバイザ
Claude Code Web の基盤は、AWS Lambda や Fargate で使用される Firecracker MicroVM テクノロジーであることが確認された。
ハードウェア仕様
- CPU: 4 vCPU(Intel Xeon Cascade Lake @ 2.80GHz)
- メモリ: 16GB RAM
- ストレージ: 252GB ディスク
- カーネル: Linux 6.18.5
- 仮想化: ネステッドバーチャライゼーションなし(Firecracker がゲストの VM フラグを意図的に無効化しているため)
プロセス構造(最小限の init スーパバイザー)
- PID 1: カスタムバイナリ
/process_api
やsystemd
、ログ記録デーモンの存在なし。sshd- WebSocket API(ポート 2024)およびセカンダリエンドポイント(ポート 2025)のリスニングを行う最小限のスーパーバイザー。
- 初期化フラグ:
(解放ページのゼロ化)。init_on_free=1
- PID 517:
/usr/local/bin/environment-manager- 実際のセッション管理を担当。
スナップショットアーキテクチャ(Snapstart)
セッションはゼロから起動せず、凍結された VM スナップショットからの復元により開始される。テンプレート作成と復元の間には最大 48.5 時間 のギャップが存在するが、データは一貫性を持って維持される。
デバイスのホットスワップ
| デバイス | テンプレート時 | 復元後 | 内容・役割 |
|---|---|---|---|
| vda | 256 GiB (ext4) | 変更なし | セッションルート FS(Ubuntu 24.04) |
| vdb | プレースホルダー | 63.7 MB (squashfs) | |
| vdc | プレースホルダー | 12.1 MB (squashfs) | |
復元時の動作(Snapshot Load)
ホストがセッション固有のブロックデバイスを指定し、VM を再起動させる際、以下の処理が行われる:
- キャッシュ管理: ページキャッシュを破棄し、古いテンプレートデータの返答を防ぐ。
- ファイルシステム再構築: Ext4 ルート FS のマウントと
の実行。pivot_root - オーバーレイ追加: squashfs(Claude Code および環境ランナー)のマウント。
- セキュリティ強化:
権限の廃止、CAP_SYS_RESOURCE
による時刻修正、暗号予測不可能性の再シード。clock_settime()
プロトコル仕様:process_api とネットワーク制御
WebSocket API(ポート 2024)
PID 1 が実装する Rust/tokio バイナリで、プロセス管理用のワイヤープロトコルを提供する。
- 接続ハンドシェイク: JWT(オプション) →
JSON → プロセス作成/再接続ProcessConnection - I/O フロー:
- Stdin/Stdout: テキスト入力を受け取り、バイナリフレームとしてデータを転送。
- エンド条件:
/StdOutEOF
で明示的に終了を検知。StdErrEOF
- 機能: シグナル送信(
)、ウィンドウサイズ変更(SendSignal
)、デタッチ、キープアライブ(Resize
)。KeepAlive - プロセス制御:
- Cgroups 追跡(メモリ制限など)の実装。
- 孤児プロセスの自動再親付け(PID 1 への紐付け)。
- OOM ポリングループによるメモリ不足監視。
HTTP Control API(ポート 2025)
コンテナライフサイクルを管理する以下のエンドポイントを提供する。
| エンドポイント | 機能 |
|---|---|
| ヘルスチェック |
| ファイルシステムバッファのフラッシュ(強制的に書き込み) |
| グレースフルシャットダウン(キャッシュ破棄付) |
| JWT 検証キーの設定 |
| ルート FS の再マウント(スナップショット復元のトリガー) |
| コンテナアイデンティティの設定 |
の詳細:/mount_root
- ネットワーク設定(hosts, resolv.conf)、CA 証明書、FUSE マウント、壁時計タイムスタンプを含むコンフィグを受け取る。
- マウント中は
を使用しルートディレクトリを凍結することで安定性を確保している。FIFREEZE/FITHAW ioctls
第 2 レイヤー:未ストリップの Go バイナリ (environment-manager
)
environment-manager真の発見は、完全なデバッグ情報とシンボルテーブルを含んだ Go バイナリである
/usr/local/bin/environment-runner(environment-manager のシンボリックリンク)にある。
- バージョン: Go 1.25.7
- 依存関係:
: Anthropic 固有の SDKgithub.com/anthropics/anthropic/api-go
: Model Context Protocol (MCP) サポートgithub.com/mark3labs/mcp-go
,google.golang.org/grpc
,DataDog/datadog-go
などの標準ツール。OpenTelemetry
アーキテクチャツリー (internal/
)
internal/├── api/ # API クライアント(セッション、ポーリング) ├── auth/ # GitHub アプリトークンプロバイダー ├── claude/ # インストール・アップグレード・実行管理 ├── config/ # モード制御(new/resume/cached/setup-only) ├── envtype/ # 環境種別定義 │ ├── anthropic/ # Anthropic ホスティング (Firecracker) │ └── byoc/ # Bring Your Own Cloud (BYOC) ├── gitproxy/ # Git クレデンシャルプロキシ ├── input/ # Stdin パーサー+機密情報処理 ├── manager/ # セッションマネージャー、MCP 設定、スキル抽出 ├── mcp/ # MCP サーバー(codesign, supabase) ├── orchestrator/ # ポーリングループ、フック実行 ├── podmonitor/ # Kubernetes リースマネージャー ├── process/ # プロセス実行+スクリプトランナー ├── sandbox/ # サンドボックスランタイム設定 ├── session/ # アクティビティレコーダー ├── sources/ # Git クローン+ソース分類 └── tunnel/ # WebSocket タンネル+アクションハンドラ └── actions/ ├── deploy/ # デプロイメントロジック ├── snapshot/ # ファイルスナップショット処理 └── status/ # ステータス報告
第 3 レイヤー:未公開の PaaS 「Antspace」
tunnel/actions/deploy/ パッケージから発見された、Vercel と対をなす Anthropic 独自のデプロイメントクライアント。公的に言及のない「Antspace」(内部ニックネーム)である。
デプロイメントフロー
- 作成:
への POST リクエスト(JSON + JWT)。antspaceControlPlaneURL - ビルドアーティファクトアップロード:
- Multipart/Form-data で
を単一アーカイブとして送信。dist.tar.gz - サイズ制限のチェック(超過時はエラー)。
- Multipart/Form-data で
- ステータスストリーミング:
フォーマットでステータスをストリーム。application/x-ndjson- ステータス遷移:
→packaging
→uploading
→building
→deploying
。deployed
Vercel との比較と戦略的意図
Anthropic は既存の API をラップするだけでなく、フルプロトコルを独自に実装している。
| 側面 | Vercel | Antspace (Anthropic) |
|---|---|---|
| ファイルアップロード | 個別 SHA デダップ | 単一 アーカイブ |
| ビルドプロセス | リモート構築 | ローカルビルド後、アーカイブ送信 |
| ステータス通知 | ポーリング | NDJSON ストリーミング |
| 認証方式 | Vercel API Token + Team ID | Bearer トークン + 専用コントロールプレーン URL |
| 公開性 | 文書化済み | 完全に機密/内部のみ |
結論: Anthropic は「アイデア」から「ホスティング」に至るまで、スタックの全層を所有する戦略を敷いている。
第 4 レイヤー:Web アプリビルダー 「Baku」
claude.ai で Web アプリ生成を指示すると起動する環境コードネーム。
- プロジェクトスタック: Vite + React + TypeScript
- 自動プロビジョニング: Supabase(データベース、MCP ツール統合)。
,provision_database
,execute_query
などの MCP ツールが用意される。apply_migration- DB スキーマから自動的に TypeScript 型を生成(
)。generate_types
- 開発環境保護:
の自動作成(Supabase クレデンシャル埋め込み)。.env.local- 停止フックの実装: Git コミット未保存、エラーログ、TypeScript エラーがあった場合のセッション中断を防止するロジックが含まれる。
- デフォルトデプロイ先: Antspace(Vercel は代替手段として存在するが、主要経路は Anthropic 自社プラットフォーム)。
第 5 レイヤー:Bring Your Own Cloud (BYOC)
エンタープライズ顧客向けに用意された機能で、Anthropic の API によってオーケストレーションされる独自のランタイムを実行できる。
- 実装:
パッケージ内envtype/byoc - 主な特徴:
- 高速起動: デフォルトモードが
(既存状態の再利用)。resume-cached - 認証注入: 外部のコンテナレベルクレデンシャルを処理可能。
- Kubernetes 統合: ポッドマネージャーによるリース管理の実装。
- 高速起動: デフォルトモードが
- BYOC API エンドポイント例:
(アイデンティティ発見)/v1/environments/whoami- Supabase DB クエリプロキシ、コード署名検証などの専用エンドポイント。
調査結果と戦略的インパクト
垂直統合された AI アプリケーションプラットフォームの完成形
Anthropic は以下の完全なループを実現している:
- ユーザーの言語指示(LLM)
- アプリケーション生成(Baku 環境)
- データベース自動プロビジョニング(Supabase MCP)
- アプリケーションデプロイメント(Antspace PaaS)
これにより、ユーザーは Anthropic のエコシステムから離れる必要がなくなる。従来の「AI コーディングアシスタント」を超え、「アプリケーションホスティングまで含めたプラットフォーム」としての性格が強まっている。
市場への影響
- 競争相手との対抗:
- ホスティング:Vercel / Netlify
- AI アプリ生成:Replit / Lovable / Bolt
- バックエンド:Supabase / Firebase
- 構造的優位性: 競合他社は個別のレイヤーしか掌握していないが、Anthropic は**意図理解(LLM)→ コード生成(ランタイム)→ ホスティング(PaaS)**までを自社インフラで完結させている。
調査方法論と発見の可能性
この分析は、公開されているバイナリから成された完全なアーキテクチャツリーを復元する手法を示したものである。
| 技術 | 明らかにすること |
|---|---|
(ACPI OEM ID) | ハイパーバイザの特定(Firecracker) |
| ビルドメタデータ、依存関係リスト、モノリポ構造の把握 |
シンボルテーブル () | パッケージレイアウト、型名、メソッドシニチャータの取得 |
| ストラクタグ文字列抽出 | ワイヤープロトコル(JSON フォーマット)の発見 |
PID 1 に対する | ランタイム振る舞い、IPC パターン、イベントループの確認 |
なぜ容易だったか
- 未ストリップ: デバッグシンボルが公開されているため、逆解析ツール(Ghidra など)に頼らずとも内部構造が可視化できた。
- Go の特性: ビルドメタデータへの埋め込みや文字列の保持により、依存関係とプロトコル仕様を容易に抽出可能だった。
結論
Antspace は現在は「staging-」バージョン付与の初期フェーズにあるが、本番グレードの成熟したデプロイメントプロトコルである。Anthropic は単なる AI 企業ではなく、「アプリケーションが自律して存在・動作するインフラスタック」を構築する野心的なプレイヤーとして進化していることが確認された。