Runek is a source registry of procedural 3D components for React Three Fiber — pull a component's source into your project and own it (shadcn-style). Every component — a bookshelf, a lake, a whole house — generates its own geometry from props and a seed. No binary assets, no model files, no CDN. A whole world is just data: diffable, forkable, version-controlled like any repo.
Think "shadcn for 3D worlds."
Why Runek
- Procedural-first — geometry from props +
seed; no.glb, no textures, no CDN. - A world is data — every component is a pure, deterministic function of its props.
- Seeded determinism — same seed → same result, on every machine and every render.
- Re-themeable — components default their colors to a world palette; swap the palette, re-skin the world.
- Local-first — no backend; a world deploys as a static site.
- You own the components — component source is copied into your project to edit and fork; the small
@runek/coreruntime comes from npm.
Getting started
npx @runek/cli init # writes runek.config.json + the install dir
npx @runek/cli add player terrain bookshelf # pulls source + deps into your project
npx @runek/cli list # browse the catalog
import { World } from '@runek/core'
import { Bookshelf } from './runek/Bookshelf'
import { Player } from './runek/Player'
import { Terrain } from './runek/Terrain'
export function FirstWorld() {
return (
<World>
<Terrain size={[40, 40]} />
<Bookshelf position={[0, 1, 0]} seed={42} fill={0.8} />
<Player />
</World>
)
}
Same seed → same world, every time.
More
- Docs · Gallery · Walk the library
- Helicon — the showcase world: a walkable, editable procedural island built entirely from Runek components, its whole scene defined as a single JSON file.
- Source: github.com/nullorder/runek