Backed by: the manifest. Scope: manifest:read.
What the manifest carries
It is the same manifest your own client would read. The overview pane is where you land first, the catalog is what there is to compose, and versions and upgrades is what the version numbers mean.
Per capability: its name, its version, the config keys it chose to expose, its current values for them, its health keys, and its admin routes — path, method, and required scope.
Plus the environment, the connection id, and the scopes you granted.
Discovery over configuration
The dashboard composes its navigation and its calls from this, rather than from settings somebody maintains or a route table it ships with.
Run pithy add support and a working support pane appears on the next visit — panes and the calls behind them, with nothing for either side to configure.
The paths are the resolved ones
Every capability’s mount point is configurable.
A client that hardcoded /payments would 404 against exactly the adopters who customized anything — so each capability builds its declaration from its resolved config, and the manifest names where things actually are.
Empty is a value
A capability with no management surface reports an empty list rather than being absent.
Composed, but nothing to administer** and not installed are different facts, and a client that cannot tell them apart renders the wrong thing for both.**
The same holds for config keys and their values: [] and {} rather than omitted.
The declaration is checked, not trusted
No schema version
Deliberately. A client dispatches on what your Worker declares right now — a schema version would be a second source of truth to keep in sync with the first.
Versions
Each capability is versioned independently, so you upgrade what you want when you want.
pithy doctor reports the same thing from the terminal, including which have newer releases.
What the scope list is for
Held against each route’s declared scope, it is what lets an action you did not grant be grayed out rather than offered and answered with a 403.