{"adoption": {"forks": 1880, "observed_at": "2026-08-28T04:11:17.894844+00:00", "stars": 17264}, "canonical_url": "https://ross.abutalabs.com/products/ddns-go", "card": {"archived": false, "artifact_type": "service", "description": "Simple and easy to use DDNS. Support Aliyun, Tencent Cloud, Dnspod, Cloudflare, Callback, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy, Namecheap, NameSilo...", "domain": ["networking", "self-hosted", "developer-tools"], "enriched": true, "function": ["networking", "webhook", "self-hosted", "developer-tools"], "health_score": 99, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["jeessy2/ddns-go"], "name": "jeessy2/ddns-go", "platform": ["windows", "cross-platform", "cli"], "pushed_at": "2026-08-19T12:29:15+00:00", "repo": "jeessy2/ddns-go", "stars": 17264, "tags": ["ddns", "dynamic-dns", "dns-provider-integrations", "ipv6", "web-ui", "systemd-service", "docker-deployment", "cloudflare", "aliyun", "tencent-cloud", "dnspod", "huawei-cloud", "godaddy", "namecheap", "porkbun", "namesilo", "callback-webhook", "ip-detection", "multi-domain", "ttl-support", "go-binary", "arm-support", "risc-v-support", "reverse-proxy-friendly", "log-viewer", "scheduled-sync", "multi-provider", "custom-parameters", "public-ip-tracking", "domain-management", "automation", "linux", "macos", "docker", "web-server"], "topics": ["ddns", "alidns", "dnspod", "cloudflare", "baiduyun", "porkbun", "ddns-go"], "urls": [], "use_cases": ["keep my home server domain pointing to my changing public IP", "automatically update DNS records when my ISP changes my IPv4 or IPv6 address", "set up dynamic DNS for Cloudflare, Aliyun, or Tencent Cloud domains", "run a lightweight DDNS client on a router, NAS, or Raspberry Pi", "sync multiple domains across different DNS providers from one tool", "get notified via webhook when my public IP changes", "self-host a DDNS service with a web interface instead of a cron script", "update DNS records for a domain behind a NAT with a dynamic IP"], "what_it_is": "DDNS-GO is a self-hosted dynamic DNS (DDNS) tool written in Go that automatically detects your public IPv4/IPv6 address and updates DNS records across many providers like Cloudflare, Aliyun, Tencent Cloud, Dnspod, Huawei Cloud, GoDaddy, Namecheap, and more. It runs as a system service or Docker container, offers a web UI for configuration, supports multiple domains and providers simultaneously, and includes webhook notifications and TTL settings.", "when_to_avoid": ["your DNS provider is not among the supported list and you cannot use the generic Callback mode", "you need a full-featured DNS management platform rather than just dynamic IP record updates", "you cannot run a persistent service or container and only need a one-off DNS update", "you require enterprise-grade HA or clustering for DNS updates"], "when_to_choose": ["you need a simple, actively maintained DDNS client with a web UI and broad DNS provider support", "you want to run it as a system service or Docker container on Linux, macOS, Windows, ARM, or RISC-V", "you need to manage multiple domains and multiple DNS providers from a single tool", "you want webhook notifications and TTL control out of the box", "you prefer a Go binary with no heavy dependencies over shell-script DDNS solutions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ddns-go", "repo": "jeessy2/ddns-go", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "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:11:17.894844+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:17.894844+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:03:26.580290+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c47ac14650e84bc9e4f99d4568d3f134c514ce7f61837cef230ec81280b032b0", "fetched_at": "2026-08-28T04:11:17.894844+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeessy2/ddns-go"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 98}, "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": 2198, "days_push": 14, "days_rel": 14, "gap_med": 8, "n_releases_24m": 54}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}