# Install dnscontrol with Homebrew, apk, MacPorts, Nix, winget

Synchronize your DNS to multiple providers from a simple DSL. Version 4.42.0 via Homebrew; verified 2026-06-18.

## Install

```sh
sudo av install brew:dnscontrol
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install dnscontrol
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install dnscontrol
```

  Evidence: MacPorts ports tree: sysutils/dnscontrol/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add dnscontrol
```

  Evidence: Alpine Linux edge package indexes: dnscontrol from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz

- Nix (92%):

```sh
nix profile install nixpkgs#dnscontrol
```

  Evidence: nixpkgs package indexes: pkgs/by-name/dn/dnscontrol/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

### Windows

- winget (92%):

```sh
winget install --id StackExchange.DNSControl -e
```

  Evidence: Windows Package Manager source index: StackExchange.DNSControl from https://cdn.winget.microsoft.com/cache/source.msix

## Package facts

- **Package key:** brew:dnscontrol
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/dnscontrol>
- **Version:** 4.42.0
- **Source summary:** Synchronize your DNS to multiple providers from a simple DSL
- **Homepage:** <https://dnscontrol.org/>
- **Repository:** <https://github.com/DNSControl/dnscontrol>
- **Upstream docs:** <https://dnscontrol.org/>
- **License:** MIT
- **Source archive:** <https://github.com/DNSControl/dnscontrol/archive/refs/tags/v4.42.0.tar.gz>
- **Last updated:** 2026-06-18T21:40:25Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- dnscontrol (cli)
- dnscontrol (alias)

## Build dependencies

- go

## Install behavior

- Post-install hook: not defined
- Caveats: dnscontrol bash completion depends on the bash-completion package.
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 4.42.0
- Package-manager updated: 2026-06-18
- Local data: ok
- Upstream repository: https://github.com/DNSControl/dnscontrol
- Upstream latest detected: v4.42.0 (current)
## Project history and usage

DNSControl is an infrastructure-as-code tool for managing DNS records across multiple registrars and DNS providers. It uses a JavaScript-like DSL in dnsconfig.js, provider credentials in creds.json, and commands such as preview and push to turn repository-managed DNS intent into provider changes.

### Project history

Stack Overflow introduced DNSControl publicly in 2017 as the system it built to manage DNS with a describe-once, use-anywhere model. The project grew from Stack Exchange's operational needs into an open-source tool with provider plugins, a compiler-like intermediate representation, and a documentation site for the DSL and provider ecosystem.

### Adoption history

DNSControl's adoption story is unusually package-nerdy because its own README cites Stack Overflow using it for hundreds of domains and subdomains. That production pedigree, plus support for many providers, made it attractive to teams that wanted DNS changes reviewed, tested, and applied like code.

### How it is used

A typical workflow is to keep dnsconfig.js, creds.json, and optional zone files in a Git repository, run dnscontrol preview to inspect changes, and run dnscontrol push to apply them. The getting-started guide explicitly walks users through creating a config directory, dnsconfig.js, creds.json, and a zones directory for local testing.

### Why package nerds care

DNSControl matters to package and ops people because it turns DNS into a reproducible artifact with reviewable diffs. It also represents the CLI packaging sweet spot: a Go binary, strong docs, release automation, Docker support, Homebrew availability, and enough provider plugins to justify distro packaging.

### Timeline

- 2017: Stack Overflow introduces DNSControl as DNS as code.
- 2024: v4.x releases continue the provider-plugin and DNS compiler model.
- 2026: The project documents 64 supported DNS providers and registrars in its README.

### Related projects

- Terraform DNS providers solve adjacent infrastructure-as-code problems with a different state model.
- BIND zone files are a common input, output, or migration target for DNSControl workflows.

### Sources

- <https://blog.serverfault.com/2017/04/11/introducing-dnscontrol-dns-as-code-has-arrived/>
- <https://github.com/DNSControl/dnscontrol>
- <https://docs.dnscontrol.org/>
- <https://docs.dnscontrol.org/getting-started/getting-started>
- <https://docs.dnscontrol.org/commands/creds-json>


## Security Notes

No matching local secret-handling manifest was found for dnscontrol. Nucleus package metadata is still published here so future coverage has a stable package URL.



## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- Unix: ./dnsconfig.js

## Credential files

- Unix: ./creds.json
## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** dnscontrol
- **Version Scheme:** 1
- **Revision:** 0
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Nix - dnscontrol: normalized package name match | nixpkgs package indexes: pkgs/by-name/dn/dnscontrol/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- apk - dnscontrol - 4.41.0-r0: normalized package name match | Alpine Linux edge package indexes: dnscontrol from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz | Synchronize your DNS to multiple providers from a simple DSL | https://dnscontrol.org/
- apk - dnscontrol-doc - 4.41.0-r0: normalized package name match | Alpine Linux edge package indexes: dnscontrol-doc from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz | Synchronize your DNS to multiple providers from a simple DSL (documentation) | https://dnscontrol.org/
- MacPorts - dnscontrol: normalized package name match | MacPorts ports tree: sysutils/dnscontrol/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1
- winget - StackExchange.DNSControl: normalized package name match | Windows Package Manager source index: StackExchange.DNSControl from https://cdn.winget.microsoft.com/cache/source.msix


## Related links

- [Cloud CLI packages](https://www.automicvault.com/pkg/cloud-clis/) - Belongs to a cloud or infrastructure command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [Productivity CLI packages](https://www.automicvault.com/pkg/productivity-cli-packages/) - Matched curated productivity category metadata from av.db.
- [go](https://www.automicvault.com/pkg/brew/go/) - Build dependency declared by Homebrew.
- [cli53](https://www.automicvault.com/pkg/brew/cli53/) - Shares av.db curated category or tags: cli, cloud-infrastructure, dns.
- [denominator](https://www.automicvault.com/pkg/brew/denominator/) - Shares av.db curated category or tags: cli, cloud-infrastructure, dns.
- [pulumi](https://www.automicvault.com/pkg/brew/pulumi/) - Shares av.db curated category or tags: automation, cli, cloud-infrastructure, infrastructure-as-code.
- [actions-batch](https://www.automicvault.com/pkg/brew/actions-batch/) - Shares av.db curated category or tags: automation, cli, cloud-infrastructure.
- [aiac](https://www.automicvault.com/pkg/brew/aiac/) - Shares av.db curated category or tags: cli, cloud-infrastructure, infrastructure-as-code.
- [ansible](https://www.automicvault.com/pkg/brew/ansible/) - Shares av.db curated category or tags: automation, cli, cloud-infrastructure.
- [ansible-creator](https://www.automicvault.com/pkg/brew/ansible-creator/) - Shares av.db curated category or tags: automation, cli, cloud-infrastructure.
- [atlantis](https://www.automicvault.com/pkg/brew/atlantis/) - Shares av.db curated category or tags: automation, cli, cloud-infrastructure.
- [octodns](https://www.automicvault.com/pkg/brew/octodns/) - Local package facts share a topical domain. Shared terms: automation, cli, code, dns, infrastructure.
- [cf-terraforming](https://www.automicvault.com/pkg/brew/cf-terraforming/) - Local package facts share a topical domain. Shared terms: cli, cloud, cloud-infrastructure, code, infrastructure.

## Combined YAML source

View the package source record on GitHub. [combined/dnscontrol.yml](https://github.com/automic-vault/db/blob/main/combined/dnscontrol.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated configuration and credential file locations
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
