pg-boss is a Node.js job queue that uses PostgreSQL for background processing and asynchronous execution. Applications can add a job in the same database transaction as related data changes, so the job is saved only if that transaction commits. Workers use PostgreSQL SKIP LOCKED to claim jobs concurrently; delivery is at least once, so a handler can run more than once for a job. Queue controls include priorities, rate limits, debouncing, concurrency policies, retries with exponential backoff, and dead-letter queues. Scheduling covers cron and RRULE patterns, job deferral, and dependency-based workflows. Workers support backpressure-aware polling and optional PostgreSQL LISTEN/NOTIFY. Adapters are available for Knex, Kysely, Drizzle, and Prisma. Separate packages provide a web dashboard and a JSON HTTP API proxy. Supported backends include PostgreSQL, CockroachDB, YugabyteDB, Citus, and PGlite. The MIT-licensed software is free and self-hosted. It requires Node 22.12 or higher or Bun, plus PostgreSQL 13 or higher; its documentation says it suits teams familiar with relational databases, SQL, querying, and backups.
Who it is for
pg-boss suits teams already using PostgreSQL who want background jobs without operating another system. Its documentation points to teams comfortable with relational database concepts, SQL, queries, and backups.
What is good
- Jobs can share a transaction with related data changes
- Supports retries, priorities, and dead-letter queues
- Offers cron, RRULE, and dependency-based workflows
- MIT-licensed and self-hosted
What to know first
- Requires Node 22.12 or higher or Bun
- Requires PostgreSQL 13 or higher
- At-least-once delivery can run handlers repeatedly
- A growing backlog can affect the shared job table
Verdict
pg-boss provides scheduling and queue controls within a PostgreSQL-based setup. Account for its runtime and database requirements, and make handlers safe for possible repeated delivery.
pg-boss plans and pricing
All plansCompared on task queue software
- Free plan
- Yes
- Deployment model
- self_hosted
- Custom retry policy
- Yes
- Scheduled jobs
- Yes
- Dead-letter queue
- Yes
- Official SDK languages
- JavaScript, TypeScript

