{"adoption": {"forks": 124, "observed_at": "2026-08-28T04:06:42.119415+00:00", "stars": 2378}, "canonical_url": "https://ross.abutalabs.com/products/worker", "card": {"archived": false, "artifact_type": "library", "description": "High performance Node.js/PostgreSQL job queue (also suitable for getting jobs generated by PostgreSQL triggers/functions out into a different work queue)", "domain": ["backend", "databases", "developer-tools", "web-development"], "enriched": true, "function": ["message-queue", "scheduling", "workflow-automation", "cli", "developer-tools"], "health_score": 78, "homepage": "http://worker.graphile.org/", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["graphile/worker"], "name": "graphile/worker", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-06T09:10:17+00:00", "repo": "graphile/worker", "stars": 2378, "tags": ["job-queue", "postgresql", "background-jobs", "cron", "listen-notify", "typescript", "task-scheduling", "outbox-pattern", "automation", "nodejs"], "topics": ["postgresql", "node", "worker", "job-queue", "graphile", "nodejs", "postgres", "queue"], "urls": [], "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"], "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.", "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"], "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"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/worker", "repo": "graphile/worker", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.119415+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:54.177882+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9178923f8f2b19694273710b6f0bd1f8779bfd6b1e79e02b133894eb89d9f09", "fetched_at": "2026-08-28T04:06:42.119415+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/worker"}, {"content_hash": "adcc7a9f30b18485836929124ab6d7f249770736a6a2f4a24193b38973de3e7b", "fetched_at": "2026-08-29T10:16:11.033231+00:00", "kind": "homepage", "missing": false, "url": "http://worker.graphile.org/"}, {"content_hash": "0ea48f3f0a289e7f2a9bb9aeda4a73dc2af3dde1753b70d978dda18c892ea1f7", "fetched_at": "2026-08-29T10:16:11.035837+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs"}, {"content_hash": "2cb5fa71fbedb5b05074dbbece36cea449846b9755c29e120d4f9c4ff6ceb5d5", "fetched_at": "2026-08-29T10:16:11.043856+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/docs/cli"}, {"content_hash": "bf1d6b7a8b5da6806412377b0f093a52d84d424a03bda76f69050bd926c5f487", "fetched_at": "2026-08-29T10:16:11.041408+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/pricing"}, {"content_hash": "8471d3c7255a203fbe4e8eb74e28e3c0b01176ed1a53131fe9a04a3bbd1f9d7d", "fetched_at": "2026-08-29T10:16:11.038105+00:00", "kind": "site_page", "missing": false, "url": "https://worker.graphile.org/releases"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2742, "days_push": 27, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}