PRO

Docs

Compronents is a shadcn-compatible registry. Every item is token gated, so a fresh project needs four things wired up before the first install.

Setup
1

In a new project, initialise shadcn first. Skip this if components.json already exists.

npx shadcn@latest init
2

Mint a token at mint-me.aryank.space. It is shown once and never stored in readable form, so copy it before closing the page.

3

Put it in .env.local. An exported shell variable works too, but the file survives a new terminal.

.env.local
BLANK_REGISTRY_TOKEN=blank_your_token_here
4

Merge this key into the components.json that step 1 created. Add it alongside the existing keys rather than replacing the file: shadcn rejects the config if the keys init wrote are missing. The headers block is the part that matters, since shadcn only sends authentication for a namespaced registry, never for a plain URL.

components.json
"registries": {
  "@compronents": {
    "url": "https://ui.aryank.space/r/{name}.json",
    "headers": { "Authorization": "Bearer ${BLANK_REGISTRY_TOKEN}" }
  }
}
5

Install anything by name. The token is read from the environment, so it never lands in your shell history.

npx shadcn@latest add @compronents/balloon-zinnia
Do not

Skip the registry add subcommand. It writes the namespace as a bare URL string with no headers, so every install then fails with a 401 even when the token is set correctly. Edit components.json by hand as shown above.

npx shadcn@latest registry add @compronents=https://ui.aryank.space/r/{name}.json
One-off

Without a namespace there is nowhere to put a header, so the token rides as a query parameter instead. Fine for a single install, though it does leave the token in your shell history.

npx shadcn@latest add "https://ui.aryank.space/r/balloon-zinnia.json?token=$BLANK_REGISTRY_TOKEN"
If it 401s
  • “requires the following environment variables” means the namespace is wired but BLANK_REGISTRY_TOKEN is not set. Check .env.local.
  • “A registry token is required” means no credential reached the server at all, which usually means the namespace is a bare string rather than the object form above.
  • “not valid or was revoked” means the token was recognised and rejected. Mint a fresh one.
Endpoints
  • /r/registry.json — the catalog (powers list / search)
  • /r/{name}.json — a single installable item
  • Both require a token, sent as Authorization: Bearer, X-Registry-Token, or ?token=.

Browse everything on the index.