Temple Archives
The telemetry archive — Farsight, the feed registry, the MQTT topic map.
The Temple Archives is the telemetry side of the fleet — the long-running listeners that subscribe to MQTT topics, persist what they hear, and project it through a Farsight API that other systems can query.
It is not a real-time visualization surface. That's the Galaxy Map and HoloVids. The Archives are for the slow, accountable, queryable view: "what was happening on this topic at this time, and where did the data come from?"
What's in the Archives
| Piece | What it is |
|---|---|
| Farsight API | The HTTP read surface — query telemetry by topic, time range, payload shape |
| Feed registry | A catalogue of every persistent listener (MQTT topic → schema → persistence rule) |
| MQTT topic map | Documented topics: who publishes, what shape, what cadence — visible in the Settings → Temple Archives view |
| Persistence rules | The "what do we keep" rules per topic: rolling 7 days, full retention, sample-only, etc. |
| 4817 | Embedded console for 4817.r2d2.office.ilab.zone — full-bleed iframe in the dashboard, plus a sidebar quick-link that opens it in a new tab. URL is overridable via NEXT_PUBLIC_ARCHIVES_4817_URL. The STANAG 4817 HIBW ingress/egress that backs it is documented on the STANAG 4817 page. |
Config — archives-config.yaml
farsight:
baseUrl: "http://farsight.temple-archives:8080"
retention:
default: "30d"
overrides:
- { topic: "fleet/critical/+", retention: "365d" }
feeds:
- id: nodered-fleet-status
topic: "fleet/+/status"
publisher: "nr-prod-01..05"
shape: { instance: string, status: string, ts: number }
cadence: "5s"
persistence: rolling-30d
- id: restreamer-events
topic: "restreamer/events/#"
publisher: "datarhei/core"
shape: { event: string, processId: string, ts: number, payload: object }
cadence: "burst"
persistence: rolling-7dThe file is editable in Settings → Temple Archives and committed to git. Adding a new listener means adding an entry here, then deploying — there's no "add a listener from the UI without committing" path on purpose. Persistent telemetry is a slow, deliberate change.
The HoloNet relationship
HoloNet (on the Force page) is the browse surface for MQTT. The Archives are the persist + query surface. They share the same broker (TBMQ) and the same topic map, but they're independent — HoloNet doesn't need the Archives to be online, and the Archives don't need HoloNet to exist.
If an operator wants to debug a single topic in real-time, HoloNet is the right tool. If an operator wants to ask "what did this topic look like last Tuesday at 3am", that's the Archives.
Routes
GET /api/republiccovers the Republic side.- The Archives plane does not yet have its own dashboard-side route — Farsight is proxied at the cluster level and queried directly by the client. This is a deliberate optimization (Farsight responses can be large) and a candidate for a server-routed caching layer later.
Operational notes
- TBMQ + redis-cluster. If the host node carrying a redis-cluster pod restarts,
the
nodes.conffile in that pod's PV can be corrupted, which surfaces as the Archives losing subscriptions. Recovery isFORGET+MEET+REPLICATEagainst the broken peer — the runbook lives in the team'sbdknowledge base. - Snapshot ingest path is separate. Camera-feed snapshots go through
POST /api/restreaming/snapshotsand live in ReductStore — they are not in the Archives. The two collections have different retention rules and different access patterns.
Built on
| Layer | Tech | Page |
|---|---|---|
| Tables / lists | @tanstack/react-table via DataView | TanStack Table |
YAML editor (archives-config.yaml) | @monaco-editor/react | Monaco |
| MQTT broker upstream | TBMQ + redis-cluster | TBMQ |
| Farsight API upstream | In-cluster Farsight service | (chart in repo) |
| Snapshot ingest (sibling path) | ReductStore (not Archives) | ReductStore |