auto: docs sync 2026-06-27T12:00:08+00:00

Files changed: .claude/settings.local.json engine/changelog.md engine/lint-report.md vault/docs/software/central.md
This commit is contained in:
echo6-autocommit 2026-06-27 12:00:08 +00:00
commit 2f0bba7f79
4 changed files with 35 additions and 24 deletions

View file

@ -3,7 +3,7 @@ title: central — Data-Hub Spine
type: reference
tags: [recon]
related: ["[[navi]]", "[[services]]", "[[environment]]"]
updated: 2026-06-18
updated: 2026-06-27
---
# central — Data-Hub Spine
@ -13,8 +13,8 @@ central is a multi-domain real-time data-hub spine. Adapters normalize upstream
- **URL (internal):** http://central.echo6.mesh:8000 (mesh-only, no public exposure)
- **Host:** utility CT 104 (unprivileged Ubuntu LXC)
- **Repo:** github.com/zvx-echo6/central (public, Python, branch )
- **Deploy path:** (Python venv, system user)
- **Repo:** github.com/zvx-echo6/central (public, Python, deployed at detached HEAD, tag v0.14.5)
- **Deploy path:** /opt/central (venv: /opt/central/.venv, env: /etc/central/central.env, system user: central)
## Host
@ -22,23 +22,23 @@ central is a multi-domain real-time data-hub spine. Adapters normalize upstream
|-----------|-------|
| Container | utility CT 104 |
| Local IP | 192.168.1.104 |
| Tailscale / mesh | 100.64.0.12 → |
| Tailscale / mesh | 100.64.0.12 → central.echo6.mesh |
| Resources | 4 cores / 12 GB RAM / 100 GB disk |
| OS | Ubuntu LXC (unprivileged) |
## Architecture
The data flow is: upstream APIs → adapters (central-supervisor) → NATS/JetStream :4222 → central-archive (TimescaleDB/PostGIS :5432). The central-gui (FastAPI + HTMX, :8000) exposes the API consumed by navi via .
The data flow is: upstream APIs → adapters (central-supervisor) → NATS/JetStream :4222 → central-archive (TimescaleDB/PostGIS :5432). The central-gui (FastAPI + HTMX, :8000) exposes the API consumed by navi via recon-vm's nginx (port 8440, `^~ /api/traffic/``central.echo6.mesh:8000`).
## Systemd Services
All three units are **enabled and active**; deployment survives reboot.
All three units are **enabled and active**; deployment survives reboot. Deps: `nats-server`, `postgresql@16-main`.
| Unit | Role |
|------|------|
| | Adapter scheduler + CloudEvents publisher |
| | JetStream → TimescaleDB consumer |
| | FastAPI + HTMX web app + API (the :8000 listener) |
| central-supervisor | Adapter scheduler + CloudEvents publisher |
| central-archive | JetStream → TimescaleDB consumer |
| central-gui | FastAPI + HTMX web app + API (the :8000 listener) |
## Ports
@ -49,7 +49,7 @@ All three units are **enabled and active**; deployment survives reboot.
| :8222 | HTTP | NATS monitoring |
| :5432 | TCP | PostgreSQL 16 + TimescaleDB/PostGIS |
## Adapters (~25 active)
## Adapters (23 configured, 22 enabled)
| Domain | Sources |
|--------|---------|
@ -60,7 +60,7 @@ All three units are **enabled and active**; deployment survives reboot.
| Earthquakes | USGS |
| Avalanche | avalanche.org |
| Disasters | GDACS, EONET |
| Satellite | CelesTrak TLE, sat positions/orbits, N2YO passes, satpass predict |
| Satellite | CelesTrak TLE, sat positions/orbits, satpass_predict (n2yo_visualpasses disabled 2026-06-27) |
## GUI / API Surface
@ -70,14 +70,14 @@ Authenticated app with login/sessions/CSRF, first-run setup wizard, operator man
| Endpoint | Format |
|----------|--------|
| | PNG tile (raster) |
| | PBF tile (vector) |
| /api/traffic/flow/{z}/{x}/{y}.png | PNG tile (raster, image/png) |
| /api/traffic/flow/{z}/{x}/{y}.pbf | PBF tile (vector, application/x-protobuf) |
All other endpoints are auth-gated.
`/health` is also auth-exempt (returns `{"status":"ok"}`). All other `/api/` endpoints redirect to `/login`.
## Consumer — navi Integration
navi-traffic (navi's in-VM :8421 extraction service) was **retired on 2026-05-26** and cut over to central. recon-vm's nginx () now proxies → . Tile endpoints verified returning HTTP 200.
navi-traffic (navi's in-VM :8421 extraction service) was **retired on 2026-05-26** and cut over to central. recon-vm's nginx (`/etc/nginx/sites-available/navi.echo6.co`, port 8440) now proxies `^~ /api/traffic/``central.echo6.mesh:8000` with a 120s tile cache. navi-traffic:8421 is confirmed dead and disabled. Tile endpoints verified returning HTTP 200.
## Dependencies
@ -87,14 +87,18 @@ navi-traffic (navi's in-VM :8421 extraction service) was **retired on 2026-05-26
| PostgreSQL 16 + TimescaleDB + PostGIS | Local (central CT 104) |
| Upstream APIs | ~20 external sources (see Adapters table) |
## Deploy / Drift Notes (as of 2026-06-18 audit)
## Data Plane
- **Deployed HEAD:** v0.14.4
- **Repo :** v0.14.5 — deployment is **1 release behind**
- **Uncommitted local migration:** exists on disk in the deployment but was **never committed to the repo**
- **Stale README:** repo README still reads *"Phase 0 — scaffold, not yet operational"* — central is fully operational
- **Stale :** version field shows 0.3.0; real version is the git tag (v0.14.x)
Single TimescaleDB hypertable `public.events` (~22 GB, ~3.19 M rows, 331 chunks, compression not enabled). JetStream ~5.86 GB / 20 GB across 12 streams.
## Deploy / Drift Notes (as of 2026-06-27)
- **Deployed HEAD:** v0.14.5 (detached HEAD, not a branch) — caught up to latest tag since the 2026-06-18 audit.
- **Uncommitted local migration:** `sql/migrations/036_add_avalanche_org_adapter.sql` — untracked on disk, already applied in the DB (avalanche_org row live), but missing from the repo so a clean rebuild would skip it. A PR to commit it is in progress.
- **Stale `pyproject.toml`:** version field shows 0.3.0 (stale); being fixed in the same PR.
- **Stale README:** still reads *"Phase 0 — scaffold, not yet operational"* (stale); being fixed in the same PR.
- **Zero-event adapters:** `avalanche_org` (off-season severity gate — expected) and `eonet` (under investigation) are enabled but have produced no events.
---
*Last updated: 2026-06-18 — Initial documentation; central was previously undocumented. Deployment confirmed live, all three systemd units active.*
*Last updated: 2026-06-27 — Refreshed from live recon; blanks filled, drift notes current.*