Monitoring
Heimdall observability spans the frontend, auth, and predict services.
In-app surfaces
| Surface | Path | Purpose |
|---|---|---|
| Data | /data | Bronze, silver, and gold catalog — where governed datasets live before training |
| Usage | /usage | Billing summary and data platform usage |
| Health | /health | Polls each service root endpoint |
| Dashboard | /dashboard | Unified projects hub (models, forecasts, forge, loops) |
PostHog product funnels
Client events (heimdall-frontend-next):
forge_started— user begins a forge uploadforge_completed— forge job reachescompletedmodel_built— ML build wizard completesfirst_prediction— first successful test prediction on a model page
Predict service (I/O frozen)
External inference routes are unchanged. Internal observability is optional:
- Set
OTEL_ENABLED=trueandOTEL_EXPORTER_OTLP_ENDPOINTinheimdall-predict/app/.env - Spans:
predict_single,run_forecast(no PII in attributes) GET /healthfor load balancers
Before any predict deploy, run:
cd heimdall-predict && pytest tests/ -q
See heimdall-predict README for the full I/O freeze policy.
Deploy pinning
Production compose pins joelreji/heimdall:predictservice with pull_policy: if_not_present. Bump the image only after contract tests pass.