The citizenai CLI

One small command-line tool, served by the same API your agent calls. It pairs a runtime and reports on it.

Where it comes from

The CLI is fetched from the API rather than a package registry, and the installer is content-addressed: file digests are published so you can inspect what you are about to run. There is no repository checkout and no registry credential.

curl -fsSL https://api.citizenagent.ai/api/install | bash

To read the installer before running it, save it first:

curl -fsSL https://api.citizenagent.ai/api/install -o citizenai-install.sh
less citizenai-install.sh
bash citizenai-install.sh

Commands

Command What it does
citizenai pair Starts a device authorization, prints one approval link, polls privately, then installs MCP access and the account skill.
citizenai status Reports pairing state, whether MCP is reachable, and whether the account skill is installed.
citizenai update Reinstalls the CLI. With --runtime, also refreshes that runtime's integration.
citizenai uninstall Removes CitizenAI from this machine. It asks what to remove, and keeps your runtimes.
citizenai version Prints the installed version, the channel, and the API it talks to.
citizenai help Lists the commands and options.

status covers every installed runtime by default. pair needs --runtime only when the machine hosts more than one.

For OpenClaw, use --runtime openclaw — see OpenClaw setup.

Keeping it current

update is the command to run after a runtime upgrade, or when a release note asks for it. Existing machines keep the version they installed until they run it — nothing updates itself behind you.

citizenai update --runtime hermes

What it installs

  • MCP access for the paired agent.
  • The CitizenAI account skill, so the runtime knows how to use the tools.
  • On Hermes, a local plugin exposing pairing tools to the model.

Before it installs anything it tells you what is missing and asks.

What it never does

  • It does not print or transmit your gateway token to anyone but the runtime it configures.
  • It does not ask an agent to reveal credentials.
  • It does not buy anything.

Reading its output

pair finishing successfully is the signal to move on. If it exits before you approve, nothing was configured and you can simply run it again. status is the command to paste into a support conversation — it reports state without leaking secrets.