{"adoption": {"forks": 181, "observed_at": "2026-08-28T04:04:59.332975+00:00", "stars": 1531}, "canonical_url": "https://ross.abutalabs.com/products/exq", "card": {"archived": false, "artifact_type": "library", "description": "Job processing library for Elixir  - compatible with Resque / Sidekiq", "domain": ["backend", "web-development", "developer-tools", "microservices"], "enriched": true, "function": ["message-queue", "scheduling", "workflow-automation", "middleware"], "health_score": 97, "homepage": null, "language": "Elixir", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["akira/exq"], "name": "akira/exq", "platform": ["elixir", "self-hosted"], "pushed_at": "2026-08-03T17:24:03+00:00", "repo": "akira/exq", "stars": 1531, "tags": ["job-queue", "background-jobs", "redis", "sidekiq-compatible", "resque-compatible", "retries", "elixir"], "topics": ["queue", "job-queue", "exq", "sidekiq", "redis", "resque", "elixir"], "urls": [], "use_cases": ["process background jobs in an Elixir application", "share a job queue between a Rails/Sidekiq app and Elixir services", "retry failed jobs with exponential backoff", "run distributed workers across multiple Erlang nodes", "monitor job stats and processing rates via a web UI", "persist jobs across node restarts"], "what_it_is": "Exq is a job processing library for Elixir that uses Redis as its backing store and is compatible with Resque and Sidekiq job formats. It handles concurrency, persistence, retries with exponential backoff, reliable queueing, stats tracking, and offers an optional web UI.", "when_to_avoid": ["simple in-process OTP GenServer/Task-based work suffices without extra infrastructure", "you don't want the operational overhead of running Redis", "you need a broker other than Redis", "you need scheduled/cron-style jobs as the primary feature"], "when_to_choose": ["you need Redis-backed background job processing in Elixir", "you want Sidekiq/Resque compatibility to integrate with existing Ruby or Python apps", "you need reliable queueing with in-progress job recovery", "you want per-queue concurrency limits and middleware customization"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/exq", "repo": "akira/exq", "role": "main", "score": 92}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "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:04:59.332975+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:59.332975+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:31:22.069108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3e9525d3c57c134ab2bb21fcb6484d4361f48a0f97813b5d47c6b7acac95eea", "fetched_at": "2026-08-28T04:04:59.332975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/akira/exq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 83}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4781, "days_push": 30, "days_rel": 37, "gap_med": 72, "n_releases_24m": 4}, "score": 92, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}