Modules
Build and insert DAG-based Oban job workflows.
Runtime dependency resolution for workflow jobs.
Detects when a whole workflow has finished and announces it exactly once.
Runtime configuration and repo resolution.
Directed Acyclic Graph validation for workflow step definitions.
Capture and inspect full LLM context windows at each workflow step.
Schema for capturing full LLM request/response payloads per workflow step.
PubSub broadcasting for workflow step lifecycle events.
Base module for workflow steps that call an LLM API.
Installs and updates Baton's database schema.
Multi-model fan-out pattern for workflow steps.
A single step within a workflow DAG.
All database access for workflow_nodes.
Oban plugin that keeps workflows healthy.
Behaviour for computing the cost of an LLM call.
A reference Baton.Pricing implementation with a small built-in price
table (USD per million tokens).
Read queries powering the Workflow LiveView dashboard.
Completion-triggered rescheduling of downstream workflow jobs.
Pass structured results between workflow steps.
Deletes Baton's own rows once the Oban job they belong to is gone.
Record and query LLM usage statistics per workflow step.
Ecto schema for per-step LLM usage stats.
Telemetry is Baton's primary integration surface. The PubSub events and LiveView dashboard are optional layers on top; everything observable is also emitted as telemetry, so you can integrate without Phoenix.
Drop-in replacement for Oban.Worker with DAG dependency gating,
result passing, PubSub broadcasting, and retry idempotency.