How it fits

Freshet decides what to rebuild; your scheduler rebuilds it; state records what was built. Here is how the pieces connect.

Plan, run, commit

Freshet is a planner, not a scheduler. It reads your models and the last committed state, and answers one question: what must rebuild, and why. Something else runs the plan. Once that run succeeds, Freshet records it in state, so the next plan starts from there.

Freshet and the schedulers that run its plans Freshet reads your models and the last committed state, decides what must rebuild, and hands that plan to dagron, Airflow, a SQL client or your own platform; once the run succeeds, Freshet commits the new state. RUNNERS READ PLAN RUN SUCCEEDED COMMIT Your models models/*.sql + config State state.json or /state/v1 Freshet decides what must rebuild lineage · fingerprints partitions · CU cost CLI · daemon · Python · C dagron freshet submit Airflow freshet-airflow SQL client --sql: psql, snowsql, bq Your platform freshet-serve, bindings LEGEND input planner runner state hand-off commit, after success

Through dagron

dagron takes a plan whole: dagron-state turns it into one run with a task per model, wired from the plan's own edges, and each task runs your --command. Self-hosted, you point freshet at your dagron and keep state in a file. On dagron Cloud, one edge address and one token cover both: runs go to your workspace, and state goes to hosted state.

Freshet through dagron, self-hosted or dagron Cloud On dagron Cloud, freshet calls one edge with a workspace token: state goes to hosted state with compare-and-swap commits, and plans go to the workspace's dagron, which turns each plan into a run with one task per model. Self-hosted, freshet keeps a state file and submits to your own dagron directly. DAGRON CLOUD EDGE DAGRON: WORKSPACE OR YOUR OWN TOKEN FILE STATE RUNS PLAN RUN TASKS SELF-HOSTED --to freshet plan · submit · commit state.json a file you keep Edge one URL, one token Hosted state /state/v1 · CAS dagron-api plans/submit dagron-state plan → run graph Engine runs the graph Task pods your --command LEGEND client dagron Cloud self-hosted hosted state state file
Self-hosted dagrondagron Cloud
Submit tohttp://<your-dagron>:8080/api/state/plans/submithttps://<your-edge>/api/state/plans/submit
State--state state.json: one writer at a time--state https://<your-edge>/state/v1: any number of writers
Commitlast writer winscompare-and-swap with --expect-version; exit 3 if another commit landed first
You rundagron and its databasenothing: tasks run on your compute or on dagron's workers

Other schedulers

Anything that can run a command in order can run a plan. Airflow gets it as a DAG through freshet-airflow. A SQL client runs the --sql statements top to bottom. Your own platform can call the daemon or the Python package and schedule the models itself. They all follow the same rule: commit only after the run succeeds.