Skip to content

Web console & JSON API

GET / serves a self-contained dashboard (no build step, no external JS) to browse, search, and facet the whole inventory — by type, tool, and scope — preview hydration, and inspect any item down to its manifest and snapshot.

The dashboard is read-only plus previews: installs, updates, pinning, and other state changes always run through the MCP tools / JSON API, never through dashboard buttons. Artifact files are never written from the console.

RouteReturns
GET /api/censustotal vs unique counts, breakdowns by type/tool/scope
GET /api/itemsthe collapsed inventory for the UI
GET /api/item/:idfull body + canonical metadata for one item
GET /api/devices · POST /api/deviceslist / register device profiles
POST /api/hydration/previewa dry-run hydration plan
POST /api/ingestcollector push — { device?, items: ScanItem[] }, ≤500 items / 8 MB per call
POST /api/ingest/reconcile{ device, roots, seenPaths } — drop a device’s vanished items (roots-scoped)
GET | PUT /api/configruntime settings: network-updates toggle + optional GitHub token (persisted in config.json beside the DB)
POST /api/upstream/refreshon-demand update check + drift scan over all linked items
POST /api/upstream/{find,check,pin,unpin}per-item drawer actions mirroring the MCP tools — registry metadata only
GET /api/driftpersisted drift reports (the Drift tab’s data)
GET /health{"status":"ok","indexed":N,"scanning":bool}

If AUTH_TOKEN is set, /mcp and /api require Authorization: Bearer <token>. Binding off loopback (HOST=0.0.0.0) refuses to start without a token, and loopback binds are protected by a DNS-rebinding guard (Host/Origin pinning).