MammothはパイプラインのグラフをDOTファイルから読み込み、各ステージをLLMコーディングエージェントに振り分けながらノードごとに実行する。ワークフローを有向グラフとして定義する — ノードはタスク、エッジはトランジション、属性で動作を設定 — あとはmammothが実行、リトライ、チェックポイント、ヒューマン承認ゲートをすべて処理する。
インストール
# From source
go install github.com/2389-research/mammoth/cmd/mammoth@latest
# Or grab a binary from GitHub releases
# macOS (arm64/amd64), Linux (arm64/amd64)
何をするのか
DOTファイルからパイプライン実行。 ビルドの各ステージ — セットアップ、コード生成、テスト、検証、インテグレーション — をノードとして.dotファイルに書く。Mammothがグラフを解析し、21のlintルールで検証し、startからexitまでDAGを歩く。
マルチプロバイダーLLMエージェント。 各codegenノードはOpenAI、Anthropic、Geminiをバックエンドにしたエージェントセッションを起動する。APIキーを設定すればmammothがプロバイダーを選ぶか、ノード属性でモデルを固定できる。
チェックポイントと自動再開。 成功したノードごとにチェックポイントを保存する。実行が失敗または中断されても、mammoth pipeline.dotは中断したところから再開する。クリーンスタートを強制するには--freshを使う。
並列ブランチとファンイン。 複数のブランチに作業をフォークして並列実行し、設定可能なジョインポリシー(all-success、majority、first-success)でファンインノードに結果をマージする。
ヒューマンゲート。 shape=houseのノードは実行を一時停止してヒューマン入力を促す — 承認、却下、またはガイダンスの提供。無人実行向けのデフォルト選択付き設定可能タイムアウト。
検証ノード。 八角形のノードはシェルコマンド(swift testやgo vetなど)を実行し、終了コードで進行をゲートする。LLMなし、トークンコストなし、確定的なpass/fail。
ターミナルUI。 --tuiでライブDAG、イベントログ、ノード詳細を表示するBubble Teaダッシュボードを起動。またはmammoth serveでウェブUIを使う。
仕組み
3つのレイヤー、下から順に:
- llm/ — OpenAI Responses API、Anthropic Messages API、Geminiをストリーミング、リトライ、バックオフを備えた単一インターフェースに正規化するユニファイドクライアント。
- agent/ — ツール呼び出し(ファイル読み書き、シェル実行、パッチ適用)でLLMを駆動するエージェントループ。ステアリング、ループ検出、サブエージェント生成を含む。
- attractor/ — パイプラインエンジン。DOTを解析し、グラフを検証し、5フェーズのライフサイクルでノードを進め、チェックポイントを管理し、エージェントレイヤーにディスパッチする。
パイプラインファイルは設定のためのノード属性を持つ標準DOT構文を使う:
digraph build_app {
setup [shape=box, prompt="Set up the project structure"]
implement [shape=box, prompt="Implement the core logic"]
verify [shape=octagon, command="go test ./..."]
done [shape=doublecircle]
setup -> implement -> verify -> done
verify -> implement [condition="outcome=fail"]
}
必要要件
- Go 1.25以上(ソースからビルドする場合)
- 少なくとも1つのLLM APIキー:
ANTHROPIC_API_KEY、OPENAI_API_KEY、またはGEMINI_API_KEY - Graphviz(オプション、SVG/PNGグラフ描画用)
