Install & onboarding

View as Markdown

The dial CLI is the fastest way to use Dial and the surface most agents drive. Install it once, sign up, and you’re authenticated for every command.

Install

$npm install -g @getdial/cli

Requires Node 22 or newer. Confirm the install:

$dial --version

Create an account

Dial uses an email one-time code — no password.

$dial signup you@example.com # emails a 6-digit code
$dial onboard --code 123456 \ # verifies the code, finishes setup
$ --inbound-instruction "You are my receptionist. Greet the caller and find out what they need."

onboard creates your account, issues an API key, saves it locally, and provisions your first phone number. --inbound-instruction is optional — it becomes that number’s inbound voice-agent prompt, and a default greeting is used if you omit it (change it later with dial number set). If you need to pass the verification explicitly, use --verification-id <id>; otherwise the CLI uses the pending sign-up from the previous step.

Check your setup

$dial doctor

doctor reports your account, saved key, and number — and tells you the next step if anything is missing. Add --json for machine-readable output.

Where your key is stored

After onboard, your key lives in ~/.local/share/dial/auth.v1.json (honoring XDG_DATA_HOME). Every dial command reads it automatically — you never paste your key again. The v1 in the name is the file’s schema version: when an update changes a state file’s shape, the CLI migrates the old file forward on first read, so updates never lose your sign-in.

Pointing at another environment

Set DIAL_API_URL to send CLI requests to a different deployment:

$export DIAL_API_URL=https://api.getdial.ai

Updating

The CLI keeps itself current. At most once an hour, any command spawns a detached background npm install -g @getdial/cli@latest (global npm installs only — npx runs already resolve the latest version on each invocation). The background check never touches a command’s output; its progress lands in ~/.local/state/dial/cli.log. Set DIAL_NO_AUTO_UPDATE=1 to turn it off.

To update on demand:

$dial update

If the background listen service is running, it notices the new version within a couple of minutes and restarts itself onto it.

Uninstall

$dial uninstall

One command removes everything Dial put on the machine — the listen daemon, the installed agent skills, and all local state including the saved API key — then prints the final step:

$npm uninstall -g @getdial/cli

Uninstall is local-only: your account and numbers are untouched. Coming back is the same email flow — dial signup + dial onboard.

Next