Own your domains from the command line

Search availability, register and renew domains, manage DNS records and nameservers — all without leaving the terminal. Your account works from any AI coding agent through the included skill.

Get started Open the control panel Apache-2.0 · no tracking cookies

$ domain-cli search mystartup
NAME              PURCHASABLE   1ST YEAR   RENEWAL
mystartup.com     yes           $11.49     $13.99
mystartup.dev     yes           $14.99     $16.99
getmystartup.com  yes           $10.99     $13.49

$ domain-cli register mystartup.dev --years 1 --contact personal
Quote: $14.99 + VAT. Opening checkout...
Order ORD-7F3K: paid -> processing -> completed
Registered mystartup.dev (expires 2027-08-30)

$ domain-cli dns set mystartup.dev A @ 203.0.113.10
Created A @ 203.0.113.10 (ttl 3600)

Install

Linux and macOS
curl -fsSL https://registerdomaincli.com/install.sh | sh
Or with Go
go install github.com/registerdomaincli/cli/cmd/domain-cli@latest
Windows (PowerShell)
$ErrorActionPreference = 'Stop'
$dir = "$env:LOCALAPPDATA\Programs\domain-cli"
$tmp = New-Item -ItemType Directory -Force -Path (Join-Path $env:TEMP ([guid]::NewGuid()))
try {
  $base = 'https://github.com/registerdomaincli/cli/releases/latest/download'
  Invoke-WebRequest "$base/domain-cli-windows-amd64.zip" -UseBasicParsing -OutFile "$tmp\cli.zip"
  Invoke-WebRequest "$base/domain-cli-windows-amd64.zip.sha256" -UseBasicParsing -OutFile "$tmp\cli.sha256"
  # -ne on strings is case-insensitive, which is what we want here: the
  # published hash is lower case and Get-FileHash returns upper case.
  if ((Get-FileHash "$tmp\cli.zip" -Algorithm SHA256).Hash -ne (Get-Content "$tmp\cli.sha256").Split(' ')[0]) {
    throw 'checksum mismatch - not installing'
  }
  Unblock-File "$tmp\cli.zip"
  New-Item -ItemType Directory -Force -Path $dir | Out-Null
  Expand-Archive "$tmp\cli.zip" -DestinationPath $tmp -Force
  Move-Item "$tmp\domain-cli-windows-amd64.exe" "$dir\domain-cli.exe" -Force
} finally { Remove-Item $tmp -Recurse -Force }
$user = [Environment]::GetEnvironmentVariable('Path', 'User')
if (@($user -split ';') -notcontains $dir) {
  $new = if ($user) { $user.TrimEnd(';') + ';' + $dir } else { $dir }
  [Environment]::SetEnvironmentVariable('Path', $new, 'User')
}

Installs into your user profile and puts it on your PATH — no admin rights. The download is verified against its published checksum, and nothing is installed if it does not match. Open a new terminal afterwards.

Requires Go 1.25 or later.

Features

Instant search

Keyword search and exact availability checks with indicative first-year and renewal prices.

Register, renew, transfer

Full lifecycle commands with real pre-order quotes from the authoritative pricing API.

DNS management

Create, update, and delete A, AAAA, CNAME, TXT, MX, and more — straight from the shell.

You are the registrant

Domains are registered in your name: your contact data goes to the registry, not a reseller's proxy.

Leave anytime

Leave at any time: get your auth code and unlock the domain at no charge, then transfer it wherever you like.

Agent-native

Bundled skill, predictable plain-text output, and machine-readable error codes for AI workflows.

Use it from your AI agent

RegisterDomainCLI ships with an agent skill: a single SKILL.md in the format every major coding agent reads. This command installs it into the two directories that cover all of them, so your coding agent can search, register, and manage DNS on your behalf.

Linux and macOS

(set -e; TMP=$(mktemp "${TMPDIR:-/tmp}/domain-cli.XXXXXX"); trap 'rm -f "$TMP"' EXIT
curl -fsSL https://registerdomaincli.com/skill/SKILL.md -o "$TMP"
for d in ~/.claude/skills ~/.agents/skills; do
  mkdir -p "$d/domain-cli"
  install -m 644 "$TMP" "$d/domain-cli/SKILL.md"
done)

Windows (PowerShell)

$ErrorActionPreference = 'Stop'
$tmp = [System.IO.Path]::GetTempFileName()
try {
  Invoke-WebRequest https://registerdomaincli.com/skill/SKILL.md -UseBasicParsing -OutFile $tmp
  foreach ($d in "$HOME\.claude\skills", "$HOME\.agents\skills") {
    New-Item -ItemType Directory -Force -Path "$d\domain-cli" | Out-Null
    Copy-Item $tmp "$d\domain-cli\SKILL.md" -Force
  }
} finally { Remove-Item $tmp -Force -ErrorAction SilentlyContinue }

Where each agent looks for skills

Claude Code
~/.claude/skills/ · .claude/skills/
Codex CLI
~/.agents/skills/ · .agents/skills/
Copilot CLI
~/.copilot/skills/ · ~/.agents/skills/ · .github/skills/
Amp
~/.config/agents/skills/ · ~/.agents/skills/ · .agents/skills/
opencode
~/.config/opencode/skills/ · ~/.agents/skills/ · .opencode/skills/
oh-my-pi (omp)
~/.omp/agent/skills/ · ~/.agents/skills/ · .agents/skills/
Pi
~/.pi/agent/skills/ · ~/.agents/skills/ · .pi/skills/

Payments always require a human: the agent prints a checkout URL and stops — you complete the purchase in your browser. Read the agent skill

Commitments

Registered Name Holder: you

The contact you provide is submitted to the registry for all contact roles. We are a reseller, not the owner.

Free exit

Auth code and unlock on request, both free of charge. We do not hold your domains hostage.

No surprise renewals

Autorenew is an explicit opt-in and can be disabled from the CLI at any time.

Invoices and VAT in order

VAT calculated at checkout, a signed A-YYYY-NNNNNN invoice and a Verifactu record.

Frequently asked

Am I really the domain holder?

Yes. The registrant contact you provide is submitted to the registry for all contact roles: you are the Registered Name Holder, with the corresponding rights and duties under registry and ICANN policies.

What if I want to move to another registrar?

The CLI gives you the auth code and unlocks the domain on request, both free of charge, whenever you like.

Do domains renew automatically?

Not by default. Only when you issue a renewal order or explicitly enable autorenew, which authorizes an annual off-session charge and can be disabled at any time.

What if registration fails after payment?

The payment is refunded automatically and in full, with the corresponding credit note.

Can my AI agent buy on its own?

No. The agent can search, quote and manage DNS, but payment stops at a checkout URL a human has to open.

Where do I find invoices and payment methods?

In the panel: transactions with a signed invoice link, the billing profile and the payment portal.

curl -fsSL https://registerdomaincli.com/install.sh | sh
Open the control panel