Getting started
Four steps to a working mirror, then where to read more. Every command on this page is a real verb — checked against the CLI, not written from memory.
Start here
- 01
Run it
One process serves every backend. It starts with no database and no object store, keeping blobs on local disk. It serves pulls like that, but the catalog lives in Postgres, so until one is configured listing and pinning are refused with a 503 that says so. One script sets up a local database.
bash # server, build service, and the world CLI make build # put world on your PATH (~/.local/bin) make -C lib-world-cli-cpp install # optional: a local Postgres for the catalog ./lib-world-server-cpp/scripts/pg-local.sh up set -a; . ~/.lib-world/postgres-local.env; set +a # serves on 127.0.0.1:10220, and fails if it does not make server-start # health, backends, and what each one verifies against world status - 02
Point a client at it
Each backend speaks its ecosystem's real protocol, so adopting it is a config line rather than a migration. npm is the shortest example; the exact line for each of the thirteen backends is on its own page.
~/.npmrc registry=http://HOST:10220/npm/ - 03
Warm it before you need it
A cache can only serve what it has already been asked for once. Prefetch runs as a background job you can poll, so priming a whole dependency tree does not block on one request.
bash world prefetch pip requests world prefetch docker alpine:3.19 world git add torvalds/linux # what you actually have now world ls --backend pip --limit 20 - 04
Keep what matters
A mirror that only grows fills the disk. Retention reclaims by age and last use; anything pinned is protected, and every change to the mirror is recorded.
bash world pin cargo <blob-key> world gc world audit --since 2026-09-01
Reference
The client line for each of the thirteen backends, what every feature actually does, and the CLI that drives all of it.