Observed since 20 Oct, 19:29 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Full-coverage CLI for AdGuard Home
A full-coverage CLI for AdGuard Home. Every endpoint in the AdGuard Home OpenAPI spec, exposed as a typed shell command. Generated from AdGuard Home's official OpenAPI spec using openapi-cli-gen.
A CLI for AdGuard Home has been one of the most-requested community features — with dedicated feature requests asking for scripting, Infrastructure-as-Code, and automated provisioning. The project maintainers have focused on the web UI and DNS engine; there's no official CLI.
This fills the gap: every HTTP API endpoint in AdGuard Home becomes a shell command with typed flags. Useful for:
pipx install adguard-home-cli
# Or with uv
uv tool install adguard-home-cli
Point it at your AdGuard Home instance. Note: the REST API is served under /control:
export ADGUARD_HOME_CLI_BASE_URL=http://your-adguard-host:3000/control
AdGuard Home uses HTTP Basic auth with your admin credentials:
export ADGUARD_HOME_CLI_USERNAME=admin
export ADGUARD_HOME_CLI_PASSWORD=your-password
The CLI automatically sends the Authorization: Basic ... header on every request.
All commands below have been verified against a live AdGuard Home instance.
# Server status (version, DNS addresses, running state)
adguard-home-cli global status
# Stats summary
adguard-home-cli stats info
adguard-home-cli stats stats
# Filter status (which lists are enabled, update intervals)
adguard-home-cli filtering status
# Add a new blocklist URL. Note: --no-whitelist flag (boolean toggle),
# NOT --whitelist false
adguard-home-cli filtering add-url \
--name "OISD Full" \
--url "https://big.oisd.nl/" \
--no-whitelist
# Refresh all filters
adguard-home-cli filtering refresh
# Set user-defined block rules (--root because --rules expects a list)
adguard-home-cli filtering set-rules --root '{"rules": ["||tracker.example||^", "||ads.example||^"]}'
# Look up a host (debugging)
adguard-home-cli filtering check-host --name doubleclick.net
# Client management
adguard-home-cli clients status
adguard-home-cli clients find
# Safe browsing / parental controls / safe search
adguard-home-cli safebrowsing status
adguard-home-cli parental status
adguard-home-cli safesearch status
# Query log
adguard-home-cli log query --limit 50
# DNS rewrites (local DNS entries)
adguard-home-cli rewrite list
adguard-home-cli rewrite add --domain home.lan --answer 192.168.1.10
# Remove the filter we added earlier
adguard-home-cli filtering remove-url --url "https://big.oisd.nl/" --no-whitelist
--no-X formAdGuard's spec has several boolean body fields (whitelist, enabled, etc.). These are rendered as pairs: --whitelist (sets true) or --no-whitelist (sets false). Do not pass --whitelist false or --whitelist true — pydantic-settings won't recognize them and argparse will reject the command.
# Top-level groups
adguard-home-cli --help
# Commands in a group
adguard-home-cli filtering --help
# Flags for a specific command
adguard-home-cli filtering add-url --help
Every command accepts --output-format:
adguard-home-cli global status --output-format table
adguard-home-cli stats info --output-format yaml
adguard-home-cli filtering status --output-format raw
| Group | What it covers |
|---|---|
global | Server status, DNS config, protection toggle, profile, updates |
install | Initial setup wizard (address discovery, configure, check-config) |
filtering | Block lists, allow lists, user rules, host lookup, refresh |
clients | Per-client access lists and settings |
dhcp | DHCP server + static leases |
log | Query log config + search |
stats | Query statistics + config |
blocked-services | Time-scheduled service blocking (Netflix, TikTok, etc.) |
safebrowsing | Google Safe Browsing toggle |
parental | Parental control toggle |
safesearch | Safe search enforcement |
rewrite | Local DNS rewrites (map domains to IPs) |
tls | HTTPS / DNS-over-TLS / DNS-over-HTTPS config |
mobileconfig | Generate iOS/macOS mobile config profiles |
i18n | UI language |
#!/usr/bin/env bash
set -e
export ADGUARD_HOME_CLI_BASE_URL=http://new-adguard:3000/control
export ADGUARD_HOME_CLI_USERNAME=admin
export ADGUARD_HOME_CLI_PASSWORD=$ADMIN_PASSWORD
# Add block lists
adguard-home-cli filtering add-url --name "OISD" --url "https://big.oisd.nl/" --no-whitelist
adguard-home-cli filtering add-url --name "StevenBlack" --url "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" --no-whitelist
# Refresh
adguard-home-cli filtering refresh
# Add local rewrites
adguard-home-cli rewrite add --domain router.lan --answer 192.168.1.1
adguard-home-cli rewrite add --domain nas.lan --answer 192.168.1.20
# Enable safe browsing + parental
adguard-home-cli safebrowsing enable
adguard-home-cli parental enable
# Verify
adguard-home-cli global status --output-format json | jq .protection_enabled
This package is a thin wrapper:
spec.yaml)Since it's spec-driven, new AdGuard Home endpoints show up automatically on regeneration — no manual wrapping.
MIT. Not affiliated with AdGuard — this is an unofficial community CLI built on top of their public OpenAPI spec.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.3 | 24 May 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:29 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:cc83ee161dc330a08ea082f15d86ad457433b28fbd38b87849ac885e5e55a141