初めから緑のものはない
正常な行は静かなまま。チェックがなければ稼働中ではなく unknown です。
v1.7.0 · MIT · セルフホスト
どこから、どの経路で、何に届いたのか — そして、何を根拠に。
ネットワーク全体をひとつの画面に。どの経路がどこから通じているか、どのサービスが応答しているか、それぞれの状態の根拠まで。セルフホストで、Go のバイナリ 1 つ、ターミナルで読めます。
go install github.com/WhitenWhiten/topophany/cmd/topo@latest
x を押すと、自宅からロサンゼルスの中継回線への接続が遮断されます。確定した失敗だけが赤くなります。
1–9 チャプター space 一時停止。topo preview で自分でも試せます。
02 セマンティクス
通過したチェックなしに緑になるものはありません。誰も監視していないものは unknown のままです。
正常な行は静かなまま。チェックがなければ稼働中ではなく unknown です。
ある場所から見えた失敗は、その経路の障害であって、サーバーの停止ではありません。
フランクフルトworker · DigitalOcean
Cloudflareエッジ · FRA
ニューヨークオリジン · Oracle
GET /
接続拒否
HTTP 521cf-ray: …-FRA
● 稼働応答した
▲ 影響あり未証明
判定 障害はエッジの奥 · オリジンは未証明
CDN からの応答が証明するのは、何を名乗ろうとエッジだけ。オリジンを証明するのは、エッジを通らないオリジン自身のチェックだけです。
✖ INCIDENTVLESS+Reality 入口BandwagonHost · ロサンゼルス
インシデントは根拠を示し、それ以上は仮説と明記します。
03 構成
topo はクライアントであり、コレクターであり、観測点です。CGO も、データベースも、外部モジュールも不要。
観測点
コレクター
クライアント
topo worker自宅のノート PCtopo worker東京のサーバーtopo serve --observerコレクター自身の基準topo serveジャーナル A · ACK の前に fsynctopo serveジャーナル B · 独立topoTUI、フェイルオーバー付きtopo --jsonスクリプト向けのスナップショットワーカーは両方に送り、片方が落ちている間はバッファします。
リモートの設定 API もシェルもありません。トポロジーはレビューするローカル JSON です。
上限に達すると、根拠を捨てずにエラーで計測を止めます。
04 プローブ
ネイティブのプローブ、プロキシチェーン、そして既存ツール向けの読み取り専用アダプター。
200 · 182 ms期待したステータス・本文・ヘッダー・出口 IPSSH-2.0 · 38 msSSH バナー。ログインではないA 192.0.2.10 · 9 ms期待した A / AAAA レコードTLS 1.3 · verified · 41 ms検証済みの証明書チェーンと名前connected · 23 ms接続できたこと。その先は問わないnonce echoed · 27 msランダムな nonce が返ってきたことecho reply · 31 msエコー応答(IPv4 のみ)最大 12 ホップ。HTTP、TCP、TLS、SSH のチェックは、そのすべてを順に通ります。
GET /proxiesコアが報告するモード、チェーン、選択中のノードtailscale status --jsonピアのオンライン状態、直結かリレーかwg show wg0 dump最後のハンドシェイクと転送量。鍵は保持しないGET /readyコネクターが報告するトンネルセッションと coloツールの報告は報告として示し、エンドツーエンドの合格とはみなしません。
edgeWorkers と Pages。応答した POP もedgeFunctions。エッジと関数のリージョンもplatformリージョンにあるマネージドサービス応答は送ったエッジのものとして記録し、その奥のオリジンのものにはしません。
05 エージェントと
監視でいちばん手間がかかるのはネットワークを書き起こすことで、それは普段使っているコーディングエージェントの得意分野です。マシンが既に持っている情報を読んでトポロジーを書き、何かを動かす前に topo validate で確かめます。
私のネットワークを Topophany のトポロジーとして topology.json に書いてください。形式は `topo preview --print-topology` の出力と、github.com/WhitenWhiten/topophany の docs/REFERENCE.md を参考にしてください。SSH の設定、`tailscale status`、見つかる Compose ファイルとリバースプロキシの設定を読み、各マシンについて場所、動いているサービス、サービスが属するアプリケーション、待ち受けているアドレスを宣言し、ワーカーを動かす予定のマシンからのチェックを加え、分かったことはそれぞれのマシンの notes に書いてください。秘密情報はファイルに書かないでください。`topo validate --config topology.json` が通るまで直し、最後に、確かめたことと推測したことを分けて教えてください。Claude Code、Codex、Gemini CLI、Cursor など、コマンドを実行できるエージェントなら何でも。秘密情報はファイルに入りません。形式に書くのは環境変数名と鍵ファイルのパスだけで、その中身ではありません。
topology.json何がどこで動き、各マシンにどう届くのかを、ノートや手順書と一緒にレビュー済みのファイル 1 つに。エージェントは手を動かす前にこれを読み、あなたはその変更を差分で確かめます。topo status · show · historyコマンド 1 つで、文字でも JSON でも、あなたにもエージェントにも答えます。いま何かおかしいか、あのサーバーで何が動いているか、あのチェックが夜のあいだどうだったか。topo preview --configプレビューなら、合成の根拠で自分のネットワークを描けます。ワーカーを 1 台も動かす前に、エージェントと一緒に見直せます。06 Mac で
topophany-bar は Topophany の macOS 用コンパニオンです。topo を通してコレクターを読み、状態はメニューバーに、問題がどこから見えているかはパネルに、サーバーとサービスはデスクトップのウィジェットに表示します。
07 iPhone Duo のための設計
iPhone アプリはまだありません。あるのは、そのための TUI の設計です。--device は TUI を iPhone、iPad、そして姿勢ごとの iPhone Duo の画面に合わせてレイアウトし、その画面をターミナルの中でシミュレートします。開いた Duo では、見るものと触るものが折り目の両側に分かれます。

topo preview --device duo-laptop。go install github.com/WhitenWhiten/topophany/cmd/topo@main
topo preview --device duo-laptop[ と ] で姿勢を切り替え、\ で次のデバイスへ。マウスが指の代わりになります。ターミナルは 99×70 セルほど必要です。次のリリースまで、--device は main にあります。
08 インストール
ビルド済みアーカイブ、または go install ひとつで。
go install github.com/WhitenWhiten/topophany/cmd/topo@latestGo 1.26.11 以降が必要です。
Linux、macOS、Windows の amd64 と arm64。SHA256SUMS.txt 付き。
git clone https://github.com/WhitenWhiten/topophany
cd topophany
go build -trimpath -o topo ./cmd/topo組み込みのデモ。x で何かを壊してみてください。
topo preview127.0.0.1:7447 でデモを動かします。
topo init --dir ./demo
topo serve --config ./demo/topology.json \
--auth ./demo/auth.json \
--data ./demo/collector-data \
--observer demo別のターミナルで。
topo --credentials ./demo/credentials.json