Skip to content

One registry over the command line, HTTP, OpenAPI, Swagger UI and MCP

The Rust executable serves the layer read-only over stdio MCP, MCP over HTTP, routes under /api/v1/, an OpenAPI document with a Swagger UI, and a command line, all derived from the capability registry; one shared server per repository, and every attached client is a peer the others can see.

Every agent, script and person reads the same repository through the interface it already speaks, and none of the interfaces is maintained by hand.

status
stable

What it does

The first majordomus mcp in a repository binds one shared server on the loopback interface and logs every surface it serves: the home page, this documentation, the Cockpit, the Swagger UI, the OpenAPI document, the capability routes and MCP over HTTP. Every later client attaches to it instead of starting another, and the server ends when its last client leaves. The client configurations at the repository root — one per provider that reads one, as docs/generated/providers.md lists them — name one launcher, so opening the repository in any of them is enough.

What the server answers is the registry: a tool, a resource, a route or a command exists because a declaration exists, and the same declaration is what the reference and the website render. A surface — the documentation mount, a generated report, the Swagger UI — is discovered from the thing that produces it and resolved once into a topology the router, the home page, the publication and the validator all read.

What it does not do

Nothing here writes to the repository: every capability over MCP and HTTP is a read, and the one command that changes anything changes this process's memory. There is no authentication and no remote binding by default; the server is for the clients on this machine. It does not run a model and it does not route work to one.

The capabilities behind it

The capability modules of the executable this feature names, each with the capabilities it composes. The command line, the HTTP route, the MCP tool and the reference beside every row are projections of one declaration, not four registrations.

Repository repository behaviorally verified

The repository this process serves: its layer, its git state, the state of the index built from it, and its scope: what a worker reads of it and what it never reads.

apps/majordomus-cli/src/capability/builtin/repository.rs

Objects objects behaviorally verified

The declarative objects of the repository's AI layer: rules, prompts, profiles, policy, documents, milestones, issues, claims, and whatever kinds the repository adds; listed, read by URI, and searched.

apps/majordomus-cli/src/capability/builtin/objects.rs

Web surfaces web behaviorally verified

What this repository exposes over HTTP, resolved from the producers that make it rather than from a register anybody maintains: the routes the executable answers itself, the documentation build, and every generated report that declared its own mount. The same resolution serves the router, renders the home page and composes a publication.

apps/majordomus-cli/src/capability/builtin/web.rs

What it answers

Operational moments from the Why catalogue that name one of this feature's mechanisms. Nothing here was assigned: a moment appears because it names a rule, a command, a capability or a claim this feature also names.

The rules that hold it

  • blockingA web surface is declared once and every web projection is derived from itproject.web-surface-declared-once
  • blockingA web surface is discovered from its producer, never registered twiceproject.web-surface-topology
  • blockingA native command line command exists only with its documentation and its executable examplesproject.native-cli-documented
  • blockingNothing a client leaves behind locks another client outproject.shared-server-resilience

What is guaranteed

Executable use cases