AI Deck

Trigger.dev — An open source platform for running AI workflows and background jobs in TypeScript with no timeouts

An open source development platform built by API Hero Ltd. in the UK. You can deploy functions written in TypeScript directly as background tasks, and everything you need for production ─ automatic retries, queues, scheduled runs, and real-time monitoring ─ is included from the start. Its defining feature is that there is no limit on execution time. Long-running work that would time out after seconds or minutes on serverless platforms such as Vercel or AWS Lambda can simply run to completion. This suits AI agents in particular, where a task may call an LLM repeatedly, pause for human approval, and take tens of minutes. Since its release in 2022 it has been adopted by products such as Cal.com and Supabase.

Key Features

  • Execution with no timeouts: There is no upper limit on how long a task can run, and this is not restricted even on the free plan. Video encoding, large data imports, and long-running AI agent reasoning loops can be written straightforwardly instead of being worked around
  • Your TypeScript code becomes the task: There is no custom DSL or YAML to learn ─ you define a function and deploy it. It works alongside frameworks such as Next.js, Remix, Nuxt, SvelteKit, and Astro, and services such as Vercel, AWS, and Supabase. Python execution is also supported
  • Automatic retries and queue control: Failed tasks are retried automatically according to your configuration, and you can set concurrency limits and queue priorities. Throttling to match an external API’s rate limits is handled in code
  • Waitpoints for human approval: A run can pause mid-execution and resume after an approval or an external HTTP callback. Human-in-the-loop workflows, where a person checks before the AI proceeds, can be built without writing your own state management
  • Realtime updates streamed to the frontend: Task progress and LLM output can be streamed to your frontend. The connection is designed to survive page refreshes and redeployments
  • Observability through the dashboard: Traces, logs, versions, and alerts for each run are visible in the dashboard, and logs and traces can be exported to external monitoring tools via OpenTelemetry
  • Open source and self-hostable: Published on GitHub under the Apache 2.0 license, so you can run it on your own infrastructure or use the managed cloud version

Pricing

PlanMonthly priceWhat’s included
Free$0$5 of credits per month, 20 concurrent runs, 1-day log retention, 5 team members, 10 schedules
Hobby$10$10 of credits per month, 50 concurrent runs, 7-day log retention, 5 team members, 100 schedules
Pro$50$50 of credits per month, 200+ concurrent runs (additional 50 for $10), 30-day log retention, 25+ team members, dedicated Slack support
EnterpriseContact salesEverything in Pro plus custom log retention, SSO, role-based access control, SOC 2 report, and priority support

Task duration is unlimited on every plan. Usage beyond the credits included in your plan is billed per use, with per-second compute pricing that varies by machine size plus a run invocation fee of $0.25 per 10,000 runs.

Pricing is as of August 2026. Check the official site for the latest pricing.

Pros & Cons

Pros

  • With no execution time limit, you no longer have to split work up just to avoid serverless timeouts
  • Retries, queues, schedules, and monitoring ─ the parts that are tedious to build yourself ─ are there from day one
  • Tasks are ordinary TypeScript functions, so the learning curve is gentle and it fits into an existing codebase easily
  • Being open source and self-hostable, it is also an option when you want to avoid depending on a single vendor
  • The free plan offers 20 concurrent runs and unlimited tasks, which is enough to try it out on a personal project

⚠️ Cons

  • It centers on TypeScript and Node.js, making it harder to adopt in projects built mainly in other languages
  • Usage above the included credits is billed per use, so costs are hard to estimate until your workload is predictable
  • Log retention on the free plan is only one day, which is too short for investigating incidents after the fact
  • Self-hosting brings flexibility but also leaves scaling and monitoring for you to operate
  • The dashboard and documentation are English only, and there is limited material in other languages

Comparison with Similar Services

ComparisonTrigger.devInngestTemporalUpstash Workflow
Main useAI workflows and background tasksEvent-driven workflowsLong-running distributed workflowsLong-running work on serverless
Main languageTypeScript (Python execution too)TypeScript / Python / GoGo / Java / Python / TypeScript etc.TypeScript / Python
Self-hostingYes (Apache 2.0)YesYes (open source)No, managed only
Execution time limitNoneNoneNonePer step, depends on the runtime
Ease of adoptionJust write a functionJust write a functionSteep conceptual learning curveWraps your existing functions
Free tierYesYesFree when self-hostedYes

Who Is It For

  • TypeScript and Next.js developers who keep running into serverless timeouts
  • Anyone who wants to run long AI agents and workflows that call an LLM many times, reliably in production
  • Teams that want to move heavy async work ─ video conversion, bulk data processing, scheduled batches ─ out of the main application
  • Developers who need workflows with a human approval step but do not want to write their own state management
  • Teams that want to avoid vendor lock-in and keep the option of moving to self-hosting

Summary

Trigger.dev turns code written in TypeScript into background tasks that do not fall over, do not get cut off, and are visible while they run. Saving the effort of building retries and queues by hand has always been useful, but the value has become clearer now that more work looks like an AI agent ─ long-running, pausing for human judgment, and needing to show progress to the user. Since task duration is unlimited even on the free plan, a good starting point is to move one heavy job across and see how it feels to operate.

← Blog