Install reserve
Every supported way to get reserve onto your machine, and how to confirm the
install worked.
Prerequisites
- Outbound network access on TCP 443 for structured lookups, and TCP 43 for the older text protocol. A network that blocks port 43 still works, and those zones just report as unreachable instead of available.
- A UTF-8 locale, for the full terminal presentation. Outside one,
reservefalls back to plain characters. - Only for a source build: Rust 1.88 or newer, a C compiler, and CMake, because the TLS backend compiles a C library. The installer scripts below need none of this, since they download a prebuilt binary.
Linux and macOS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/devops-infinity/reserve-releases/releases/latest/download/reserve-installer.sh | shDetects your platform, downloads the matching archive from
reserve-releases, and
puts reserve on your PATH. Covers Linux (x86-64, ARM64) and macOS (Intel,
Apple silicon).
Windows
irm https://github.com/devops-infinity/reserve-releases/releases/latest/download/reserve-installer.ps1 | iexCovers Windows 10 and newer, x86-64 and ARM64, built with the MSVC toolchain. No NASM install is needed, since the TLS backend's assembly is pre-generated.
cargo-binstall
cargo binstall reservePulls a prebuilt binary through cargo-binstall, if you already have it, from
reserve on crates.io.
Build from source
cargo install reserve --lockedAlso pulls from crates.io, but builds locally. Needs a Rust toolchain and a C compiler. On Linux, the C library links dynamically, so build on the oldest system you intend to run on: a binary built on a newer distribution may not run on an older one. The library behind the CLI is published separately as reserve-core.
On a platform the project has never targeted, the Linux/macOS or Windows installer exits with a message naming your platform. Use the source install instead.
Verify the install
reserve doctorThis is the one command that also checks the network, so it's a real end-to-end confirmation, not just a version print. Example output on a fresh Linux install (your version, paths, and network state will differ):
$ reserve doctor
reserve
version 0.6.0
user agent reserve/0.6.0 (+https://reserve.devops.bd)
Catalog
schema 1
assembled 2026-08-19
extensions 314
groups 33
Terminal
stdout tty true
stdin tty true
size 120 by 40
automated false
color true
box drawing true
picker yes
Network
registry list https://data.iana.org/rdap/dns.json
cached list not downloaded yet
proxy none
Paths
config ~/.config/devops.bd/reserve
cache ~/.cache/devops.bd/reserve
data ~/.local/share/devops.bd/reserveA cached list of not downloaded yet is normal on a fresh install, and it
fills in after your first real lookup. A picker of yes means your terminal
can open the interactive picker; when it can't,
that line carries the reason instead, such as no, input is not a terminal.
Paths follow your platform's own conventions: XDG directories on Linux, macOS,
and the BSDs, and %APPDATA%/%LOCALAPPDATA% on Windows. See
Environment variables for the full layout.
Add --json for a machine-readable report:
reserve doctor --jsonTry a real check
$ reserve example --tld com,net,io
DOMAIN STATUS SOURCE TIME NOTE
- example.com TAKEN registry 1377ms
- example.net TAKEN registry 1173ms
- example.io TAKEN registry 1945ms
0 available 3 taken 0 unknown (3 checked)Pass a bare name and reserve crosses it with the extensions you chose. A name
that already carries a dot is checked exactly as typed, whatever the run
selected, so reserve example.com --tld com,net,io returns the one row for
example.com.
For every flag reserve accepts, see
CLI commands and flags. For the first real task, see
Check whether a domain name is available.
Troubleshooting
Shell completions
Generated on demand from the installed binary's own command definition, so they can't drift from the real flags:
reserve completions zsh > "${fpath[1]}/_reserve"
reserve completions bash > /etc/bash_completion.d/reserve
reserve completions fish > ~/.config/fish/completions/reserve.fishreserve completions also accepts elvish and powershell.
BSDs
Expected to work, since nothing in the tool is Linux-specific, but untested and unverified: the TLS backend publishes no pre-generated bindings for them.
Manual page
reserve man # the whole manual
reserve man config show # one subcommand's page