{
  "slug": "registry/code-integration",
  "title": "Code integration",
  "description": "How Cuitty Code integrates with the standalone Cuitty Registry service.",
  "url": "https://cuitty.com/docs/registry/code-integration",
  "markdown_url": "https://cuitty.com/docs/registry/code-integration.md",
  "json_url": "https://cuitty.com/docs/registry/code-integration.json",
  "frontmatter": {
    "title": "Code integration",
    "description": "How Cuitty Code integrates with the standalone Cuitty Registry service.",
    "order": 8,
    "section": "Registry",
    "updatedAt": "2026-06-09"
  },
  "headings": [
    {
      "depth": 2,
      "slug": "integration-points",
      "text": "Integration points"
    },
    {
      "depth": 2,
      "slug": "endpoint-discovery",
      "text": "Endpoint discovery"
    },
    {
      "depth": 2,
      "slug": "compatibility",
      "text": "Compatibility"
    }
  ],
  "body_markdown": "Cuitty Code integrates with Cuitty Registry without owning registry protocol behavior or registry storage. Code should call Registry through `@cuitty/registry`, service clients, or compatibility proxy routes during migration.\n\n## Integration points\n\n- Repository releases can publish build artifacts to Registry.\n- CI pipelines can create scoped tokens and publish packages after protected checks pass.\n- Repository pages can show package provenance, versions, images, and SBOM links from Registry.\n- Code Apps can target Registry namespaces and packages when their manifests request package permissions.\n- Shared Cuitty Auth and SpiceDB relationships let teams express one policy across repositories, apps, packages, and organizations.\n\n## Endpoint discovery\n\nExpose Registry separately from Code:\n\n```toml\n[products.code]\nurl = \"https://code.example.com\"\n\n[products.registry]\nurl = \"https://registry.example.com\"\n```\n\nClient code should discover and instantiate Registry directly:\n\n```ts\nimport { createRegistryClient } from \"@cuitty/registry/client\";\n\nconst registry = createRegistryClient({\n  baseUrl: \"https://registry.example.com\",\n  token: process.env.CUITTY_TOKEN,\n});\n\nconst packages = await registry.packages.list({\n  namespace: \"acme\",\n  kind: \"oci\",\n});\n```\n\n## Compatibility\n\nOlder Code registry URLs should redirect or proxy for a compatibility release. New Code features should not create Registry metadata directly, write Registry blobs under the Code data directory, or duplicate Registry management UI inside the Code frontend.\n\nUse `/product/registry` and `/docs/registry` for product and operator documentation.",
  "links_out": []
}