Skip to content

alltuner/vacant

Repository files navigation

vacant

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

Sponsor

crates.io PyPI npm License Stars


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.