npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@unstoppabledomains/ud-cli

v0.1.18

Published

Unstoppable Domains CLI — Search, register, and manage your domains from the command line.

Readme

ud-cli

Unstoppable Domains CLI — Search, register, and manage your domains from the command line.

Quick Start

# Install (macOS / Linux) — may prompt for sudo
curl -fsSL https://raw.githubusercontent.com/unstoppabledomains/ud-cli/main/install.sh | sh

# Or install via npm
npm install -g @unstoppabledomains/ud-cli

# Authenticate (opens browser for OAuth)
ud auth login

# You're ready — try it out
ud search mybusiness

Updating

# Check for updates
ud update check

# Update to the latest version
ud update

The CLI also checks for updates automatically once every 24 hours and prints a notification if a newer version is available.

Authentication

OAuth (default, browser-based)

ud auth login

Opens a browser for authorization using OAuth 2.0 with PKCE. Tokens are automatically refreshed.

API Key

ud auth login --key ud_mcp_<64-hex-chars>

API keys have the format ud_mcp_ followed by 64 hex characters. Generate one from the Unstoppable Domains dashboard. Passing --key automatically selects the api-key method.

Managing credentials

ud auth status    # Check current auth status
ud auth logout    # Clear stored credentials

Global Options

| Option | Description | |--------|-------------| | --env <environment> | Override active environment (production or sandbox) | | --format <format> | Output format: table (default), json, or csv | | --fields [columns] | Show available fields, or specify columns to display | | --quiet | Suppress output except errors | | --verbose | Show detailed output | | --profile <name> | Configuration profile to use (reserved) |

Output Formats

# Table output (default) — human-readable
ud search mybusiness

# JSON output — for scripting and piping
ud search mybusiness --format json

# CSV output — for spreadsheets and data processing
ud tlds --format csv > tlds.csv

Field Selection

Use --fields to customize which columns are displayed in table output.

# Show available fields for a command
ud domains list --fields

# Select specific columns
ud domains list --fields name,expiresAt,offersCount

# Nested fields use dot notation
ud domains list --fields name,listing.price,autoRenewal.status

Invalid field names are rejected with an error and a hint to run --fields for the full list.

Command Reference

ud
├── search <query>                    Search for available domains
├── tlds                              List available TLDs
├── auth
│   ├── login                         Authenticate (OAuth or API key)
│   ├── logout                        Clear stored credentials
│   └── status                        Check current auth status
├── domains
│   ├── list                          List portfolio domains
│   ├── get <domains...>              Get detailed domain info
│   ├── push <domains...>             Push domains to another user
│   ├── operations <domains...>       Get pending operations
│   ├── tags
│   │   ├── add <domains...>          Add tags to domains
│   │   └── remove <domains...>       Remove tags from domains
│   ├── flags
│   │   └── update <domains...>       Update domain flags
│   ├── auto-renewal
│   │   └── update <domains...>       Toggle auto-renewal
│   ├── contacts
│   │   ├── list                      List ICANN contacts
│   │   └── create                    Create ICANN contact
│   ├── dns
│   │   ├── records
│   │   │   ├── list <domain>         List DNS records
│   │   │   ├── add <domain>          Add DNS records
│   │   │   ├── update                Update DNS records
│   │   │   ├── remove                Remove DNS records
│   │   │   └── remove-all <domains...>  Remove all DNS records
│   │   └── nameservers
│   │       ├── list <domain>         List nameservers
│   │       ├── set-custom            Set custom nameservers
│   │       └── set-default           Reset to default nameservers
│   └── hosting
│       ├── redirects
│       │   ├── list <domain>         List redirect configurations
│       │   ├── add                   Add redirect configuration
│       │   └── remove                Remove redirect configuration
│       └── landers
│           ├── generate <domains...> Generate AI landing page
│           ├── status <domains...>   Check lander generation status
│           └── remove <domains...>   Remove AI landing page
├── cart
│   ├── get                           Get shopping cart with pricing
│   ├── remove                        Remove items from cart
│   ├── checkout                      Complete cart checkout
│   ├── url                           Get checkout URL
│   ├── payment-methods               Get available payment methods
│   ├── add-payment-method            Get URL to add payment method
│   └── add [domain...]               Smart add (auto-detects source)
│       ├── registration <domains...> Add domains for registration
│       ├── listed <domains...>       Add marketplace-listed domains
│       ├── afternic <domains...>     Add Afternic marketplace domains
│       ├── sedo <domains...>         Add Sedo marketplace domains
│       └── renewal <domains...>      Add domain renewals
├── marketplace
│   ├── listings
│   │   ├── create <domains...>       Create marketplace listings
│   │   ├── update                    Update marketplace listings
│   │   └── cancel                    Cancel listings
│   ├── offers
│   │   ├── list                      List marketplace offers
│   │   └── respond                   Respond to marketplace offers
│   └── leads
│       ├── list                      List domain conversation leads
│       ├── get <domain>              Get or create domain conversation
│       ├── messages                  List messages in a conversation
│       └── send                      Send a message in a conversation
├── config
│   ├── set <command> <key> <value>   Save a default option
│   ├── get [command]                 Show saved defaults
│   └── reset <command> [key]         Remove saved defaults
├── skill
│   └── install                       Install Claude Code skill
├── env
│   ├── show                          Show current environment
│   └── set <environment>             Switch default environment
└── update
    └── check                         Check for updates

Search & Discovery

ud search <query>                     Search for available domains
ud tlds                               List available TLDs

Domains

ud domains list                       List portfolio domains
ud domains get <domains...>           Get detailed domain info
ud domains push <domains...>          Push domains to another user
ud domains operations <domains...>    Get pending operations
ud domains tags add <domains...>      Add tags to domains
ud domains tags remove <domains...>   Remove tags from domains
ud domains flags update <domains...>  Update domain flags
ud domains auto-renewal update <domains...>  Toggle auto-renewal
ud domains contacts list              List ICANN contacts
ud domains contacts create            Create ICANN contact

DNS (ud domains dns)

ud domains dns records list <domain>          List DNS records
ud domains dns records add <domain>           Add DNS records
ud domains dns records update                 Update DNS records
ud domains dns records remove                 Remove DNS records
ud domains dns records remove-all <domains...>  Remove all DNS records
ud domains dns nameservers list <domain>      List nameservers
ud domains dns nameservers set-custom         Set custom nameservers
ud domains dns nameservers set-default        Reset to default nameservers

Hosting (ud domains hosting)

ud domains hosting redirects list <domain>             List redirect configurations
ud domains hosting redirects add                       Add redirect configuration
ud domains hosting redirects remove                    Remove redirect configuration
ud domains hosting landers generate <domains...>       Generate AI landing page
ud domains hosting landers status <domains...>         Check lander generation status
ud domains hosting landers remove <domains...>         Remove AI landing page

Cart

ud cart get                           Get shopping cart with pricing
ud cart remove                        Remove items from cart
ud cart checkout                      Complete cart checkout (requires --confirm)
ud cart url                           Get checkout URL
ud cart payment-methods               Get available payment methods
ud cart add-payment-method            Get URL to add payment method
ud cart add [domain...]               Smart add — auto-detects source and routes
ud cart add registration <domains...> Add domains for registration
ud cart add listed <domains...>       Add marketplace-listed domains
ud cart add afternic <domains...>     Add Afternic marketplace domains
ud cart add sedo <domains...>         Add Sedo marketplace domains
ud cart add renewal <domains...>      Add domain renewals

Marketplace

ud marketplace listings create <domains...>       Create marketplace listings
ud marketplace listings create <domains...> --price 99.99  Set listing price
ud marketplace listings update                    Update marketplace listings
ud marketplace listings update --price 50.00      Update listing price
ud marketplace listings cancel                    Cancel listings (requires --confirm)
ud marketplace offers list                        List marketplace offers
ud marketplace offers respond                     Respond to marketplace offers
ud marketplace leads list                         List domain conversation leads
ud marketplace leads get <domain>                 Get or create domain conversation
ud marketplace leads messages                     List messages in a conversation
ud marketplace leads send                         Send a message in a conversation

Config

ud config set <command> <key> <value>  Save a default option for a command
ud config get [command]                Show saved defaults
ud config reset <command> [key]        Remove saved defaults

Per-command defaults let you persist --fields, --format, and --quiet preferences so you don't have to retype them. CLI flags always override saved defaults.

# Save default fields for domains list
ud config set "domains list" fields name,expiresAt,offersCount

# Now ud domains list automatically uses those fields
ud domains list

# CLI flags still override the saved default
ud domains list --fields name,expiresAt

# Save a default output format
ud config set "domains dns records list" format json

# View all saved defaults
ud config get

# Remove a specific default
ud config reset "domains list" fields

# Remove all defaults for a command
ud config reset "domains list"

When you pass --fields explicitly, the CLI shows a tip with the command to save those fields as default.

Usage Examples

Search and register domains

# Search for domains
ud search mybusiness --tlds com,org,io --limit 10

# Smart cart add — auto-detects the source type
ud cart add mybusiness.com mybusiness.io

# Or specify the type explicitly
ud cart add registration mybusiness.com mybusiness.io
ud cart add --type renewal mysite.com

# Review cart and checkout
ud cart get
ud cart checkout --confirm

Manage DNS records

# List current records
ud domains dns records list example.com --format json

# Add an A record (single-item shorthand)
ud domains dns records add example.com --type A --values 1.2.3.4

# Bulk operations with --data
ud domains dns records add example.com --data '{
  "records": [
    {"domain": "example.com", "type": "A", "values": ["1.2.3.4"]},
    {"domain": "example.com", "type": "CNAME", "subName": "www", "values": ["example.com"]}
  ]
}'

Marketplace listings

# List a domain for sale at $99.99
ud marketplace listings create mydomain.com --price 99.99

# Update listing price
ud marketplace listings update --price 50.00 --data '{"listings":[{"listingId":"l123"}]}'

# Cancel a listing
ud marketplace listings cancel --confirm --data '{"listingIds":["l123"]}'

# View and respond to offers
ud marketplace offers list
ud marketplace offers respond --data '{"offers":[{"offerId":"o123","action":"accept"}]}'

# Manage leads
ud marketplace leads list
ud marketplace leads get mydomain.com
ud marketplace leads messages --conversation-id 42
ud marketplace leads send --conversation-id 42 --content "Thanks for your interest!"

Advanced usage

# Use --data for complex request bodies
ud domains contacts create --data '{
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "[email protected]",
  "phone": {"dialingPrefix": "+1", "number": "5551234567"},
  "street": "123 Main St",
  "city": "Austin",
  "stateProvince": "TX",
  "postalCode": "78701",
  "countryCode": "US"
}'

# Read request body from a file
ud domains dns records add example.com --file records.json

# Pipe JSON output for scripting
ud domains list --format json | jq '.domains[].name'

Agent Skills

ud-cli ships a skill that teaches coding agents (Claude Code, Cursor, GitHub Copilot, etc.) how to use domain management commands.

Install via npx skills (recommended)

Works with 40+ agents, no prior install needed:

npx skills add unstoppabledomains/ud-cli

Install via ud-cli

If you already have the CLI installed:

ud skill install

Both methods copy the skill to .claude/skills/ud-cli/ (or the equivalent for your agent). The skill covers search, DNS, cart, marketplace, and all other ud-cli workflows.

For skills-less operation, agents can also read ud --help directly.

Environments

| Environment | Base URL | |-------------|----------| | production (default) | https://api.unstoppabledomains.com | | sandbox | https://api.ud-sandbox.com |

ud env show              # Show current environment
ud env set sandbox       # Switch default environment
ud --env sandbox <cmd>   # Override environment for a single command

Credentials are stored per-environment, so you can be authenticated to both simultaneously.

Development

npm run build          # Compile TypeScript to dist/
npm run typecheck      # Type-check without emitting
npm run lint           # Run ESLint
npm run format         # Format with Prettier
npm test               # Run tests
npm run dev -- --help  # Run CLI in development mode
npm run fetch-spec     # Re-download OpenAPI spec from production API

Updating the API Spec

The CLI commands are auto-generated from the OpenAPI spec at src/generated/openapi-spec.json. To update after API changes:

npm run fetch-spec     # Downloads latest spec
npm test               # Verify everything still works

Building Binaries

npm run bundle              # Bundle into single file (dist/ud-cli.cjs)
npm run build:binaries      # Create standalone executables in bin/

Binary targets: macOS (arm64, x64), Linux (x64), Windows (x64).

Building from Source

git clone https://github.com/unstoppabledomains/ud-cli.git
cd ud-cli
npm install
npm run build
npm install -g .

Credential Storage

Credentials are stored securely:

  • Primary: System keychain via keytar (macOS Keychain, Windows Credential Vault, Linux Secret Service)
  • Fallback: Plaintext JSON file at ~/.ud-cli/credentials-{env}.json with permissions 0600 when native keychain is unavailable