Skip to content

Repository files navigation

vacant

Fast domain availability checker.
Asks authoritative TLD nameservers directly instead of WHOIS.

Sponsor

crates.io PyPI npm License Stars

vacant checking domain availability


Get Started

# Rust / CLI
brew install alltuner/tap/vacant
cargo install vacant

# Python
uv add vacant

# JavaScript / TypeScript
npm install @alltuner/vacant

Try it without installing

The CLI also runs straight from any package runner — no install, no global state:

uvx vacant example.com                    # PyPI wheel via uv
pipx run vacant example.com               # PyPI wheel via pipx
npx -y @alltuner/vacant example.com       # npm package via npx
bunx @alltuner/vacant example.com         # npm package via bun
pnpm dlx @alltuner/vacant example.com     # npm package via pnpm

All variants share the same Rust engine, so results and flags are identical. The native binary (brew / cargo) is fastest to start; the runner variants are perfect for one-shots and CI.

Prefer a browser? vacant.alltuner.com is a hosted web UI built on these packages — a separate app for checking one name or hundreds at once, no install. (The packages here are the engine, CLI, and libraries; that site is just one example of something built with them.)

For agents

There's a ready-made agent skill at alltuner/skills so coding agents (Claude Code, etc.) can use vacant directly when checking domain availability:

npx skills add alltuner/skills --skill vacant

The skill wraps the CLI with usage hints, common patterns, exit-code semantics, and registry gotchas — see skills/vacant/SKILL.md.

Every package also ships a vacant mcp subcommand — a Model Context Protocol server over stdio exposing one read-only tool, check_domains(domains, verify=false). Run it from whichever channel you've installed:

vacant mcp                                 # native binary (brew / cargo)
npx -y @alltuner/vacant mcp                # npm package
uvx --from 'vacant[mcp]' vacant mcp        # PyPI wheel (needs the mcp extra)

Packages

This repo is a monorepo. The same engine ships in three forms:

Package Path Registry
vacant (Rust library + CLI) crates/vacant crates.io
vacant (Python wheel) python PyPI
@alltuner/vacant (npm package) js npm

See each package's README for usage. The Python wheel embeds the Rust engine via PyO3, the npm package embeds it via napi-rs, and all three share the on-disk SQLite cache with the CLI.

The PSL + RDAP-derived rules every package consumes live at rules/rules.toml — see the rules/ README for the source-of-truth and mirror policy.

Development

just                 # menu of all dev tasks
just build           # build the rust binary
just test            # run rust workspace tests
just py-develop      # build the python extension into a local venv
just py-check        # ruff + pytest
just js-develop      # build the napi-rs binding into js/
just js-check        # tsc + node:test smoke

License

MIT

Support the project

vacant is an open source project built by David Poblador i Garcia through All Tuner Labs.

If this project was useful to you, consider supporting its development.


Built by David Poblador i Garcia with the support of All Tuner Labs.
Made with ❤️ in Poblenou, Barcelona.

About

Fast domain availability checker. Asks authoritative TLD nameservers directly instead of WHOIS.

Topics

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages