| name | adguard |
| description | This skill should be used when the user asks about AdGuard Home status, DNS filtering, or blocked domains. Triggers include: "is adguard running", "how many queries did it block today", "show me recent DNS queries", "search the DNS log for a domain", "is example.com blocked", "AdGuard stats", or any question about DNS-level ad blocking or network filtering. |
AdGuard
DNS-level ad blocking and network filtering. Talk to it directly over the AdGuard Home control API (served under /control, HTTP Basic auth).
How to call it
Read the base URL and credentials from ~/.lab/.env:
ADGUARD_URL=$(grep -E '^ADGUARD_URL=' ~/.lab/.env | cut -d= -f2- | tr -d '"')
ADGUARD_USERNAME=$(grep -E '^ADGUARD_USERNAME=' ~/.lab/.env | cut -d= -f2- | tr -d '"')
ADGUARD_PASSWORD=$(grep -E '^ADGUARD_PASSWORD=' ~/.lab/.env | cut -d= -f2- | tr -d '"')
AUTH=(-u "$ADGUARD_USERNAME:$ADGUARD_PASSWORD")
Auth is HTTP Basic (-u user:pass). Never echo the password.
ADGUARD_* may be unset in ~/.lab/.env โ populate them before use.
Common operations
| Intent | Request |
|---|
| Server status + version + running state | curl -sS "${AUTH[@]}" "$ADGUARD_URL/control/status" |
| DNS query statistics | curl -sS "${AUTH[@]}" "$ADGUARD_URL/control/stats" |
| Search the query log | curl -sS "${AUTH[@]}" "$ADGUARD_URL/control/querylog?search=<term>&limit=50" |
| Filtering status / rule lists | curl -sS "${AUTH[@]}" "$ADGUARD_URL/control/filtering/status" |
| Check whether a host is blocked | curl -sS "${AUTH[@]}" "$ADGUARD_URL/control/filtering/check_host?name=<host>" |
The version string and running state are fields inside GET /control/status (there is no separate version endpoint). Full API reference: https://github.com/AdguardTeam/AdGuardHome/blob/master/openapi/openapi.yaml.
Configuration
ADGUARD_URL, ADGUARD_USERNAME, and ADGUARD_PASSWORD live in ~/.lab/.env. Verify connectivity:
curl -sS -o /dev/null -w 'HTTP %{http_code}\n' "${AUTH[@]}" "$ADGUARD_URL/control/status"
When NOT to use this skill
- The user is asking about a different homelab service โ load that service's skill instead.
- The user wants to change filtering rules or protection settings โ those are mutating
POST /control/* endpoints; confirm intent first and consult the OpenAPI reference for the exact body.