Start
Quickstart
Install Excellent, wire it to your agent, and read your first checked result.
On this page
This page walks from nothing to a checked result. Every block marked real output was copied from an actual terminal. Where a step has no transcript yet, it says so rather than showing you invented output.
1. Install
curl -fsSL https://excellent.so/install.sh | shYou need macOS and Node.js 22.3 or newer. The script checks the Node version,
downloads the release, verifies it against the published SHA256SUMS, and installs
@excellent-so/cli globally. If the checksum is missing or does not match, it stops
and installs nothing.
2. Confirm the CLI is there
excellent --versionThat prints excellent followed by a version number. No transcript here on
purpose: excellent --version reports whatever is in the package.json it was
installed from, so the number depends on when you installed and any output
pasted here would be wrong by the next publish. The current published version is
stated once, on /install.
If the command is not found, open a new terminal so your shell picks up
~/.local/bin.
3. Scaffold a repository
Run this inside a repository you already use with your agent.
Real output:
$ cd your-repo
$ excellent init
✓ created AGENTS.md
✓ created .excellent/context.md
✓ created .excellent/cli.toml
Edit these, then run 'excellent' here — the chat reads them as context.AGENTS.md is what your agent reads. .excellent/context.md is the
repository context Excellent itself loads. Edit both before your first real task —
they are the difference between a useful check and a vague one.
4. Check the local setup
Real output, from a development machine. Absolute paths are shortened to ~, and
the line naming the signed-in model account is removed. Your runtime, providers
and coding CLIs lines will differ.
This capture is from a monorepo checkout, not an npm install — that is what the
runtime companion (monorepo) line means, and it is why the header reads cli 0.0.0. The monorepo carries a placeholder version; the real number is set at
publish time. Installed from npm, that header shows the published version
instead.
$ excellent doctor
Excellent CLI doctor (node v24.20.0 · cli 0.0.0)
✓ runtime companion (monorepo) — monorepo checkout at ~/Sites/micro
home ~/Sites/micro
✓ database ~/.excellent/data.db (exists)
0 workspace(s)
✓ providers no HTTP keys set
local runtimes: ollama, lmstudio, vllm
✓ coding CLIs claude 2.1.280, codex 0.156.1, grok 1.0.34
✓ PATH ~/.local/bin on PATH
✓ keystore present, recovery NOT set
✓ telemetry opt-in, off by default; 16 scrubbed event types disclosed
✓ single-writer off — no writer elected
✓ ready — run excellent to start chatting.Anything marked ! is a thing to fix before you rely on a result.
5. Your agent is already wired
The installer registered the Excellent MCP server in every MCP-capable agent it found on your machine — Claude Code, Cursor, Codex and others. You do not need to configure anything by hand. To see exactly which files it wrote and how to undo it, read Claude Code and Cursor.
If you installed the CLI some other way, register it now:
excellent install-agent-mcps6. Run a task and get it checked
Work in Excellent is a Work item, an attempt against it, and a verification of that attempt. The agent does not get to close its own loop: the verifier must be a different actor in a different execution boundary, which is why the result means something. How verification decides explains the rules.
Two ways in.
Through your agent. This is the normal path. With the MCP server
registered, the agent opens an attempt, submits its output, and asks for a status —
using the universal_verification_open_attempt, universal_verification_submit_attempt
and universal_verification_status tools. You do not type these; the agent calls them.
From the terminal, against an existing task id:
excellent run --agent <role> --task <task-id>--agent is a role name and --task must be an existing numeric task id. A free-text
objective is refused with a structured hint — file it as a task first. Then:
excellent verify <work-id>Not yet transcribed. We have not published a real end-to-end transcript of step 6 against a fresh repository. The commands and tool names above are read from the shipped CLI, but the output is deliberately omitted rather than invented.
7. Verify the receipt yourself
A verification produces a signed receipt. You can check the repository's sample receipt and public key with the standalone verifier. It needs no database, network, or Excellent installation. Copy the verifier and signed receipt outside the repo; that is the point of the check:
mkdir /tmp/receipt-check && cd /tmp/receipt-check
cp <repo>/scripts/lib/offline-receipt-verifier.mjs .
cp <repo>/docs/v0/release-receipt.json .
cp <repo>/docs/v0/release-receipt-public-key.pem .
node offline-receipt-verifier.mjs release-receipt.json release-receipt-public-key.pemReplace <repo> with the path to your Excellent checkout. The real output is:
{
"bound": true,
"receiptId": "receipt_v0_release_4df3dd89b3e4d0a0",
"tenantId": "tenant_v0_release",
"decisionDisclosure": "UNDISCLOSED",
"claimedKeyId": "v0-ed25519-2026-08",
"claimedSignatureAlgorithm": "ed25519",
"signatureAlgorithm": "ed25519",
"payloadHashMatches": true,
"signatureValid": true,
"excellentReachable": false,
"excellentResolutionError": "ERR_MODULE_NOT_FOUND",
…
}The repository also includes a deliberately altered receipt. Copy it into the same directory and run the verifier again:
cp <repo>/docs/v0/adversary/receipt-tamper-fixtures/tampered-receipt.json .
node offline-receipt-verifier.mjs tampered-receipt.json release-receipt-public-key.pemIt demonstrates the negative result shape:
{ "bound": false, "receiptId": null, "tenantId": null, …,
"claimed": { "receiptId": "receipt_exp_v0_proof_cand_v0_proof", … },
"claimedKeyId": "v0-ed25519-2026-08",
"payloadHashMatches": false,
"signatureValid": false,
"tamperedSignatureRejected": true,
"tamperedContentRejected": true }A tampered receipt can still produce exit 0 because the verifier reached an answer;
read bound and the signature/hash fields. See Sample receipt
for the complete document and explanation.
Where to go next
- CLI reference — every command that exists, and its flags.
- How verification decides — evidence, authority, and why a model can never sign off a pass.
- Claude Code and Cursor — the exact config each agent gets.
Undo it
There is no excellent uninstall command. Remove it by hand:
excellent-mcp uninstall-skills
npm uninstall -g @excellent-so/cli
rm -rf ~/.excellentThe last command deletes every local record Excellent kept. It is irreversible.