CLI tool for checking name availability across domains, trademarks, and more
Project description
Namera
Name your startup like a YC founder. Namera is a CLI tool that generates domain name ideas, checks availability and pricing across TLDs, screens for trademark conflicts, and ranks everything — so you pick from the best options, not all of them.
What It Does
- Describe your business — pass context about what you're building, your niche, audience, and preferences
- Generate name candidates — compose names from keywords with prefixes, suffixes, and permutations
- Check everything — domain availability, WHOIS, RDAP, trademark status, and social handles
- Get ranked results — names are scored by availability, pricing, trademark safety, and string quality, giving you the top picks
Ranked results: namera
┌──────┬────────────┬───────┬────────────┬───────────┐
│ Rank │ Name │ Score │ .com │ Trademark │
├──────┼────────────┼───────┼────────────┼───────────┤
│ 1 │ getnamera │ 92 │ Available │ Clear │
│ 2 │ trynamera │ 87 │ Available │ Clear │
│ 3 │ namerahq │ 84 │ Available │ Clear │
└──────┴────────────┴───────┴────────────┴───────────┘
Install
git clone https://github.com/siddmax/Namera.git
cd Namera
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
Commands
find — Discover names with business context
The main command for AI agents and structured input. Pass a JSON context with your business info and name candidates.
# See the full JSON schema
namera find --example
# Run a search
namera find --context '{"name_candidates": ["voxly", "dataprime"], "description": "fintech analytics platform", "niche": "finance"}'
# Only show available names
namera find --context '...' --only-available
# Output as JSON, CSV, or NDJSON
namera find --context '...' --format json
compose — Generate name permutations from keywords
# Add common prefixes and suffixes
namera compose namera --common-prefixes --common-suffixes
# Custom prefixes/suffixes with availability check
namera compose namera --prefix get --prefix try --suffix hq --check
# Specify TLDs
namera compose namera --common-suffixes --tlds com,io
# Output as JSON
namera compose namera --common-prefixes --json
rank — Score and rank name candidates
# Rank multiple names
namera rank voxly dataprime nimbus
# Rank with a scoring profile
namera rank voxly dataprime --profile fintech
# Rank with full business context
namera rank --context '{"name_candidates": ["voxly"], "niche": "fintech"}' --json
search — Run all checks on a single name
namera search myname
namera search myname --tlds com,io,ai
domain — Check domain availability
namera domain myname
namera domain myname --tlds com,ai,app
whois — WHOIS lookup
namera whois myname.com
trademark — Trademark check
namera trademark myname
presets — View TLD presets
namera presets
Available presets: popular, tech, startup, cheap, premium, finance, design, security, gaming, social, ecommerce, education, health, food, travel, media, creative, geo-us, geo-eu, geo-asia
Use presets anywhere TLDs are accepted:
namera compose myname --tlds startup --check
namera rank myname --tlds fintech
Configuration
Namera uses environment variables for API keys. None are required for basic lookups.
| Variable | Required | What it does |
|---|---|---|
GODADDY_API_KEY |
No | Enables domain pricing via GoDaddy API |
GODADDY_API_SECRET |
No | Paired with the API key above |
GODADDY_ENV |
No | production or ote (default: ote) |
SUPABASE_URL |
No | Supabase URL for trademark database |
SUPABASE_SERVICE_ROLE_KEY |
No | Supabase key for trademark lookups |
Architecture
src/namera/
cli.py # CLI entry point (Click)
composer.py # Name permutation generator
context.py # Business context parser
filters.py # Result filtering
output.py # Output formatting (table, JSON, CSV)
presets.py # TLD preset definitions
runner.py # Concurrent provider runner
cache.py # Result caching
retry.py # Retry logic for providers
session.py # Session management
theme.py # Terminal theme/colors
telemetry.py # Usage telemetry
scoring/
engine.py # Scoring engine
models.py # Score data models
local_signals.py # String quality analysis (length, pronounceability)
normalizers.py # Score normalization
profiles.py # Scoring profiles (fintech, tech, etc.)
providers/
base.py # Provider ABC + auto-registration
domain.py # DNS-based domain check
domain_api.py # GoDaddy API (availability + pricing)
rdap.py # RDAP protocol lookup
whois.py # Raw socket WHOIS lookup
social.py # Social handle availability
trademark.py # Trademark check (stub)
trademark_supabase.py # Trademark check via Supabase
Adding a provider
- Create
src/namera/providers/yourprovider.py - Subclass
Provider, setnameandcheck_type - Implement
async def check(self, query, **kwargs) -> ProviderResult - Import it in
cli.py— it auto-registers, no wiring needed
Development
pip install -e ".[dev]"
pytest tests/ -v # run tests
ruff check src/ tests/ # lint
To import trademark data into Supabase:
pip install -e ".[import]"
python scripts/import_trademarks.py
Tech Stack
- Python 3.10+
- Click — CLI framework
- Rich — terminal UI and tables
- httpx — async HTTP
- Supabase — trademark database (optional)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file namera-0.1.0.tar.gz.
File metadata
- Download URL: namera-0.1.0.tar.gz
- Upload date:
- Size: 60.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e267da7f97d708c2262726f07be6e6f1c4c5128f219e945665a568eaea87f54
|
|
| MD5 |
86476514065d23d0671b648bd8ac345b
|
|
| BLAKE2b-256 |
6718aed6abee2a165146f85ce12a019f97b6d2544d29162a2ac49d23b681d352
|
Provenance
The following attestation bundles were made for namera-0.1.0.tar.gz:
Publisher:
publish.yml on siddmax/Namera
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
namera-0.1.0.tar.gz -
Subject digest:
1e267da7f97d708c2262726f07be6e6f1c4c5128f219e945665a568eaea87f54 - Sigstore transparency entry: 1204016035
- Sigstore integration time:
-
Permalink:
siddmax/Namera@60bd08ec9c02d8ccc7a61a53c83b35217d7e6140 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/siddmax
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@60bd08ec9c02d8ccc7a61a53c83b35217d7e6140 -
Trigger Event:
release
-
Statement type:
File details
Details for the file namera-0.1.0-py3-none-any.whl.
File metadata
- Download URL: namera-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14ba233f2e26c27b76f64810c848db8aa2667c9b230341c7375e1fec48c9fe1c
|
|
| MD5 |
95192490574ee0d3155ccdda05e4a1fa
|
|
| BLAKE2b-256 |
37d44a89199ee12d3c4f849b3280feb0b24ed51fce943dd43b08b4fca142c6f5
|
Provenance
The following attestation bundles were made for namera-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on siddmax/Namera
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
namera-0.1.0-py3-none-any.whl -
Subject digest:
14ba233f2e26c27b76f64810c848db8aa2667c9b230341c7375e1fec48c9fe1c - Sigstore transparency entry: 1204016036
- Sigstore integration time:
-
Permalink:
siddmax/Namera@60bd08ec9c02d8ccc7a61a53c83b35217d7e6140 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/siddmax
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@60bd08ec9c02d8ccc7a61a53c83b35217d7e6140 -
Trigger Event:
release
-
Statement type: