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.
In a new project, initialise shadcn first. Skip this if components.json already exists.
npx shadcn@latest initMint a token at mint-me.aryank.space. It is shown once and never stored in readable form, so copy it before closing the page.
Put it in .env.local. An exported shell variable works too, but the file survives a new terminal.
BLANK_REGISTRY_TOKEN=blank_your_token_hereMerge 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.
"registries": {
"@compronents": {
"url": "https://ui.aryank.space/r/{name}.json",
"headers": { "Authorization": "Bearer ${BLANK_REGISTRY_TOKEN}" }
}
}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-zinniaSkip 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}.jsonWithout 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"- “requires the following environment variables” means the namespace is wired but
BLANK_REGISTRY_TOKENis 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.
/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.