# 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 [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. # For developers (/docs/developers) This section covers the developer-facing surface of Cento: the `cento` CLI and pointers for going deeper. * **[The cento CLI](/docs/developers/cli)** — host commands (install, login, doctor) and the in-workspace config commands. * **Architecture** — the deep architecture documentation lives in the repository itself and is aimed at people building Cento, not using it. Enumerable facts (command sets, contracts, schemas) are derived from the code that implements them — pages here describe *how things fit*, not lists that could drift. # Cento documentation (/docs) Cento is the command center for everything you build. You describe what you want, coding agents build it in **real workspaces on your own machine** — real repos, real terminals, real services — and you watch every project run live in one dashboard. ## Where to start [#where-to-start] # FAQ (/docs/users/faq) ## Where does my code run? [#where-does-my-code-run] On your machine. Workspaces are real directories with real processes — the browser is a window onto them, not a remote sandbox. Your code never has to leave your computer for agents to work on it. ## What does Cento cost to run? [#what-does-cento-cost-to-run] Your own compute — so effectively nothing extra. Cento coordinates through the cloud, but builds, dev servers, and agent runs execute locally. ## Does Cento need an open port on my machine? [#does-cento-need-an-open-port-on-my-machine] No. The daemon dials out and holds an outbound connection. Nothing on your machine accepts inbound traffic from the internet. ## What are the prerequisites? [#what-are-the-prerequisites] `git`, `bash`, `curl`, and CA certificates — present by default on macOS and nearly every Linux. Cento installs its own toolchain (Node, Bun, tmux) in its own directory; it does not touch your system's versions. ## How do I uninstall a machine? [#how-do-i-uninstall-a-machine] Remove it from the dashboard to revoke its access, then delete `~/.cento` on the machine. If you installed via a package manager, remove the package too. ## Windows? [#windows] Supported through WSL. The PowerShell installer sets up or reuses a WSL distribution and keeps everything running inside it; you use the same dashboard and CLI as on any other platform. # Getting started (/docs/users/getting-started) ## 1. Install Cento [#1-install-cento] Run one command in your terminal: ```bash curl -fsSL https://get.cento.app | sh ``` The script downloads the signed `cento` CLI for your platform and immediately runs `cento host install`, which sets everything up: the background daemon, automatic start on login, and pairing. See [install](/docs/users/install) for Windows and other paths. ## 2. Approve pairing [#2-approve-pairing] During install, Cento prints a link. Open it in a browser where you're signed in to Cento and click **Approve** — that's the only manual step. Your machine is now linked to your account. Details: [pairing](/docs/users/pairing). ## 3. Verify [#3-verify] ```bash cento doctor ``` Exit code 0 means your machine is ready. Anything missing is listed with what to do about it. ## 4. Create your first workspace [#4-create-your-first-workspace] Open the Cento dashboard in your browser, create a project, and start a workspace. The workspace runs on your machine — agents get a real checkout, real terminals, and real running services, and you watch it all live from the browser. # For users (/docs/users) Cento runs in your browser, but the work happens on **your machine**: a small background service (the daemon) runs workspaces locally, so agents build in real repos with real terminals — and compute costs you nothing extra. Getting productive takes three steps: 1. **[Install](/docs/users/install)** — one command puts the `cento` CLI and the daemon on your machine. 2. **[Pair](/docs/users/pairing)** — one click in your browser links the machine to your account. 3. **Build** — create a workspace from the dashboard and let agents work. If anything is off, [troubleshooting](/docs/users/troubleshooting) shows how `cento doctor` tells you exactly what's missing. # Install (/docs/users/install) Every install path runs the same engine: the `cento` CLI and its `cento host install` command. Pick the entry point that fits how you work. ## Terminal (macOS, Linux, WSL) [#terminal-macos-linux-wsl] ```bash curl -fsSL https://get.cento.app | sh ``` The script detects your platform, downloads and verifies the signed `cento` binary, then hands off to `cento host install`. It never mutates your system itself — all setup logic lives in the CLI. ## PowerShell (Windows) [#powershell-windows] ```powershell irm https://get.cento.app/cli/install.ps1 | iex ``` Same flow as the curl script. On Windows, Cento runs its workspaces inside WSL; the installer guides you through WSL setup if it's missing. ## Coding agent [#coding-agent] Paste this prompt into your coding agent (Cursor, Codex, …): > Set up Cento on this machine by following > [https://cento.sh/install/agent.md](https://cento.sh/install/agent.md). When Cento asks for pairing, show me > the approval link and wait. Stop only when `cento doctor --json` exits 0. The agent installs through the same CLI, pauses when your approval is needed, and verifies the result mechanically. ## What `cento host install` does [#what-cento-host-install-does] 1. Places the Cento daemon (the background service that runs workspaces). 2. Registers it to start automatically on login (systemd, launchd, or a Windows logon task). 3. Runs `cento login` if the machine isn't paired yet — see [pairing](/docs/users/pairing). 4. Starts the daemon and runs the same checks as `cento doctor`. It's idempotent: re-running it converges your machine to a working state rather than breaking an existing install. # Pairing (/docs/users/pairing) Pairing links a machine to your Cento account so the dashboard can see it and run workspaces on it. It happens once per machine and survives restarts. ## How it works [#how-it-works] 1. During install (or when you run `cento login`), the CLI prints an approval link with a short device code. 2. Open the link in a browser where you're signed in to Cento. 3. Click **Approve**. That's the entire manual step. The daemon stores its credential securely on your machine (OS keychain where available) — no token ever passes through your clipboard or shell history. ## Things to know [#things-to-know] * **Pair once.** Restarts never ask again; the machine keeps its identity. * **Revocable.** You can remove a machine from your account in the dashboard; its credential stops working immediately. * **Per machine.** Each machine pairs on its own — there is no credential copying between devices. # Troubleshooting (/docs/users/troubleshooting) ## Start with `cento doctor` [#start-with-cento-doctor] ```bash cento doctor ``` `doctor` checks everything a working Cento machine needs — disk space, the background daemon, automatic startup, pairing, and (on Windows) WSL — and prints a structured report: * **Exit code 0** — your machine is fully ready. There is no partial success. * **Nonzero** — one or more gaps, each with what's missing and what to do. Scripts and coding agents can consume the same report as JSON: ```bash cento doctor --json ``` ## Common fixes [#common-fixes] | Symptom | Fix | | -------------------------------------- | ---------------------------------------------------------------------- | | Machine shows offline in the dashboard | `cento host install` — it restarts the daemon and re-registers startup | | Not paired / login expired | `cento login`, then approve in the browser | | Broken or partial install | Re-run the install command — it converges rather than duplicates | ## Re-running install is safe [#re-running-install-is-safe] `cento host install` is idempotent. When in doubt, run it again: it fixes what's missing and leaves what works untouched.