Registry
Copy-paste distribution. Each item is a self-contained JSON with embedded source.
The Gremorie registry is the source of truth for every primitive,
block, and artifact. It is a flat directory of JSON files served from
this site, indexed by /r/registry.json.
The model
Gremorie follows the same shape pioneered by shadcn/ui: you do not
install a versioned package. You copy the source into your project, and
the code becomes yours.
The benefits compound:
- No black-box upgrade path -- you control every file
- LLMs can read the registry directly and emit valid usage
- The same source ships to Angular and React via separate registries
Layout
| Path | Purpose |
|---|---|
/r/registry.json | Index of every item (id, framework, category) |
/r/<framework>/<item>.json | Full item: source files, deps, registry deps |
/schema/registry-item.json | JSON Schema for a single item |
Item shape
Each item is a single JSON document with embedded source files:
{
"name": "rx-button",
"type": "registry:ui",
"framework": "react",
"dependencies": ["@radix-ui/react-slot"],
"registryDependencies": ["rx-core"],
"files": [
{
"path": "rx-button/button.tsx",
"content": "// component source here",
"type": "registry:ui"
}
]
}dependencies-- npm packages the consumer must installregistryDependencies-- other registry items the CLI must pull infiles-- embedded source written verbatim to the project
Consuming the registry yourself
The CLI is the recommended way. But the registry is a flat HTTP API; any tool can read it.
# Get the index
curl https://gremorie.com/r/registry.json | jq '.items[0:5]'
# Fetch a single item
curl https://gremorie.com/r/rx/rx-button.json | jq '.files[0].content'This is the same path an MCP client takes when an LLM queries the registry through the MCP server.
Editions
Two editions are published from the same monorepo:
/r/rx/*-- React primitives/r/ng/*-- Angular primitives
The Angular edition is the active workstream. The React edition is in progress; see the Architecture doc for the roadmap.
Source
The registry generator lives in packages/registry
on GitHub. It walks the workspace, builds an item JSON per primitive,
and writes the index. Generation runs on every push to develop.