# graphile/worker

High performance Node.js/PostgreSQL job queue (also suitable for getting jobs generated by PostgreSQL triggers/functions out into a different work queue)

Repository: https://github.com/graphile/worker
Canonical: https://ross.abutalabs.com/products/worker
Homepage: http://worker.graphile.org/
Language: TypeScript
License: MIT
License Family: permissive
Topics: postgresql, node, worker, job-queue, graphile, nodejs, postgres, queue
Last push: 2026-08-06T09:10:17+00:00

## Health v2 (maintenance only)
Score: 75/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 96, release rhythm 35, longevity 100
- inputs: {"age_days": 2742, "days_push": 27, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2378, forks 124 (observed 2026-08-28T04:06:42.119415+00:00)

## What it is
Graphile Worker is a high-performance job queue for PostgreSQL that runs background jobs on Node.js, supporting retries with exponential backoff, cron scheduling, and job creation via SQL triggers or functions. It keeps infrastructure simple by using Postgres as the queue store, achieving low-latency job pickup through LISTEN/NOTIFY.

## Use cases
- run background jobs like sending emails without blocking HTTP responses
- schedule recurring cron tasks with minute-level granularity
- process jobs created by PostgreSQL triggers or stored procedures
- queue PDF generation or calculation tasks from a Node.js app
- replace a dedicated message broker with just Postgres and Node
- debounce and cancel scheduled jobs
- implement an outbox pattern without extra infrastructure

## When to choose
- your stack is already PostgreSQL-backed and you want to avoid running a separate broker like RabbitMQ or Redis
- you need reliable at-least-once execution with automatic retries and backoff
- jobs must be enqueued from inside the database via SQL
- you want a simple, low-maintenance setup for a small engineering team
- you need high throughput (up to ~10k jobs/sec) with millisecond latency

## When to avoid
- you need multi-language workers beyond Node.js
- you require advanced routing, fan-out, or complex message semantics of a dedicated broker
- your team already operates and maintains a mature message-queue system
- you need queue features like dead-letter exchanges or per-queue ACLs

## Facets
- artifact type: library
- maturity: active
- function: message-queue, scheduling, workflow-automation, cli, developer-tools
- domain: backend, databases, developer-tools, web-development
- platform: cli, cross-platform
- tags: job-queue, postgresql, background-jobs, cron, listen-notify, typescript, task-scheduling, outbox-pattern, automation, nodejs

## Member repositories
- graphile/worker (main) score 75

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:06:42.119415+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:34:54.177882+00:00, confidence not recorded.
  - readme: https://github.com/graphile/worker (fetched 2026-08-28T04:06:42.119415+00:00, sha e9178923f8f2)
  - homepage: http://worker.graphile.org/ (fetched 2026-08-29T10:16:11.033231+00:00, sha adcc7a9f30b1)
  - site_page: https://worker.graphile.org/docs (fetched 2026-08-29T10:16:11.035837+00:00, sha 0ea48f3f0a28)
  - site_page: https://worker.graphile.org/docs/cli (fetched 2026-08-29T10:16:11.043856+00:00, sha 2cb5fa71fbed)
  - site_page: https://worker.graphile.org/pricing (fetched 2026-08-29T10:16:11.041408+00:00, sha bf1d6b7a8b5d)
  - site_page: https://worker.graphile.org/releases (fetched 2026-08-29T10:16:11.038105+00:00, sha 8471d3c7255a)
- Data as of 2026-08-30T08:39:29.467469+00:00.
