Skip to main content

AI-powered domain name generator and availability checker

Project description

domainai

PyPI Python 3.9+ License: MIT

AI-powered domain name generator and availability checker. Describe what you want in plain English, and domainai generates creative domain names, checks their availability, and shows results in a beautiful terminal UI.

Features

  • AI-Powered — Uses LLMs to brainstorm creative, brandable domain names
  • Provider-Agnostic — Supports OpenAI, Anthropic, Google Gemini, and Groq (BYOK)
  • Dual Availability Check — Domainr API + WHOIS for accurate results
  • Smart Search--batch and --until modes for flexible searching
  • Watch Mode — Continuous background scanning with configurable intervals
  • History — SQLite database prevents rechecking the same domains
  • Beautiful Output — Rich terminal UI with colored results
  • CSV Export — Append-mode CSV for tracking all results

Quick Start

# Install (Groq is included by default — free tier!)
pip install domainai

# First-time setup (interactive)
domainai setup

# Search for domains
domainai search "url shortener, short, energetic" --tlds com,io

Requirements

  • Python 3.9 or higher
  • An API key from at least one supported AI provider

Installation

# Default install — includes Groq (free tier, recommended)
pip install domainai

# Add another provider on top of the default
pip install "domainai[openai]"      # OpenAI / ChatGPT
pip install "domainai[anthropic]"   # Anthropic / Claude
pip install "domainai[gemini]"      # Google Gemini
pip install "domainai[all]"         # All providers at once

Note (macOS/zsh): Only the optional extras ([openai], [all], etc.) need quoting on zsh. The default pip install domainai works without any brackets.

Setup

Run the interactive setup wizard:

domainai setup

This will:

  1. Ask which AI provider you want to use
  2. Show where to get an API key
  3. Test the connection
  4. Save config to ~/.domainai/config.json

Manual Configuration

You can also configure via .env file:

AI_PROVIDER=groq
AI_API_KEY=gsk_your_key_here
AI_MODEL=llama-3.3-70b-versatile    # optional

Or via CLI flags:

domainai search "my idea" --provider groq --api-key gsk_xxx

Priority order: CLI flags > .env file > ~/.domainai/config.json

Usage

Search (Batch Mode)

Generate names, check them, done:

# Generate 20 names (default), check with .com TLD
domainai search "url shortener, short, energetic"

# Specify TLDs and batch size
domainai search "url shortener, short" --tlds com,io,link --batch 30

Search (Until Mode)

Keep searching until N available domains are found:

# Search until 5 available domains are found
domainai search "url shortener, short" --tlds com,io --until 5

# Combine: generate up to 50 names, but stop at 3 available
domainai search "url shortener" --tlds com,io --batch 50 --until 3

Watch Mode

Continuous background scanning:

# Check every 30 seconds, stop at 5 available
domainai watch "url shortener, short" --tlds com,io --interval 30 --until 5

Press Ctrl+C to stop gracefully.

History & Results

# View check history from SQLite
domainai history

# View saved CSV results
domainai results

Output

Terminal

Real example — finding domains for an AI personal trainer app:

$ domainai search "AI personal trainer app, energetic, motivating, modern" \
    --tlds com,io,ai --until 5

🔍  Searching domains...
   Prompt: "AI personal trainer app, energetic, motivating, modern"
   TLDs: com, io, ai | Batch: 15 | Until: 5 available

  ❌ fitzone.com         → taken
  ❌ fitzone.io          → taken
  ❌ fitzone.ai          → taken
  ❌ motivo.com          → taken
  ❌ paxter.com          → taken
  ❌ elevat.com          → taken
  ❌ fitmax.com          → taken
  ❌ zinga.com           → taken
  ❌ coreio.com          → taken
  ✅ coreio.io           → available   → namecheap.com/...?domain=coreio.io
  ✅ coreio.ai           → available   → namecheap.com/...?domain=coreio.ai
  ❌ vitali.com          → taken
  ❌ pulso.com           → taken
  ✅ fitbita.com         → available   → namecheap.com/...?domain=fitbita.com
  ✅ fitbita.io          → available   → namecheap.com/...?domain=fitbita.io
  ✅ fitbita.ai          → available   → namecheap.com/...?domain=fitbita.ai

Done! Checked 33 domains, 5 available.

CSV (results.csv)

domain,tld,available,checked_at,buy_url
coreio.io,io,true,2026-05-16 14:32,https://www.namecheap.com/domains/registration/results/?domain=coreio.io
fitzone.com,com,false,2026-05-16 14:32,

Results are appended — old data is never overwritten.

Supported Providers

Provider Default Model Free Tier Setup Link
Groq (recommended) llama-3.3-70b-versatile ✅ Yes console.groq.com
OpenAI gpt-4o ❌ Paid platform.openai.com
Google Gemini gemini-2.5-flash ✅ Yes aistudio.google.com
Anthropic claude-sonnet-4-5 ❌ Paid console.anthropic.com

See all recommended models per provider:

domainai models

Docker

1. Create your .env file

cp .env.example .env
# Edit .env and set your API key:
#   AI_PROVIDER=groq
#   AI_API_KEY=gsk_xxxxx

2a. Docker Compose (recommended)

# Build and run the default search command
docker compose up --build

# Run any command interactively
docker compose run --rm domainai search "url shortener, short" --tlds com,io
docker compose run --rm domainai setup
docker compose run --rm domainai history
docker compose run --rm domainai watch "crypto names" --interval 60

2b. Docker (manual)

# Build the image
docker build -t domainai .

# Run a search
docker run --rm --env-file .env domainai search "AI startup names" --tlds com,io

# Persist history and results with volumes
docker run --rm --env-file .env \
  -v domainai-data:/root/.domainai \
  -v "$(pwd)/results.csv:/app/results.csv" \
  domainai search "short brandable names" --tlds com,ai --batch 30

Volumes

Volume Purpose
domainai-data:/root/.domainai SQLite history persists across container restarts
./results.csv:/app/results.csv CSV results written directly to your host machine

Project Structure

domainai/
├── src/domainai/          # Main package
│   ├── providers/         # AI provider adapters (Groq, OpenAI, Anthropic, Gemini)
│   ├── checker.py         # Domain availability checking (WHOIS + Domainr)
│   ├── generator.py       # Provider factory and name generation
│   ├── scheduler.py       # Batch/until/watch orchestration
│   ├── storage.py         # SQLite history database
│   ├── exporter.py        # CSV export
│   └── cli.py             # CLI entry point
├── tests/                 # Test suite
├── .github/workflows/     # CI/CD
├── Dockerfile             # Container support
└── pyproject.toml         # Package configuration

Development

git clone https://github.com/domainai/domainai.git
cd domainai
pip install -e ".[all,dev]"
python -m pytest tests/ -v

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

domainai-0.1.1.tar.gz (29.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

domainai-0.1.1-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file domainai-0.1.1.tar.gz.

File metadata

  • Download URL: domainai-0.1.1.tar.gz
  • Upload date:
  • Size: 29.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for domainai-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2d5b46c67be80a2140a5f775ab4e09c9ea402f647be95f938761e12763191c39
MD5 596b3dd6e098816d2824a5951d143d60
BLAKE2b-256 5295624c42e38cd28f9a4056ba27200aafdbdff5199ca56d6243af985a41122d

See more details on using hashes here.

File details

Details for the file domainai-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: domainai-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 32.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for domainai-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 758015cb0e141313f5976c1f0dc636999a58b8db8c6aae364ca12c95324958d0
MD5 6da7aa0418be33fb1d671d11dc9b9172
BLAKE2b-256 59b07ae1a4e9d5d928c272949a3a1b0316460aecf6d96d4e6dae722b72859363

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page