Agent classes / Scheduled and ops agent / Event-driven agent jobs with great DX
Event-driven agent jobs with great DX for a scheduled and ops agent
Updated 2026-10-27 (newest stored date on this page) · score asOf 2026-09-14 (stale)
The class: Runs a job on a queue or a clock, is safe to retry, and alerts when the job or its traces go dark.
- Idempotency key on every retry
- An alert when trace ingestion drops
Depot Pick: Inngest
When not to use it: Polyglot extreme scale — Temporal; raw HTTP delayed callbacks without a workflow runtime — Upstash QStash; pure Python GPU jobs — Modal.
Runner-up: Trigger.dev.
No single-unit sourced price comparison for this job (no_candidate_has_sourced_price_in_job_unit:queue_event).
Failure modes this class and job share (5)
- Partial tool success: Require a per-item status and a failure count. Success for the task requires the failed count to be zero or explicitly handed to a retry queue.
- Observability gap: Alert on a drop in trace ingestion and on certificate expiry for the trace host. Do not treat a missing trace as a successful quiet run.
- Runaway spend: Set a budget and a tool-call cap per task. Alert when spend jumps. Stop the run at the cap instead of summarizing a partial trace as success.
- Tool loop: Hash the last several tool names and arguments. Stop when the same call repeats and the observation did not change. Cap tool calls per task.
- Non-determinism: Run the task more than once and compare the end state, not a single transcript. Record the trial count next to any success rate you cite.
Free options this class uses (1)
- Hatchet (dev_tool, oss) — source, asOf 2026-10-25