calldibs
v0.0.4
Published
Call dibs on a name — check availability across domains, social media, package registries, and trademarks.
Maintainers
Readme
dibs
Call dibs on a name — check availability across domains, social media, package registries, and trademarks in one command.
dibs acmedibs checks your name across 18+ platforms simultaneously and tells you what's available and what's taken. Optionally generate variants like useacme, acmehq, acmedev to find the best available version.
Install
npm install -g calldibsOr run directly:
npx calldibs acmeQuick Start
# Check a name on all platforms
dibs acme
# Pass a domain — extracts the name and ensures that TLD is checked
dibs notion.so
# Interactive mode — prompts for everything
dibs
# Also check variants (useacme, acmehq, etc.)
dibs acme -v all
# Only check specific variant patterns
dibs acme -v hq,use,app
# Check specific platforms only
dibs acme -o github,npm,domain
# Check specific TLDs only
dibs acme -t com,ai,dev
# Output as JSON
dibs acme -f json
# Export as CSV
dibs acme -f csv > report.csvDomain Input
Pass a full domain and dibs will do the right thing:
dibs notion.so- Extracts the name (
notion) and TLD (.so) - Formats the name per platform:
notionsofor social handles,notion-sofor package registries - Ensures
.sois always in the TLD check list - Skips variant generation (you're checking a specific brand)
.comis treated as a plain name —example.comjust checksexample
What It Checks
| Category | Platforms | Flag IDs |
| ------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
| Domains | WHOIS lookup for any TLD | domain |
| Social | GitHub, X/Twitter, Instagram, LinkedIn, TikTok, YouTube, Reddit, Ghost | github, twitter, instagram, linkedin, tiktok, youtube, reddit, ghost |
| Packages | npm, npm org, PyPI, crates.io, RubyGems, Go (pkg.go.dev), Homebrew, Docker Hub | npm, npm-org, pypi, crates, rubygems, go, homebrew, dockerhub |
| Legal | USPTO Trademark | trademark |
Default TLDs
.com, .dev, .io, .ai, .co, .app
Any valid IANA TLD is supported (1,400+). Just pass whatever you need via --tlds.
Variants
By default, only the exact name is checked. Use --variants / -v to also check common alternatives and find the best available version for your brand. Variants are disabled when passing a domain as input.
Prefixes: use___, get___, try___, go___, hey___, my___, the___, with___, on___, by___
Suffixes: ___hq, ___app, ___dev, ___io, ___labs, ___so, ___inc, ___co, ___team, ___run, ___now, ___ai, ___sh, ___cli, ___api, ___js
# Check all variants
dibs acme -v all
# Check specific patterns only
dibs acme -v hq,use,appWith -v all, checking acme also checks useacme, getacme, acmehq, acmeapp, acmedev, and 21 more variants. Each is scored and ranked.
Scoring & Recommendations
Each check result is one of three statuses:
| Status | Meaning |
| ----------- | -------------------------------------------------------------------------- |
| available | The name is not taken on that platform |
| taken | The name is already registered/in use |
| error | The check failed (rate limit, timeout, etc.) — does not penalize the score |
Platforms are weighted by importance to a business:
| Weight | Platforms |
| -------- | -------------------------------------------------------- |
| 15× | .com domain |
| 12× | USPTO Trademark |
| 8× | X / Twitter |
| 7× | Instagram, LinkedIn |
| 6× | GitHub, .ai domain |
| 5× | TikTok, YouTube, .com-adjacent domains |
| 4× | Reddit, .co, .app domains |
| 2-3× | Package registries (npm, npm org, PyPI, crates.io, etc.) |
| 2× | Ghost |
The weighted score produces a verdict:
| Score | Verdict | | ----- | ------------------------------------------------- | | ≥ 80% | 🎉 Great — widely available, grab it now | | ≥ 60% | 👍 Good — solid choice with minor conflicts | | ≥ 35% | 🤔 Fair — notable gaps, consider a variant | | < 35% | 👎 Poor — largely taken, try a different name |
Output Formats
Pretty (default)
Human-readable report with colors, progress bars, and grouped results:
dibs acmeShows a variant ranking table, detailed per-platform results for the best variant, and a recommendation with actionable details.
JSON
dibs acme -f json{
"recommendation": {
"verdict": "poor",
"summary": "\"acme\" is largely taken. Try a different name or variant.",
"details": [
"✗ .com domain is taken — consider a variant or alternative TLD",
"✗ Only 2/8 social handles available — branding will be inconsistent",
"◐ 5/8 package registries available",
"⚠ Possible USPTO trademark conflict — consult a lawyer before proceeding"
]
},
"best": {
"name": "acme",
"pattern": "bare",
"score": 28,
"available": 10,
"taken": 14,
"errors": 0,
"total": 24,
"results": [
{
"platform": "Domain acme.com",
"status": "taken",
"url": "https://acme.com",
"message": null
},
{
"platform": "GitHub",
"status": "taken",
"url": "https://github.com/acme",
"message": null
},
{
"platform": "npm",
"status": "available",
"url": "https://www.npmjs.com/package/acme",
"message": null
}
]
},
"variants": [
{
"name": "acme",
"pattern": "bare",
"score": 28,
"available": 10,
"taken": 14,
"errors": 0,
"total": 24
}
]
}Pipe to jq for extraction:
# Get the best variant name
dibs acme -f json | jq -r '.best.name'
# List all available platforms for the best variant
dibs acme -f json | jq '.best.results[] | select(.status == "available") | .platform'
# Get all variant scores
dibs acme -v all -f json | jq '.variants[] | {name, score}'CSV
dibs acme -f csv > report.csvvariant,pattern,platform,status,url,message
acme,bare,Domain acme.com,taken,https://acme.com,
acme,bare,GitHub,taken,https://github.com/acme,
acme,bare,npm,available,https://www.npmjs.com/package/acme,CLI Reference
dibs [OPTIONS] [NAME]| Flag | Short | Description |
| ------------ | ----- | ------------------------------------------------------------------------------------- |
| NAME | | The name or domain to check (omit for interactive mode) |
| --only | -o | Platforms to check (comma-separated) |
| --tlds | -t | TLDs to check (comma-separated, e.g. com,ai,dev) |
| --variants | -v | Enable variants: all for every pattern, or comma-separated list (e.g. hq,use,app) |
| --format | -f | Output format: pretty, json, or csv (default: pretty) |
| --help | -h | Show help with full documentation |
| --version | | Show version number |
Interactive Mode
Run dibs with no arguments to enter interactive mode. You'll be prompted to:
- Enter the name
- Select which platforms to check
- Select which TLDs to check
- Choose whether to generate variants and which patterns to use
Your selections are saved between sessions — next time you run dibs, your previous choices are pre-selected.
Non-Interactive Mode
Pass the name as a positional argument. All options can be set via flags. This is ideal for scripts, CI, and LLM tool use.
# Minimal — just check npm and GitHub for one name
dibs myproject -o npm,github -f json
# Full sweep with JSON output
dibs myproject -f json
# Full sweep with variants
dibs myproject -v all -f json
# Narrow check — just domains
dibs myproject -o domain -t com,dev,ai,app -f json
# Check a specific domain
dibs open.ai -f jsonError Handling
Every platform check is wrapped in error handling. If a check fails (network timeout, rate limit, service down), it returns { status: "error" } with a message instead of crashing. Errors do not count against the score — they reduce the total possible score so your recommendation isn't unfairly penalized.
The CLI always exits with code 0 when given valid arguments, regardless of check failures.
How It Works
- Input parsing — if the input is a domain (e.g.
notion.so), extracts the name and TLD, formats per platform - Name cleaning — the input is lowercased and stripped to
[a-z0-9-] - Variant generation — prefixes and suffixes are applied to create alternatives (when
-vis used, disabled for domain inputs) - Parallel checking — all variants × all platforms are checked concurrently
- Scoring — each variant gets a weighted score based on platform importance
- Recommendation — variants are ranked by score, the best is highlighted with a verdict
Development
git clone https://github.com/avigoldman/dibs
cd dibs
npm install
# Run in development
npm run dev
# Type check
npx tsc --noEmit
# Unit tests (114 tests, mocked, fast)
npm test
# Integration tests (real network calls)
npm run test:integration
# Build
npm run build
# Link globally for local use
npm linkLicense
MIT
