R2-D2
Dashboard
Node Red
Restreaming
The Force
UpdatedNever
v1.0.0

Overview

Loading…
R2-D2
Dashboard
Node Red
Restreaming
The Force
UpdatedNever
v1.0.0
DDroidspeak / Docs
Operator handbook
Droidspeak
What is R2-D2?
Runtime architectureAuth — Keycloak migration plan
FleetRestreamingGalaxy MapThe RepublicTemple ArchivesSTANAG 4817The Force
Tech StackNext.js 15 + React 19Tailwind v4ZustandTanStack Table + DataViewhls.jsLow-latency playerreagraphoglreact-grid-layoutMonacoScalar API Referencefumadocs
Cluster InfraTrailBaseReductStoreRestreamer (datarhei/core)TBMQKeycloakLonghornkube-vipIngress (Caddy + nginx-ingress + Traefik)Netbird
Operator QA Runbook
Install — RKE2Install — Dokploy
Contributor guideRelease Notes
Components

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

PieceWhat it is
Farsight APIThe HTTP read surface — query telemetry by topic, time range, payload shape
Feed registryA catalogue of every persistent listener (MQTT topic → schema → persistence rule)
MQTT topic mapDocumented topics: who publishes, what shape, what cadence — visible in the Settings → Temple Archives view
Persistence rulesThe "what do we keep" rules per topic: rolling 7 days, full retention, sample-only, etc.
4817Embedded 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-7d

The 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/republic covers 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.conf file in that pod's PV can be corrupted, which surfaces as the Archives losing subscriptions. Recovery is FORGET + MEET + REPLICATE against the broken peer — the runbook lives in the team's bd knowledge base.
  • Snapshot ingest path is separate. Camera-feed snapshots go through POST /api/restreaming/snapshots and live in ReductStore — they are not in the Archives. The two collections have different retention rules and different access patterns.

Built on

LayerTechPage
Tables / lists@tanstack/react-table via DataViewTanStack Table
YAML editor (archives-config.yaml)@monaco-editor/reactMonaco
MQTT broker upstreamTBMQ + redis-clusterTBMQ
Farsight API upstreamIn-cluster Farsight service(chart in repo)
Snapshot ingest (sibling path)ReductStore (not Archives)ReductStore

The Republic

Nations, ShopKeepers, holdings — the political/inventory layer of the fleet.

STANAG 4817

The 4817 archive console embed and the HIBW ingress/egress that bridges ISR and the NATO mesh.

On this page

What's in the ArchivesConfig — archives-config.yamlThe HoloNet relationshipRoutesOperational notesBuilt on