{"adoption": {"forks": 311, "observed_at": "2026-09-01T02:14:05.986598+00:00", "stars": 1156}, "canonical_url": "https://ross.abutalabs.com/products/acmebot", "card": {"archived": false, "artifact_type": "application", "description": "Automated ACME SSL/TLS certificate management built around Azure Key Vault", "domain": ["security", "cloud-computing", "self-hosted"], "enriched": true, "function": ["security", "deployment", "webhook", "monitoring", "api-framework", "cli"], "health_score": 100, "homepage": "https://acmebot.dev/", "language": "C#", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["polymind-inc/acmebot"], "name": "polymind-inc/acmebot", "platform": ["cloud", "serverless", "cli"], "pushed_at": "2026-08-31T05:28:47+00:00", "repo": "polymind-inc/acmebot", "stars": 1156, "tags": ["acme", "lets-encrypt", "ssl-tls", "certificate-management", "azure-key-vault", "dns-01", "azure-functions", "wildcard-certificates", "certificate-renewal", "devops", "automation", "web-server"], "topics": ["azure", "azure-key-vault", "azure-app-service", "azure-cdn", "azure-frontdoor", "letsencrypt", "acme-v2", "azure-application-gateway", "certificate", "azure-functions"], "urls": [], "use_cases": ["automate letsencrypt certificate renewal on azure", "issue wildcard ssl certificates for azure app service", "store tls certificates in azure key vault", "manage ssl certificates for azure front door and application gateway", "replace manual certificate renewal scripts", "monitor certificate expiry across multiple azure domains", "set up acme certificate automation with dns-01 validation"], "what_it_is": "Acmebot is an Azure-native application that automates ACME SSL/TLS certificate issuance and renewal using DNS-01 validation, storing private keys and certificates in Azure Key Vault. It runs as an Azure Function App with a dashboard, HTTP API, and CLI, supporting Let's Encrypt and other ACME CAs across multiple Azure services.", "when_to_avoid": ["your infrastructure is not on Azure or you do not use Azure Key Vault", "you need HTTP-01 or TLS-ALPN-01 validation instead of DNS-01", "your DNS provider is not among the supported integrations", "you need a simple standalone certbot-style tool outside the cloud"], "when_to_choose": ["you run workloads on Azure services like App Service, Front Door, or Application Gateway and need automated TLS certificates", "you want private keys generated and stored in Azure Key Vault rather than on disk", "you need wildcard or multi-domain (SAN) certificates via DNS-01 validation", "you want ARI-aware renewal scheduling and webhook notifications for certificate operations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/acmebot", "repo": "polymind-inc/acmebot", "role": "main", "score": 100}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-01T02:14:05.986598+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:33:29.352677+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2bc8201e4cce92e931c0b076ff108ba794e01456305d16673e71fe32245bae56", "fetched_at": "2026-09-01T02:14:05.986598+00:00", "kind": "readme", "missing": false, "url": "https://github.com/polymind-inc/acmebot"}, {"content_hash": "0c500077c188c8048e63cbc7bfedbc920c5102e9dbe13c1b54731efc165fe7a8", "fetched_at": "2026-08-29T12:38:04.102934+00:00", "kind": "homepage", "missing": false, "url": "https://acmebot.dev/"}, {"content_hash": "d5186cad10e52e18fbf24561529b2ec7e919842249410f0dd1c70268aeca35a3", "fetched_at": "2026-08-29T12:38:04.105405+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide/getting-started"}, {"content_hash": "5a0b8454265c5bef05b69916632efdaf7ef5cb5d40db6373a1dbc7855da73328", "fetched_at": "2026-08-29T12:38:04.107169+00:00", "kind": "site_page", "missing": false, "url": "https://acmebot.dev/guide"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 99}, "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": 2898, "days_push": 2, "days_rel": 7, "gap_med": 11, "n_releases_24m": 22}, "score": 100, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 5, "stale_scrape": false}}