dominion-cli
v0.2.2
Published
Domain management CLI — DNS, registrar, SSL from your terminal
Maintainers
Readme
dominion
██████╗ ██████╗ ███╗ ███╗██╗███╗ ██╗██╗ ██████╗ ███╗ ██╗
██╔══██╗██╔═══██╗████╗ ████║██║████╗ ██║██║██╔═══██╗████╗ ██║
██║ ██║██║ ██║██╔████╔██║██║██╔██╗ ██║██║██║ ██║██╔██╗ ██║
██║ ██║██║ ██║██║╚██╔╝██║██║██║╚██╗██║██║██║ ██║██║╚██╗██║
██████╔╝╚██████╔╝██║ ╚═╝ ██║██║██║ ╚████║██║╚██████╔╝██║ ╚████║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝Premium CLI for domain search, registration, and management.
Search, register, and manage domains directly from your terminal. Built with Ink for rich TUI output, backed by the Name.com API, with optional Vercel integration for seamless deployments.
Install
npm install -g dominion-cliVerify the installation:
dominion --versionRequires Node.js 18+.
Quickstart
Get from zero to domain owner in five steps.
1. Authenticate
dominion loginEnter your Name.com API username and token. Credentials are stored locally at ~/.dominion/config.json with 0600 permissions (owner-only).
Don't have an API token? Run
dominion login --browserto open the Name.com API keys page.
2. Search for domains
dominion search myappReturns an availability table across popular TLDs with pricing:
Domain Price Status
─────────────────────────────────────
myapp.com $12.99 ✓ Available
myapp.net $11.99 ✓ Available
myapp.io $39.99 ✓ Available (Premium)
myapp.org $12.99 ✗ Taken
myapp.co $29.99 ✓ AvailableFilter by TLD or budget:
dominion search myapp --tld com,io --max-price 203. Add to cart
dominion cart add myapp.com4. Purchase
dominion buyReviews your cart, confirms pricing, and registers all domains in a single transaction.
5. Manage
dominion domains myapp.com # View domain details
dominion dns myapp.com list # List DNS records
dominion dns myapp.com add A @ 76.76.21.21 # Point to your serverFeatures
Domain Search
Interactive TUI-powered domain search across multiple TLDs. Filter by price, filter by TLD, and add results directly to your cart.
Shopping Cart
Persistent cart stored at ~/.dominion/cart.json. Add, remove, and review domains before purchasing. Stale prices (older than 24 hours) are flagged automatically.
Purchase Flow
Batch-purchase all cart items or buy a single domain directly with dominion buy myapp.com. Skip the confirmation prompt with --yes for scripted workflows.
Domain Management
List all domains in your account, view detailed settings, expiration dates, nameserver configuration, and auto-renewal status.
DNS Records
Full CRUD for DNS records: A, AAAA, CNAME, MX, TXT, SRV, NS, ANAME, and URL redirect. Set custom TTLs and priorities.
Domain Settings
Configure auto-renew, domain lock, and nameservers. Switch nameservers instantly with presets:
dominion settings myapp.com set nameservers --preset vercel
dominion settings myapp.com set nameservers --preset namecomVercel Integration
Connect your Vercel account and link domains to projects with automatic DNS configuration:
dominion vercel setup # Configure Vercel token
dominion vercel link myapp.com # Link domain to Vercel project
dominion vercel status # View integration statusTeam Management
Add collaborators with role-based access:
dominion team add [email protected] --role admin --name "Alice"
dominion team list
dominion team remove [email protected]Roles: admin, member, viewer.
Webhooks
Get notified when domain events occur:
dominion webhooks add https://api.example.com/hooks --events domain.registered,dns.changed
dominion webhooks list
dominion webhooks remove <id>Supported events: domain.registered, domain.expired, dns.changed, domain.renewed.
Billing
View a billing summary across all your domains:
dominion billingAccount
View and update your account details and WHOIS contact information:
dominion account # View account details
dominion account set contact # Update WHOIS contact info interactively
dominion account set email [email protected]Command Tree
dominion
├── login [--browser] Authenticate with Name.com API credentials
├── register Create a new Dominion account
├── logout Clear stored credentials
├── whoami Display authenticated user info
├── search <query> [--tld] [--max-price] Search for available domains
├── cart
│ ├── list View cart contents
│ ├── add <domain> Add a domain to your cart
│ ├── remove <domain> Remove a domain from your cart
│ └── clear Clear all items from your cart
├── buy [domain] [--yes] Purchase domain(s) from cart or by name
├── domains [domain] [--json] List domains or view domain details
├── dns <domain>
│ ├── list [--json] List DNS records
│ ├── add <type> <name> <value> Add a DNS record [--ttl] [--priority]
│ └── remove <record-id> Remove a DNS record
├── settings <domain>
│ └── set <key> <value> [--preset] Update domain settings
├── account
│ └── set
│ ├── contact Set or update WHOIS contact info
│ └── email <email> Update contact email address
├── billing View domain billing summary
├── team
│ ├── list List team members
│ ├── add <email> [--role] [--name] Add a team member
│ └── remove <member> Remove a team member
├── vercel
│ ├── status View Vercel integration status
│ ├── setup Configure Vercel integration
│ ├── link <domain> Link a domain to Vercel project
│ └── unlink <domain> Unlink a domain from Vercel project
├── webhooks
│ ├── list List configured webhooks
│ ├── add <url> [--events] Add a webhook
│ └── remove <id> Remove a webhook by ID
├── integrations View available integrations
├── credits View the credits
├── --version, -v Print the current version
└── --help, -h Display help for commandConfiguration
All data is stored in ~/.dominion/:
~/.dominion/
├── config.json API credentials, Vercel config, preferences
├── cart.json Shopping cart (domains pending purchase)
├── team.json Team member list
├── webhooks.json Webhook configurations
└── achievements.json Unlocked achievements and usage statsconfig.json is created with 0600 file permissions to protect your API credentials.
Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| DOMINION_API_URL | Override the Dominion API base URL (useful for local development or self-hosted instances) | https://dominion.sh/api |
| NO_COLOR | Disable all ANSI color output (no-color.org) | — |
For details on each file's schema, see docs/configuration.md.
Easter Eggs
Dominion has a few surprises hidden throughout the CLI. Here are some hints:
- Try searching for some famous sci-fi domains. HAL might have something to say.
- There's a classic cheat code that works in the terminal. Think 1986, Konami.
- Run dominion on certain... unlucky dates. The CLI gets a little spooky.
- Somewhere in the CLI, there's a command that isn't listed. Hackers welcome.
- Use the CLI enough and you'll start earning achievements. Can you collect all 10?
No spoilers. Discover them yourself.
Scripting & CI/CD
Dominion is built for automation. Use these flags to integrate with scripts and pipelines:
# Suppress decorative output (logos, animations)
dominion domains --quiet
# Disable color output (for log files and CI)
dominion domains --no-color
# Get machine-readable output
dominion domains --json
# Skip confirmation prompts
dominion buy --yes
# Combine for fully non-interactive operation
dominion domains --json --quiet --no-colorPipe JSON output to jq for processing:
dominion domains --json --quiet | jq '.[].domainName'Environment variable support: set NO_COLOR=1 to disable colors globally (no-color.org).
Contributing
See docs/contributing.md for setup instructions, coding patterns, and the PR checklist.
