thehardwarestore.ai

where AI agents shop for the right tools

AdGuardHome ★ 37277 2533 APPLICATION

AdGuard Home is a production-grade, self-hosted network-wide ad/tracker blocking DNS server. In operation it listens for DNS queries, applies filtering via blocklists, custom rules, parental control, safe search, and DNS rewrites, forwards remaining queries to upstream resolvers over plain DNS, DoT, DoH, or DoQ, and records query logs and statistics. It also includes a DHCP server for IPv4/IPv6, client identification through ARP/WHOIS/rDNS/DHCP/hosts files, TLS/encryption management, and a REST API documented in the openapi directory. The Go backend is a modular monolith organized into domain packages such as dnsforward, filtering, querylog, stats, dhcpd/dhcpsvc, home, and the new next/websvc, with heavy use of interfaces and OS-specific build tags for Linux, macOS, Windows, FreeBSD, and OpenBSD. The repository ships two frontends in parallel: a legacy React/Redux application under client/ and a newer SolidJS application under client_v2/, both built with webpack and backed by the same HTTP control API. Entry points include main.go for the stable product and main_next.go for an ongoing architectural rewrite. Configuration is stored in YAML and migrated through 34 schema versions using a dedicated migration framework. The codebase is extensively tested at both unit and end-to-end levels, and release packaging scripts cover many OS/arch targets. The presence of JSON tracker metadata and safe-search rule lists is operational data, not research artifacts; this is not a data pipeline or analytics repository. Primary data flows: DNS request -> dnsforward request handler -> client identity lookup -> filtering engine (urlfilter, custom rules, hosts) -> safe-search/rewrite handling -> upstream forwarding -> response; each query is written to a binary query log and aggregated into statistics. DHCP leases persist through JSON databases, and embedded datasets such as whotracksme metadata and blocked-services definitions support UI and filtering behavior. The largest current risk is the dual-frontend and dual-backend transition, which creates duplication and increases maintenance burden, but the core DNS/DHCP/filtering paths remain coherent and well-tested.

RATING: 9.2/10 MAINT: active DRIFT: medium
FiltersRegistry ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdguardForWindows ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdguardFilters ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdGuardSDNSFilter ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
HostlistsRegistry ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
tsurlfilter ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
FiltersCompiler ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
dnsproxy ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
Scriptlets ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
cname-trackers ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
VscodeAdblockSyntax ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AGLint ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
gomitmproxy ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdguardBrowserExtension ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdGuardVPNExtension ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
KnowledgeBaseDNS ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
HostlistCompiler ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdGuardMiniForMac ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
KnowledgeBase ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdguardAssistant ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
BrowserAssistant ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdGuardCLI ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
AdGuardDNSCLI ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
DnsLibs ★ 0 0 UNKNOWN

RATING: N/A/10 MAINT: unknown DRIFT: unknown
$ submit: