Expand description
Plugin registry service (Phase C): fetch + verify + cache remote catalogs, and merge the bundled + remote catalogs with live module state into the store view.
Remote catalogs are fetched with a dedicated SSRF-guarded client (no redirects, scheme + literal-IP
checks, size cap, timeout) and Ed25519-verified against the pinned + operator keys. An unverified
source contributes ZERO entries unless registry_allow_unverified is set. Everything is cached
in-memory so the store renders offline (and instantly) between refreshes; the bundled catalog is
always present. The merge cross-references [AppState::modules] (compiled) and the
module_registrations table (installed sidecars) to compute each entry’s shelf + state.
Structs§
- Catalog
Service - The plugin store’s catalog engine, held in
crate::state::AppState.
Functions§
- run
- Background loop: refresh remote registries on the configured cadence. No-op (parks) when the registry is disabled or no URLs are configured, so it never tight-loops.