Full command reference for the sora-cli tool — add, list, diff, and doctor.
sora-cli is a standalone CLI for installing components from any shadcn-compatible registry into your project. It defaults to the Sora UI registry, so it skips the extra step of registering the @soralabs scope that the shadcn CLI needs — but it also works against any other registry via --registry <url>.
sora-cli is in early development — installation may fail in the current release. If something breaks, fall back to the shadcn CLI install commands and report an issue.
You still need shadcn@latest init first — see Installation — since that sets up Tailwind, CSS variables, and the @/ import alias every component depends on.
addResolves the dependency tree for the requested component(s), writes files into your project, and installs npm dependencies with your detected package manager (bun/pnpm/yarn/npm).
--yes matters most when an agent or script runs the CLI non-interactively: without it, add prints a confirmation prompt and — since there's no TTY — silently exits successfully without installing anything. Pair with --force to also skip per-file overwrite prompts.
listLists every component the target registry exposes. Add --json for machine-readable output (safe to pipe — errors and status messages go to stderr, never mixed into the JSON on stdout).
diffRead-only comparison of installed component files against the current registry content — reports drift without writing anything.
If files differ, re-run add <component> --force --yes to apply the update.
doctorDiagnoses common project setup issues before you install anything: Node version, package manager/lockfile conflicts, components.json validity, path alias configuration, Tailwind/React versions, cn() util dependencies, registry reachability, and whether a newer sora-cli version is available.
| Flag | Description |
|---|---|
--cwd, -c <path> | Run as if started in <path> — for monorepos, e.g. packages/ui. Picks up that workspace's own tsconfig.json/components.json aliases. |
--path <path> | Custom component install path. Only changes where files are written, without affecting which config gets detected (unlike --cwd). |
--registry <name|url> | Product registry key (default: ui) or a full registry URL. Must be HTTPS unless targeting localhost/127.0.0.1. |
--force | Overwrite existing files without asking. |
--yes, -y | Skip the install confirmation prompt — for scripts/CI. |
--dry-run | Preview changes without writing files or installing packages. |
--silent, -s | Suppress per-file output, keep summary lines. |
--view | Print resolved file contents instead of writing them. |
--json | Output as JSON (list, doctor). |
--version, -v | Show the CLI version. |
--help, -h | Show the help message. |
SORA_NO_UPDATE_CHECK — set to disable the npm update check that runs on every invocation (printed to stderr, never mixed into --json output). Useful in CI.
The CLI fetches a shadcn-compatible registry (<product-url>/r/registry.json, <product-url>/r/<name>.json), resolves the dependency tree, writes files into your project, and installs npm dependencies with your detected package manager.
Since components are copied into your project rather than installed as a package, diff is the way to check whether the registry has changed a component since you installed it, and add <component> --force --yes is how you apply that update.
Registry content isn't cryptographically signed, so only point --registry at a source you trust — it's written into your project and its dependency list is fed straight into your package manager.
Use --cwd <path> (or -c) to run add/diff/doctor as if the CLI had been started inside <path> — it picks up that workspace's own tsconfig.json/components.json aliases.
If you only need to change where files land without changing which config is read, use --path instead of --cwd.
get_component_info MCP tool returns the exact sora-cli command to run for a given componentBuilt by Axyl. A motion-first component registry for React.
Last updated: 8/5/2026