Workers
A worker is a long-running background process that runs alongside your app container. It uses the same built image as your app, so no separate repository or Dockerfile is needed — just a different command.
Workers are available on Starter, Pro, and Power project plans.
What workers are for
Workers are useful for processing background jobs, running queues, handling scheduled tasks, or any work you don't want running in the same process as your web server.
Common patterns:
- A BullMQ worker processing jobs from a Redis queue
- A cron-like process running scheduled tasks
- A separate process consuming a message queue
Configuring a worker
From your project's Configure tab, enable the Worker service and set a command. This is the command that runs in the worker container. For example:
node dist/worker.js
or with Bun:
bun run src/worker.ts
The worker shares the same environment variables, provisioned services, and /data volume as your main app container. It starts alongside the app and restarts automatically if it crashes.
Worker vs app process
| App | Worker | |
|---|---|---|
| Handles HTTP requests | Yes | No |
| Starts on deploy | Yes | Yes |
| Shares env vars | — | Yes |
Shares /data volume |
— | Yes |
| Restarts on crash | Yes | Yes |
Availability
Workers require a paid project plan (Starter or above). Projects using the free dynamic allowance run a single process only.