Docs › Dagster with RunVouch

Dagster with RunVouch

Schedules and sensors in Dagster are executed by the dagster-daemon. When it is down, unhealthy or pointed at a stale code location, nothing runs and the UI shows a status you have to go and look at.

How it runs on Dagster

Inside an op or asset with the Python client, or wrap the run launcher command for a whole job. One agent per job or per critical asset.

Store the key

An environment variable on the code location (Dagster+ env vars, or the container env for OSS); read it with EnvVar("RUNVOUCH_KEY") in a resource.

Wrap the job

from dagster import asset, ScheduleDefinition, define_asset_job, Definitions
import os, runvouch

@asset
def nightly_report():
    with runvouch.vouch("nightly-report", evidence=lambda: {"report": os.path.exists("out/report.html")}) as run:
        rows = extract()
        run.tool("llm.summarise", {"rows": len(rows)}, cost=0.03)
        write_report(rows)

job = define_asset_job("nightly_report_job", selection=[nightly_report])
defs = Definitions(assets=[nightly_report], jobs=[job],
    schedules=[ScheduleDefinition(job=job, cron_schedule="0 2 * * *")])

rv fails open: if RunVouch is unreachable the job still runs and you get one warning line.

Register the cadence and caps

rv agent nightly-report --cadence 24h --grace 30m --max-runtime 1h --evidence --cap-run-cost 2

Register the agent once, from anywhere with the key. Cadence is what turns a schedule that stopped into an alert; --evidence makes a run without evidence a failure; the caps pause the agent when it overspends.

What goes silent on Dagster

What RunVouch detects

AlertWhat it means here
MISSEDcadence plus grace passed and no run started
FAILEDnon-zero exit or a reported failure, with the stderr excerpt
NO_EVIDENCEthe run said ok but the file, URL or assertion you required is missing
STALLEDa run started and never ended within max runtime
RETRY_STORMthe same tool called with identical input many times in one run
BUDGET_RUN / BUDGET_DAYcost cap crossed; the agent is paused until you resume it
DRIFTduration or output size far off its 7-run baseline

Need a key? Get a free key · Stuck? contact