Skip to main content

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

ComponentResponsibility
Registry APIAdmin API, npm, Cargo, PyPI, and OCI protocol endpoints
Store recordsNamespaces, packages, versions, tokens, uploads, quotas, and indexes
Store blobsTarballs, crates, wheels, sdists, OCI manifests, and OCI layers
Store eventsPublish, yank, unyank, visibility, transfer, cleanup, and migration events
SpiceDBNamespace, package, token, publish, install, and admin permissions
Auth issuerUser and service-token identity
WorkerOutbox 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

  1. Start Store records, events, and blob storage.
  2. Start SpiceDB and load the Registry authorization schema.
  3. Start the auth issuer and provision the cuitty-registry client.
  4. Run Registry migrations.
  5. Start the Registry API and worker.
  6. Run native-client smoke checks for each enabled protocol.
  7. Configure backup jobs for Store records, events, and blobs.

Use the operator runbook for smoke checks, recovery, and failure-mode handling.