Problem
callbacks/tracing.py and callbacks/metrics.py export spans and counters to configured endpoints (Jaeger, Prometheus, OTLP collectors, etc.). There's no TUI indication of:
- Whether tracing/metrics export is active or disabled
- What endpoints are configured
- Whether export is failing (connection refused, auth errors, backpressure)
When an operator sets up observability and it silently fails, they don't discover the gap until they go looking for data in their monitoring system.
Scope
Add an "Observability" section to the Config > Advanced tab (or a small status indicator on the Overview screen):
- Export status — enabled/disabled for tracing and metrics independently
- Endpoint — where spans/metrics are being sent (masked if it contains credentials)
- Health — last successful export timestamp, error count, last error message
- Counts — spans exported, metrics exported (rolling window)
Backend references
callbacks/tracing.py — OTLP span exporter configuration
callbacks/metrics.py — Prometheus/OTLP metrics exporter
- Export health isn't currently tracked — would need error counting in the callback classes
Approach
Start with a static display of configuration (is it enabled, where does it point). Health monitoring requires instrumenting the exporters, which is a backend change — create that as a follow-up if the static display proves useful.
Problem
callbacks/tracing.pyandcallbacks/metrics.pyexport spans and counters to configured endpoints (Jaeger, Prometheus, OTLP collectors, etc.). There's no TUI indication of:When an operator sets up observability and it silently fails, they don't discover the gap until they go looking for data in their monitoring system.
Scope
Add an "Observability" section to the Config > Advanced tab (or a small status indicator on the Overview screen):
Backend references
callbacks/tracing.py— OTLP span exporter configurationcallbacks/metrics.py— Prometheus/OTLP metrics exporterApproach
Start with a static display of configuration (is it enabled, where does it point). Health monitoring requires instrumenting the exporters, which is a backend change — create that as a follow-up if the static display proves useful.