Skip to main content

Install reserve

3 min readStableBeginner

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, reserve falls 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

Bash
Bash
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/devops-infinity/reserve-releases/releases/latest/download/reserve-installer.sh | sh

Detects 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

PowerShell
PowerShell
irm https://github.com/devops-infinity/reserve-releases/releases/latest/download/reserve-installer.ps1 | iex

Covers 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

Bash
Bash
cargo binstall reserve

Pulls a prebuilt binary through cargo-binstall, if you already have it, from reserve on crates.io.

Build from source

Bash
Bash
cargo install reserve --locked

Also 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

Bash
Bash
reserve doctor

This 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):

CONSOLE
CONSOLE
$ 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/reserve

A 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:

Bash
Bash
reserve doctor --json

Try a real check

CONSOLE
CONSOLE
$ 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:

Bash
Bash
reserve completions zsh  > "${fpath[1]}/_reserve"
reserve completions bash > /etc/bash_completion.d/reserve
reserve completions fish > ~/.config/fish/completions/reserve.fish

reserve 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

Bash
Bash
reserve man             # the whole manual
reserve man config show # one subcommand's page
Was this page helpful?

© 2026 Reserve. All rights reserved.