Command line

The terminal.
The real way in.

`dials` is a typed, scoped, shell-friendly CLI. It runs the same paths the dashboard and the API run. Use it locally, in CI, in agents, in dotfiles.

At a glance

A CLI you can script around.

Install
`npm i -g @dials/cli`
Single binary install. Bun and Deno also supported.
Output
Human or JSON
Default human. Pass `--json` and pipe to `jq`.
Auth
Scoped session
Logs in via the same identity surface as the console.
Exit codes
Meaningful
Non-zero on policy deny, network error, or validation failure.

Smoke test

One command.
End-to-end.

`dials agent smoke` walks the full scoped session, runs an identity check, hits the carrier adapter, and writes a usage event. Stand it up in CI and you've protected the whole platform with one command.

  • Walks identity
  • Walks carrier
  • Walks ledger
  • Exit code 0 means real
Smoke
$ dials agent smoke

  ✓ session  scope:dials.local.read
  ✓ carrier  bulkvs mock · 25 results
  ✓ usage    evt_01HQT4… written

status: ok
JSON
$ dials agent smoke --json

{
  "status": "ok",
  "session": { "scope": "dials.local.read" },
  "carrier": { "name": "bulkvs", "mode": "mock", "count": 25 },
  "usage":   { "id": "evt_01HQT4..." }
}

Versioned

Print the build.
Inspect the path.

`dials version` prints the CLI version, the API version it speaks, and the platform endpoint it's pointed at. `dials whoami` prints your scoped session, your tenant, and the audience.

  • Per-command tracing
  • `--profile` for multi-tenant work
  • `--mode mock` and `--mode wired`
  • Per-command `--scope`
version
$ dials version

dials 1.6.0  ·  api v1  ·  platform.dials.com
whoami
$ dials whoami

subject:  agent · reception
scope:    dials.local.read dials.dial
tenant:   acme-corp
audience: platform.dials.com

Try `dials --help`.

Install the CLI and walk the same audited paths the console exposes. Mock mode by default.