Skip to content

Web surface

Every surface this repository exposes over HTTP, and the names that are reserved.

Rendered from docs/generated/web.json — the same Markdown GitHub shows.

Everything below is derived from the resolved web topology that the executable serves from. A surface is declared once, where its producer is; the router, the landing page, the machine-readable index and this table are projections of that one resolution. Adding a surface here is not a step — it is what happens.

Reserved names

These paths mean one thing. /docs served the Swagger UI once, and the day real documentation arrived the name meant two things; the rule project.web-surface-declared-once exists so that cannot recur.

RolePath
home/
documentation/docs
swagger/swagger
openapi/openapi.json
capabilities/api/v1/
events/events

Surfaces

SurfacePathKindCategoryOffered toAvailabilityProducer
The capability registry over HTTP/api/v1native-routeapipublicserved-onlycapability registry
The registry, rendered for a person/cockpitnative-routeinterfacepublicserved-onlycockpit
The documentation, as this process serves it/docsstatic-directorydocumentationpublicserved-onlyscripts/site-build --serve
The live channel: what this process's executions are doing/eventsnative-routeprotocolinternalserved-onlyhttp::events
MCP over HTTP for attached clients/mcpnative-routeprotocolinternalserved-onlymcp endpoint
The OpenAPI document of the capability registry/openapi.jsonnative-routeapipublicbothcapability registry
Swagger UI over the OpenAPI document/swaggernative-routedocumentationpublicserved-onlyhttp::swagger
The site as it is deployed/static-directorydocumentationpublicpublished-onlyscripts/site-build
This process, and everything it serves/native-routeinterfacepublicserved-onlyweb::home

Availability says which world a surface belongs to: served-only is answered by a running process, published-only is uploaded as files, both is each. Offered to is whether a person is shown it on the landing page; an internal surface is still served and still introspectable, because hiding a route from its maintainers hides it from nobody else.

Ask a running process the same thing at /api/v1/web/surfaces, or the repository at majordomus web list; majordomus web explain says where each value came from.