# The cento CLI (/docs/developers/cli)



The `cento` CLI is one binary with two distinct roles depending on where it
runs.

## Host commands — before any workspace exists [#host-commands--before-any-workspace-exists]

Run on your machine to install, pair, and verify. All host mutation is
recipe-backed: the CLI executes declared recipes, so every install path
(curl script, PowerShell, package manager, coding agent) behaves identically.

| Command              | What it does                                                                                                                    |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `cento host install` | The canonical setup command: stages the daemon, registers OS startup, pairs if needed, starts the daemon, verifies. Idempotent. |
| `cento login`        | Device-code pairing: prints an approval URL, waits for your browser approval, stores the credential securely.                   |
| `cento doctor`       | Structured readiness report (`--json` for machines). Exit 0 only when fully ready.                                              |
| `cento update`       | Updates a script-installed CLI from the signed release manifest; package-manager installs update through their package manager. |

## Config commands — inside a workspace [#config-commands--inside-a-workspace]

Inside a Cento workspace, the CLI records declarative configuration intent
(tools, skills, commands, hooks, MCP servers) with a noun-first grammar:

```bash
cento <domain> <action> [name] [flags]
```

For example, `cento tool add`, `cento skill list`, `cento mcp add`. These
write intent to your Cento account rather than editing files by hand, so
workspaces stay reproducible.

A full command reference will be generated from the CLI's own definitions —
the same no-drift discipline as the rest of Cento.
