{"adoption": {"forks": 612, "observed_at": "2026-08-28T04:06:29.426993+00:00", "stars": 2236}, "canonical_url": "https://ross.abutalabs.com/products/fourkeys", "card": {"archived": true, "artifact_type": "application", "description": "Platform for monitoring the four key software delivery metrics of software delivery", "domain": ["analytics", "monitoring", "developer-tools"], "enriched": true, "function": ["monitoring", "analytics", "webhook", "data-visualization", "etl"], "health_score": 10, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["dora-team/fourkeys"], "name": "dora-team/fourkeys", "platform": ["cloud", "python"], "pushed_at": "2024-01-23T16:12:12+00:00", "repo": "dora-team/fourkeys", "stars": 2236, "tags": ["dora-metrics", "devops-metrics", "bigquery", "cloud-run", "pubsub", "software-delivery-performance", "unmaintained", "devops", "docker"], "topics": ["metrics", "monitoring"], "urls": [], "use_cases": ["measure my team's software delivery performance", "track DORA four key metrics for GitHub or GitLab projects", "monitor deployment frequency and lead time for changes", "baseline our devops performance before and after new tooling", "visualize change failure rate and time to restore service", "collect webhook events from GitHub into a metrics dashboard"], "what_it_is": "Four Keys is a self-hostable platform from Google's DORA team that collects events from development environments like GitHub and GitLab via webhooks and computes the four key software delivery metrics: deployment frequency, lead time for changes, time to restore services, and change failure rate. It runs on Google Cloud (Cloud Run, Pub/Sub, BigQuery) and renders the metrics in a dashboard.", "when_to_avoid": ["the repository is no longer maintained, so you need active support or updates", "your project ships libraries with releases but no deployments", "you are not using Google Cloud and cannot easily adapt the Cloud Run/Pub/Sub/BigQuery architecture", "you need a turnkey hosted metrics product rather than a reference platform"], "when_to_choose": ["you want to measure DORA's four key software delivery metrics", "your project lives in GitHub or GitLab and has deployments", "you are already on Google Cloud and can use Cloud Run, Pub/Sub, and BigQuery", "you want a forkable reference implementation for building your own metrics instrumentation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fourkeys", "repo": "dora-team/fourkeys", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "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:29.426993+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:29.426993+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:44:17.102938+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d052e0c63f8d267f5677120c6e0c2354365d12e878c34de264aed373ba63861e", "fetched_at": "2026-08-28T04:06:29.426993+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dora-team/fourkeys"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2247, "days_push": 953, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}