Skip to content
ui.artbloomui.artbloom home
Sign up

Docs / CLI

ui.artbloom

No global install and no lock-in: it runs from npx, writes plain files, and never adds itself to your dependencies.

Commands

npx ui.artbloom add <name...>

Fetch one or more pieces and write their files into the project. Names are the install names shown on every item page. Anything too big to inline — a template's images, models, audio — is streamed to disk alongside them.

npx ui.artbloom list [--kind <kind>]

Print the catalogue: name, kind, and one-line description. Filter with templates or animations.

npx ui.artbloom info <name>

Show exactly which files a piece would write, which of them your project already has, the npm packages it needs, and the size of the assets it would download. Writes nothing.

npx ui.artbloom init

Write a ui.artbloom.json so you stop passing paths on every call. Optional — the CLI guesses sensible defaults without it.

Flags

All of these apply to add.

-y, --yes
Answer every prompt with the default. For CI.
-o, --overwrite
Replace files that already exist. Off by default — a clash is an error.
-c, --cwd <path>
Project root. Defaults to the current directory.
--css <path>
Stylesheet that receives keyframes. Default: the global stylesheet it finds, usually app/globals.css.
--ui <path>
Where component files land. Default: components/ui.
--registry <url>
Read from a different registry origin. For self-hosting or a fork.
--dry-run
Print the plan and exit. Nothing is written, nothing is installed.
--no-deps
Skip the npm install step. You handle the packages yourself.
-s, --silent
No output except errors.

Exit codes

  • 0 — everything asked for was written.
  • 1 — the run did not finish. An unknown name, a file clash without --overwrite, an unreachable registry, or a refused prompt is caught while the install is still being planned, so the project is left exactly as it was. A package manager that fails, or a missing stylesheet, exits 1 too: the files that already landed stay on disk, and the CLI prints the command that finishes the job.

Self-hosting

--registry points at any origin that serves the same JSON shape. That is the whole integration surface — see the item schema and the registry notes.

$ npx ui.artbloom add marquee

  marquee  animation by @artbloom
  Seamless infinite scroller, horizontal or vertical,
  with edge fades and pause-on-hover.

  will write
    components/ui/marquee.tsx
    lib/utils.ts
  will append 2 keyframes to app/globals.css
  will install clsx@2.1.1, tailwind-merge@3.6.0

? Proceed? (Y/n) y

 wrote 2 files
 updated app/globals.css
 installed 2 packages

  done in 4.2s
  https://ui.artbloom.tech/artbloom/animations/marquee
ui.artbloom.json
{
  "registry": "https://ui.artbloom.tech",
  "alias": "@",
  "paths": {
    "ui": "components/ui",
    "pages": "app",
    "hooks": "hooks",
    "css": "app/globals.css"
  }
}