{"adoption": {"forks": 304, "observed_at": "2026-08-28T04:07:23.786710+00:00", "stars": 2814}, "canonical_url": "https://ross.abutalabs.com/products/acme-dns", "card": {"archived": false, "artifact_type": "service", "description": "Limited DNS server with RESTful HTTP API to handle ACME DNS challenges easily and securely.", "domain": ["security", "networking", "self-hosted", "developer-tools"], "enriched": true, "function": ["networking", "http-server", "api-framework", "security", "self-hosted"], "health_score": 89, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["acme-dns/acme-dns"], "name": "acme-dns/acme-dns", "platform": ["go", "self-hosted", "cross-platform"], "pushed_at": "2026-06-08T14:11:46+00:00", "repo": "acme-dns/acme-dns", "stars": 2814, "tags": ["acme", "letsencrypt", "dns-challenge", "txt-records", "tls-certificates", "certificate-automation", "automation", "linux", "docker"], "topics": ["acme-challenge", "acme-dns", "dns-server", "tls-certificate", "letsencrypt"], "urls": [], "use_cases": ["automate letsencrypt dns-01 challenges", "renew tls certificates automatically without exposing dns provider api keys", "self-host a dns server for acme challenges", "issue wildcard certificates via dns challenge", "secure certificate automation for many servers", "serve custom dns records alongside acme challenges"], "what_it_is": "acme-dns is a simplified DNS server with a RESTful HTTP API designed to automate ACME DNS challenges for Let's Encrypt and other ACME certificate authorities. It limits API credentials to TXT record updates on dedicated subdomains, so leaked keys have minimal security impact.", "when_to_avoid": ["http-01 challenges suffice for your setup", "you cannot delegate a subdomain via CNAME from your zone", "you need a full-featured authoritative dns server"], "when_to_choose": ["your dns provider has no API or its API keys grant too much power", "you need automated, unattended certificate renewal with dns-01", "you want wildcard certificates without storing powerful dns credentials on servers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/acme-dns", "repo": "acme-dns/acme-dns", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "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:07:23.786710+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:23.786710+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:13:28.311861+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1dcb5a6c0d1e9301fb70fa3bf96b03656d1242443607eca18fdcbce8e6db08ab", "fetched_at": "2026-08-28T04:07:23.786710+00:00", "kind": "readme", "missing": false, "url": "https://github.com/acme-dns/acme-dns"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 86, "longevity": 100, "rhythm": 69}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3580, "days_push": 86, "days_rel": 209, "gap_med": 0.0, "n_releases_24m": 3}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}