
Rootlyのインシデント、アラート、チームをクエリ可能なナレッジグラフに変換します。サービス依存関係、オンコールカバレッジのギャップ、インシデント間のパターンを可視化します。
graphify をベースに構築されました。このツールは Andrej Karpathy の LLM Wiki アイデア に触発されています — 毎回のクエリで知識をゼロから再発見する代わりに、LLM に永続的で構造化された知識グラフを構築させ、時間とともに豊かにしていきます。Graphify は任意のファイルフォルダを受け取り、コミュニティ、接続、信頼度スコアを持つクエリ可能なグラフに変換します。このフォークは Rootly API を対象としています。
Rootly API に接続し、選択した時間枠のインシデント、アラート、チーム、サービスカタログを収集し、ローカルコーパスにエクスポートし、そのコーパスをクエリ可能な知識グラフに変換します。収集には graphify rootly を、より深いセマンティック分析が必要な場合は Claude Code または Codex で /graphify を使用します。
新規インストール (Graphify + Rootly インポーター):
pip install "graphifyy[rootly]"
graphify install # Claude Code
graphify install --platform codex # Codex
既存の Graphify 環境に Rootly インポーターを追加:
pip install "graphifyy[rootly]" --upgrade
プロジェクトルートに .env ファイルを作成します:
ROOTLY_API_KEY=rootly_...
インシデント、トリガーされたアラート、チームを取得します。重大度カラー、アラートフィルター、チーム/サービスレイヤーを含む初期グラフを構築します。
graphify rootly
非対話形式:
graphify rootly --api-key-env ROOTLY_API_KEY --days 30 --mode standard
出力は graphify-rootly-data/graphify-out/ に書き込まれます:
graph.html — ブラウザで開いてグラフを探索GRAPH_REPORT.md — ゴッドノード、コミュニティ、推奨クエリgraph.json — クエリ用の生グラフインシデントコーパス上で並列サブエージェントを実行し、インシデント横断的なテーマ、繰り返しパターン、根本原因の関係を推論します。
Claude Code — チャットに入力:
/graphify graphify-rootly-data --mode deep
Codex — チャットに入力:
run graphify on graphify-rootly-data --mode deep
| リソース | 内容 | フィルター |
|---|---|---|
| インシデント | タイトル、重大度、ステータス、タイムライン、サービス、チーム、説明 | 日付ウィンドウ (--days) |
| アラート |
graph.html をブラウザで開いた後:
rootly-graphify には、Rootly 収集フェーズとグラフ分析フェーズがあります。
決定論的な Rootly 収集。 API キーを検証し、7、30、または90日のウィンドウを選択し、started_at がそのウィンドウ内にあるインシデントを取得し、そのインシデントごとのサブリソースを介してトリガーされたアラートを取得し、すべてのチームデータを取得し、すべてをローカルコーパスディレクトリに書き込みます。
初期 Rootly グラフ構築。 組み込みの Rootly ランナーが、インシデント、アラート、チーム、サービスに対してノードを作成し、型付きエッジ (triggered、affects、owns、responded_by、targets) で結びつけ、グラフをクラスタリングし、graph.html、GRAPH_REPORT.md、graph.json を書き出します。HTML には重大度カラー、チーム/サービスレイヤー、アラートフィルターが含まれます。
オプションの深いエンリッチメント。 /graphify ./graphify-rootly-data --mode deep を実行して、マークダウンファイル上で並列サブエージェントを起動し、インシデント横断的なテーマ、根拠、概念的なリンクを推論します。
現在のトップレベル出力を使用。 セマンティックエンリッチメント後、graphify-out/graph.html を開きます。現在の汎用エクスポーターは既に維持されたフィルターとビジュアルを直接含んでいるため、別途再適用手順は不要です。
クラスタリングはグラフトポロジーベース — 埋め込み不要。 Leiden はエッジ密度によってコミュニティを見つけます。セマンティック類似エッジ (semantically_similar_to、INFERRED とマーク) はコミュニティ検出に直接影響します。別途の埋め込みステップやベクターデータベースは必要ありません。
すべての関係は、EXTRACTED(ソースから直接発見)、INFERRED(合理的な推論、信頼度スコア付き)、または AMBIGUOUS(レビュー用にフラグ付き)のいずれかでタグ付けされます。
ゴッドノード — 次数が最も高いインシデントまたはサービス(すべてが接続するもの)
意外な接続 — 複合スコアでランク付けされたインシデント間リンク。それぞれ平易な英語での説明付き
推奨クエリ — グラフがインシデント履歴について独自に答えられる4~5の質問
信頼度スコア — すべての INFERRED エッジには confidence_score(0.0~1.0)があります。EXTRACTED エッジは常に1.0です。
セマンティック類似エッジ — 構造的な接続がないインシデント間の概念的なリンク。サービスやチームを共有せずに同じ根本パターンによって引き起こされた2つのインシデント。
トークン効率 — 初回実行で抽出とグラフ構築が行われ(トークンを消費)、以降のクエリは生のマークダウンではなくコンパクトなグラフを読み取ります — これにより節約が累積します。SHA256 キャッシュにより、再実行は変更されたファイルのみを再処理します。
# --- Rootly ワークフロー(ターミナル) ---
graphify rootly # 対話的な Rootly インポートフロー
graphify rootly --days 30 # 過去30日間のインシデントを収集
graphify rootly --api-key-env ROOTLY_API_KEY # 環境変数から非対話的にキーを取得
graphify rootly --output ./my-rootly-corpus # カスタムフォルダにコーパスを出力
# --- セマンティックエンリッチメント(エージェント: Claude Code / Codex)---
/graphify ./graphify-rootly-data # Rootly コーパスを分析
/graphify ./graphify-rootly-data --mode deep # より積極的な INFERRED エッジ
/graphify ./graphify-rootly-data --update # 変更されたファイルのみ再抽出
# --- グラフのクエリ(エージェント) ---
/graphify query "which services have the most recurring incidents?"
/graphify query "what patterns connect the SEV1 incidents?"
/graphify path "payment-api" "auth-service"
/graphify explain "Incident: Database connection pool exhausted"
# --- オプションのエクスポート ---
/graphify ./graphify-rootly-data --wiki # コミュニティごとのエージェントクロール可能なWiki
/graphify ./graphify-rootly-data --no-viz # HTMLをスキップ、レポート + JSONのみ
/graphify ./graphify-rootly-data --obsidian # Obsidian vault
# --- 常時稼働のアシスタント指示 ---
graphify claude install # CLAUDE.md + PreToolUse フック(Claude Code)
graphify codex install # AGENTS.md(Codex)
# 新しいデータを取得して再構築
graphify rootly --api-key-env ROOTLY_API_KEY --days 30 --mode standard
# セマンティックステップで再エンリッチ(Claude Code)
/graphify graphify-rootly-data --update
| パターン | 表示内容 | グラフが役立つ理由 |
|---|
| サービスインシデントヒートマップ | どのサービスがどの程度深刻か。ノードサイズ = インシデント数、色 = 最悪の重大度。 | 一緒に障害を起こしやすいサービスをクラスタリングし、隠れたインフラ依存関係を明らかにします。 |
| チームオンコール・エスカレーションマップ | すべてのスケジュールとエスカレーションポリシーを一覧表示し、誰が何をカバーしているかを示します。 | 4つのスケジュールを3つのチームで担当する人など、単一障害点やカバレッジのギャップを特定します。 |
| アラート→インシデントファネル | どのアラートソースが実際のインシデントを生成し、どれがノイズかを示します。 | 200のアラートで0インシデントのソースが、ノードサイズで即座にわかります。 |
| インシデント→アクション項目のフォロースルー | 壊れたものを実際に修正しているかどうか。実線 = 完了、点線 = 未完了。 | チームやサービス周辺に未完了のアクション項目が集中している場合、体系的なフォロースルーの問題が明らかになります。 |
| クロスサービス障害相関 | 同じ時間枠内でどのサービスが一緒に障害を起こすか。 | コミュニティ検出により、同じ基盤インフラに依存している可能性が高い共通運命グループが見つかります。 |
| サマリー、ステータス、ソース、ノイズフラグ、タイムライン |
| トリガーされたもののみ(インシデントにリンク) |
| チーム | 名前、スラッグ、サービス所有権 | アカウント内のすべてのチーム |