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>.
You still need shadcn@latest init first — see Installation — since that sets up Tailwind, CSS variables, and the @/ import alias every component depends on.
Commands
add
Resolves 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.
list
Lists 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).
diff
Read-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.
doctor
Diagnoses 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.
Options reference
| 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. |
Environment
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.
How it works
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.
Monorepos
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.
See also
- Installation — initial project setup with shadcn/ui
- MCP — the
get_component_infoMCP tool returns the exactsora-clicommand to run for a given component - Troubleshooting — common registry/CLI issues
- GitHub repository
Built by Axyl. A motion-first component registry for React.
Last updated: 7/23/2026