Tracker は strongDM の Attractor フレームワークの Go 実装です。AI 駆動のソフトウェアファクトリーを構築するための3層システムです。ワークフローを Dippin の .dip ファイルとして定義し、各ノードがステップとなる有向非巡回グラフとして、Tracker が依存順に実行します。人間が関与するゲート、LLM 駆動のノード、自動チェックポイント、リトライロジックに対応しています。bubbletea の TUI ダッシュボードでパイプラインの進捗をリアルタイムに確認できます。
インストール
brew install 2389-research/tap/tracker
Go でも:
go install github.com/2389-research/tracker/cmd/tracker@latest
パイプラインの実行:
tracker pipeline.dip
中断・一時停止した実行をチェックポイントから再開:
tracker -r <run-id>
以前 Tracker を試して何かにつまずいたなら、tracker doctor が現状を教えてくれます。
機能
.dip ファイルからの DAG 実行。 Dippin の .dip ファイルとしてパイプラインを定義します。ノードがステップを表し、エッジが依存関係を表します。Tracker はグラフをトポロジカルソートして正しい順序でノードを実行し、可能な場合は独立したブランチを並列で実行します。
人間のゲートノード。 任意のノードを人間のゲートとしてマークすると、Tracker は実行を一時停止して選択肢またはフリーフォームのプロンプトを提示します。TUI モードではキーボードナビゲーション付きのスクロール可能なモーダルダイアログとして表示されます。コンソールモードでは stdin/stdout にフォールバックします。
LLM 駆動のノード。 ノードはパイプラインのコンテキストをプロンプトに自動注入して言語モデルを呼び出せます。トレースのイントロスペクションにより、TUI ダッシュボードとコンソール出力の両方でトークン数、レイテンシ、プロンプト/補完テキストを確認できます。
自動チェックポイント。 Tracker はノードの遷移ごとにパイプラインの状態を .tracker/runs/<runID>/checkpoint.json に保存します。実行が失敗または中断された場合、最後のチェックポイントから再開できます。アーティファクトディレクトリが存在する場合、チェックポイントはデフォルトで有効になります。手動の設定は不要です。
バックオフ付きリトライ。 失敗したノードは設定可能なバックオフで自動的に再試行されます。チェックポイントはリトライ回数を追跡するため、再開した実行は中断した場所から再開します。
TUI ダッシュボード。 bubbletea ベースのターミナル UI がライブのノードリストとステータスインジケーター、LLM トレースの詳細、人間のゲート用のスクロール可能なモーダルプロンプトを表示します。ヘッドレス環境や CI 環境では --no-tui で無効化できます。
組み込み可能なエンジン。 NDJSON の公開イベントストリームが Tracker の内部ログと同じデータを運びます: コスト、実行経路、ゲートの遷移、プロバイダーごとのトークン使用量。承認ゲートをターミナルではなく Slack やメール、独自のフロントエンドに振り向けられます。独自フロントエンドは適合性テストスイートで検証できます。
課金対応の一時停止。 プロバイダーのクレジットを使い切った実行は、失敗ではなく paused_billing 状態に入ります。並列に分岐した実行の途中でも同様です。残高を補充して tracker -r <run-id> で再開できます。実行前には tracker estimate がコストと規模を見積もります。価格表にないモデルは、静かな $0.00 ではなく明示的な unpriced フラグになります。
コンテキストを見るツール安全性。 すべてのツール呼び出しの前に安全チェックが走り、ツール、引数、呼び出される状況の3つを見ます。フェイルクローズドです: チェック自体が壊れた場合、その1回の呼び出しだけをブロックし、理由をツールの結果としてエージェントに返します。エージェントのステップは Landlock によるファイルシステムのジェイル内で書き込みます。
仕組み
Tracker は .dip ファイルを DAG に解析してサイクルの有無を検証し、実行計画を構築します。エンジンはグラフをノードごとに辿り、各ノードをその型に基づいてハンドラーに振り分けます。パイプラインのコンテキストはノード間を流れ、前のステップの出力が後のステップの入力として利用できます。
アーティファクトは .tracker/runs/<runID>/ に実行ごとの1ディレクトリとして格納されます。チェックポイント、LLM トレース、ノードが生成したファイルはすべてここに入ります。実行 ID は起動時に生成され、チェックポイントの再開を通じて一貫して使われます。
ハンドラーレジストリはノード型を実装にマッピングします。組み込みハンドラーはシェルコマンド、LLM 呼び出し、人間のゲートをカバーしています。カスタムハンドラーは Go API を通じて追加できます。
必要要件
- Go 1.24+(ソースからビルドする場合)
- パイプラインを定義した
.dipファイル - LLM ノードの場合:モデルプロバイダーの API 認証情報(環境変数で設定)
