Self-hosted Registry
Run Cuitty Registry as a standalone service backed by Cuitty Store.
Cuitty Registry self-hosts as its own service. The deployment owns package metadata, protocol indexes, upload sessions, audit events, quotas, and blobs through Cuitty Store instead of writing artifacts into a Cuitty Code data directory.
Minimal topology
| Component | Responsibility |
|---|---|
| Registry API | Admin API, npm, Cargo, PyPI, and OCI protocol endpoints |
| Store records | Namespaces, packages, versions, tokens, uploads, quotas, and indexes |
| Store blobs | Tarballs, crates, wheels, sdists, OCI manifests, and OCI layers |
| Store events | Publish, yank, unyank, visibility, transfer, cleanup, and migration events |
| SpiceDB | Namespace, package, token, publish, install, and admin permissions |
| Auth issuer | User and service-token identity |
| Worker | Outbox draining, upload cleanup, index rebuilds, scans, and replication |
Example local profile
[profile.registry-local]
records = "sqlite:///var/lib/cuitty/registry/records.sqlite"
blobs = "file:///var/lib/cuitty/registry/blobs"
events = "sqlite:///var/lib/cuitty/registry/events.sqlite"
Example production profile
[profile.registry-production]
records = "postgres://registry:change-me@postgres/registry"
blobs = "s3://cuitty-registry-artifacts"
events = "postgres://registry:change-me@postgres/registry_events"
Environment
PUBLIC_REGISTRY_URL=https://registry.example.com
AUTH_ISSUER=https://auth.example.com
AUTH_CLIENT_ID=cuitty-registry
SPICEDB_ENDPOINT=https://spicedb.example.com
SPICEDB_PRESHARED_KEY=change-me
CUITTY_STORE_PROFILE=registry-production
REGISTRY_MAX_UPLOAD_BYTES=104857600
REGISTRY_OCI_UPLOAD_TTL_HOURS=24
Operations checklist
- Start Store records, events, and blob storage.
- Start SpiceDB and load the Registry authorization schema.
- Start the auth issuer and provision the
cuitty-registryclient. - Run Registry migrations.
- Start the Registry API and worker.
- Run native-client smoke checks for each enabled protocol.
- Configure backup jobs for Store records, events, and blobs.
Use the operator runbook for smoke checks, recovery, and failure-mode handling.
Previous
Cuitty Registry
Next
npm packages