Run the local stack
From a clone of the repository, with Docker and the Compose plugin, start the full local stack — PostgreSQL, Keycloak with a pre-seeded realm, the server, and the SPA on the Vite dev server with hot reload:
docker compose --profile dev up -d --buildTo run the SPA from its production nginx image instead, use the prod profile
(dev and prod are mutually exclusive). Add --profile observability to
either for an OTel Collector and Jaeger:
docker compose --profile prod --profile observability up -d --build| URL | What |
|---|---|
| http://localhost:3000 | Public catalog |
| http://localhost:3000/admin | Admin console (sign in through Keycloak) |
| http://localhost:8081/openapi.yaml | OpenAPI 3.1 document |
| http://localhost:8081/api/v1/mcp/servers | JSON API |
| http://localhost:8080 | Keycloak, realm ai-registry |
| http://localhost:16686 | Jaeger, with the observability profile |
The dev realm’s users, one per authorization path, are defined in
deploy/keycloak-realm-dev.json. Roles are
granted to users or groups per publisher, from the publisher page in the admin
console or through /api/v1/publishers/{slug}/grants.