What is Trigger.dev?
Trigger.dev lets you write reliable background tasks and AI agents as plain async TypeScript code. Tasks run in fully managed, isolated environments — with no timeouts, built-in retries, automatic queuing, and real-time observability through a dashboard and Realtime API. You write tasks alongside your existing application code, deploy with a single CLI command, and trigger them from anywhere: a web request, a webhook, a cron schedule, or another task.Quickstart
Get your first task running in under 5 minutes.
How it works
Understand the architecture, dev mode, and run lifecycle.
Writing tasks
Learn how to define, configure, and structure tasks.
AI agents
Build durable, long-running AI agents with built-in waiting and human-in-the-loop.
Key concepts
Tasks
A task is a named, exported async function defined with thetask helper from @trigger.dev/sdk. Tasks can accept a typed payload, configure retries, set concurrency limits, and call other tasks as subtasks.
Runs
A run is a single execution of a task. When you trigger a task, Trigger.dev creates a run, queues it, and executes it in an isolated environment. Each run has full trace logs, timing data, and error details in the dashboard. See Runs for details.Triggering
Tasks can be triggered from your backend using the SDK’stasks.trigger method, or directly from a task using anotherTask.trigger(). You can trigger one task, batch-trigger many, or use triggerAndWait to wait for a result inline. See Triggering tasks.
Scheduled tasks
Scheduled tasks run on a cron schedule. Define them withschedules.task and they execute automatically on the interval you configure. See Scheduled tasks.
Checkpointing and waiting
Tasks can pause execution to wait for a duration, an event, a subtask result, or a human approval — without holding compute resources. The Checkpoint-Resume System snapshots the task state and restores it when the wait resolves. See Waits and How it works.Realtime API
The Realtime API lets you subscribe to run status updates and stream task output directly to your frontend using React hooks. See Realtime API and React hooks.Core features
No timeouts
Tasks run for as long as they need — minutes, hours, or days.
Automatic retries
Configure exponential backoff retry policies per task.
Elastic scaling
Tasks scale automatically based on load with no infrastructure to manage.
Concurrency & queues
Control how many tasks run in parallel and queue excess work.
Human-in-the-loop
Pause a run and wait for a human to approve or provide input.
Full observability
Every run has structured trace logs and timing data powered by OpenTelemetry.
Build extensions
Build extensions let you customize the Docker image that runs your tasks — installing system packages, adding Python, bundling browser binaries, and more.| Extension | What it does |
|---|---|
prismaExtension | Run Prisma migrations and generate the client at build time |
pythonExtension | Execute Python scripts inside tasks |
playwright | Use Playwright for browser automation |
ffmpeg | Use FFmpeg for video and audio processing |
aptGet | Install arbitrary system packages via apt-get |
syncEnvVars | Automatically sync environment variables to Trigger.dev |
Deployment options
You can run Trigger.dev in two ways:- Trigger.dev Cloud — Fully managed hosting at cloud.trigger.dev. Free tier available.
- Self-hosted — Deploy Trigger.dev on your own infrastructure using Docker or Kubernetes. See Self-hosting.
Getting help
Discord
Join the community Discord for questions, help, and announcements.
GitHub
Browse the source, open issues, and contribute on GitHub.
X (Twitter)
Follow for updates, tips, and new feature announcements.
Schedule a call
Talk directly with the founders if you need help getting started.