Wire it up. Let it rip.
Multi-agent LLM pipelines that won’t surprise you on the bill.
Define workflows in a small text file. Run them locally with budget caps, parallel branches in git worktrees, and a live TUI. Every run is a git commit you can diff and replay.
- Hard cost ceilings.
--max-cost 500 --max-tokens 100000 --max-wall-time 30m. Halts mid-run with a snapshot. - Parallel branches in worktrees. Three model variants race in isolated checkouts. No filesystem stomping.
- Every run is a git commit. Replay any past run, diff the artifacts, export as a portable bundle.
Install + run in 60 seconds
# 1. Install — pick one
brew install 2389-research/tap/tracker
# or
go install github.com/2389-research/tracker/cmd/tracker@latest
# 2. Run a built-in workflow (no file needed)
tracker build_product
# 3. Inspect what happened
tracker diagnoseMore commands
# Verify your providers + tools
tracker doctor
# Run with the Claude Code agent backend
tracker --backend claude-code build_product
# Run autonomously — LLM judges every gate
tracker --autopilot mid build_product
# Headless — POST gates to your service
tracker --webhook-url https://factory.example.com/gate build_product
# Override workflow params + cap budget
tracker --param model=claude-opus-4-7 \
--max-cost 500 --max-wall-time 30m build_product
# Drive from any language: tracker --json | jq + parse activity.jsonl
tracker --json build_productFour flagship workflows are embedded in the binary — no cloning, no examples directory.
Or write your own in a .dip file (see below).
How is this different?
Tracker is not a replacement for Temporal or Airflow — those are excellent general workflow schedulers but they don’t model what LLM pipelines actually need (tokens, dollars, parallel branches with filesystem isolation, gates that resume from a webhook). And it’s not a Python library like LangGraph or LangChain — you don’t wire your own observability or eat your own surprise bills.
It’s the local-first, pipelines-as-text-in-git tool you reach for when “just run it” means “run it inside a budget, with a live TUI, and let me diff what happened later.”
What a pipeline looks like
Pipelines are .dip files. Yes, it’s a small DSL — the whole grammar
fits on one page; the snippet below is most of what you need.
agent Draft
model: claude-sonnet-4-6
prompt: "Draft a brief on ${params.topic}."
human Review
mode: yes_no
edges
Draft -> Review
Review -> Done when ctx.outcome = successDriving from Python or another language? Run the binary
with tracker --json and parse activity.jsonl.
A Go library API is available for in-process embedding.
What you get
Kill a runaway agent at $5, not $500.
Hard caps on tokens, cost (cents), and wall-time as CLI flags or workflow defaults. The engine checks between every node and halts with a CostSnapshot on breach.
--max-cost 500 --max-tokens 100000 --max-wall-time 30m
Race three model variants in parallel; pick the winner.
Fan out to concurrent branches in isolated git worktrees, fan in to a join. Built-in pattern for cross-model races without filesystem stomping.
tracker ask_and_execute
See every token, tool call, and gate in a live TUI.
Bubble-tea dashboard, append-only activity log, per-node streams, search, drilldown. Every event also lands in activity.jsonl for grep + post-hoc analysis.
Pause for human approval; resume from a webhook.
Choice, freeform, hybrid, yes/no, and interview gates. Or POST the gate to your service and block on the callback. Per-gate timeout and outbound auth.
Steps pass typed JSON to each other — no glue code.
Declare what an agent produces with writes: [field, field]; downstream steps read those fields as typed values. The runtime validates the output, and a self-healing cascade rescues the common “LLM returned prose around the JSON” case.
tracker diagnose tells you which node burned the budget.
Deterministic vs. flaky retries, escalation patterns, stalled loops. Run it after any failure for a triage report. Available as a Go library call too.
Stream pipeline status to your own users.
Every event — node started, gate hit, cost updated, run completed — lands in
activity.jsonl on disk and on stdout via tracker --json. Pipe it to your
customer dashboard, Slack bot, or status page. Webhook gates POST to your URL on every
human-decision point so approvals can render in your own app, not just the TUI.
tracker --json build_product | # pipe into your event bus / SSE relay / dashboardFour providers, one pipeline
Mix models freely. Route everything through a Cloudflare AI Gateway with --gateway-url for central analytics, caching, and 429 relief.
Anthropic
claude-opus-4-7 · claude-sonnet-4-6 · claude-haiku-4-5
OpenAI
gpt-5.4 · gpt-5.4-mini · gpt-4.1 · o3 · o4-mini
Gemini
gemini-3.1-pro-preview · gemini-2.5-pro · gemini-2.5-flash
OpenAI-Compat
Any OpenAI-compatible endpoint
OpenRouter, vLLM, local proxies
Ready to build?
Install, run a built-in workflow, watch the TUI. If it survives tracker diagnose,
write your own pipeline next.