Skip to main content
bunny dns is experimental and hidden from --help and the landing page while it stabilizes. Commands and flags may change.
bunny dns manages DNS through three resource groups:
  • bunny dns record manages the entries within a zone.
  • bunny dns zone manages the zone itself: settings, DNSSEC, logging, stats, and nameservers.
  • bunny dns script manages Scriptable DNS scripts.
The [domain] argument accepts either the zone’s domain name or its numeric zone ID, and is optional everywhere. Omit it and you’ll be prompted to pick a zone. record update and record remove likewise prompt you to pick a record when the ID is omitted. record aliases to records / rec; zone aliases to zones (and domain / domains); script aliases to scripts.

Records

Manage the DNS records within a zone.

Record value ordering

Positional values for record add follow the record type: Omit the record type (or all arguments) to run an interactive wizard that prompts for the zone, type, and per-type values.

Zones

Manage zone lifecycle, statistics, nameservers, DNSSEC, and query logging.

Scripts

Manage Scriptable DNS scripts: code that computes a DNS answer at query time, such as geo routing, weighted or failover answers, and closest-region selection. These are separate from Edge Scripts (bunny scripts, a different runtime). A script only affects DNS once it backs a SCRIPT record on a zone. Use attach to add that record from the script side.
Scripts resolve without an explicit ID in this order: explicit [id], then .bunny/dns-script.json (written by link / create / init), then the interactive picker. init starters via --example: empty, geo, closest, weighted, failover, pullzone. Pass --deploy to also create the script on bunny.net after scaffolding. attach always confirms before writing the record, and attaching at the apex ('@') prints a stronger warning listing any records already at that name.

Flags

Last modified on July 20, 2026