ガイド
ローカル完結のコード解析:その仕組みと、あなたのマシンから出ていくもの
ブラウザのツールがリポジトリ全体をアップロードせずに解析する仕組み——File System Access APIとタブ内WebAssembly——と、そのツールが行うすべてのネットワークリクエストの完全なリスト。
あなたのコードはタブから出ない
フォルダを選ぶと、ブラウザはページにそれらのファイルへの読み取りアクセスを渡します——ChromiumではFile System Access API、その他では古典的なフォルダ入力。バイト列はタブのメモリに読み込まれます。パーサーはtree-sitterからコンパイルされたWebAssemblyで、あなたのCPU上で実行されます。アップロード用エンドポイントは存在せず、コードが行く場所もありません。
これはスローガンではなく検証可能です:DevTools→Networkを開き、このドメイン以外へのリクエストでフィルタし、ツールを使ってください。リストは空のままです。ページのContent-Security-Policyがこれをブラウザレベルで強制します——サードパーティオリジンは許可されておらず、ページのコードが侵害されていても、あなたの成果物を送る先がありません。
アプリが行うすべてのネットワークリクエスト
完全なリストです。その他すべてはオフラインで、あなたのタブ内で起きます:
- アプリ自身のHTML、スクリプト、スタイル、アイコン——このドメインから。
- tree-sitter文法ファイル(.wasm)、有効にした言語パックごとに1つ——このドメインから、1年間キャッシュされます。
- /config.json——ランタイムスイッチ(レート制限のミラー、機能フラグ)——このドメインから。
- /api/abuse——フェアユースカウンター:解析回数と最大8つの言語名。パス、シンボル、クエリ、内容は決して含みません。サーバーはリクエストボディをログに残しません。
- /api/session——「別のデバイスで続行」を押した場合のみ:AES-256-GCMで暗号化された構造のみのスナップショット。復号鍵はURLフラグメントに保持され、どのサーバーにも到達しません。
「構造のみ」がセッション同期で意味すること
転送機能があるのは、タスクの途中でマシンを切り替える人がいるからです。転送されるのは解析レポート——ファイルパス、シンボル名、行範囲、依存エッジ、設定、集計統計。決して転送されないもの:ファイルの内容。スナップショット形式はその不在によって定義されており、後からボルト留めされたポリシーではありません。
レポートは圧縮され、あなたのデバイス上でランダムな256ビット鍵により暗号化され、サーバーにはランダムな128ビットIDの下、不透明なブロブとして保存されます(有効期限14日)。鍵はあなたがコピーするリンクのURLフラグメント内にのみ存在します:フラグメントはサーバーに送られず、ログにも現れず、受信側デバイスが消費した瞬間にアプリがアドレスバーから除去します。
このアーキテクチャが約束しないこと
どんな誠実なアーキテクチャにも際があります。あなたのIPアドレスはCloudflareのエッジで処理されます——Cloudflareの背後にあるすべてのサイトがそうであるように、そしてフェアユースカウンターがそのハッシュを鍵にしているからです。文法のダウンロードは、どの言語パックが取得されたかをCDNに集計的に伝えます。両方の事実が、法的根拠とともにプライバシーポリシーで開示されています。
そしてエクスポートした瞬間、バンドルはあなたのものになります:AIプロバイダに貼り付ければ、それはそのプロバイダの利用規約の下に置かれます——送信したものを保持したり学習に使ったりする可能性があります。ツールはその境界を可視化しようと努めます。プライバシーの境界より悪いものはただ一つ、見えない境界だけだからです。