Backends
pi-otel is built on OpenTelemetry and exports via OTLP — the vendor-neutral wire protocol supported by every major observability platform. Point it at any OTLP-compatible receiver by setting endpoint and optionally protocol and headers.
Aspire Dashboard (default)
The .NET Aspire standalone dashboard is the zero-config default — an in-memory OTLP receiver with a UI for traces, metrics, and structured logs. No account, no cloud required.
Start from pi:
/otel startBackend auto-detection: Aspire CLI → Docker → Podman. Force one with --driver=:
/otel start --driver=dockerPorts:
| Signal | Endpoint |
|---|---|
| OTLP gRPC | http://localhost:4317 |
| OTLP HTTP | http://localhost:4318 |
| Dashboard UI | http://localhost:18888 |
Telemetry is in-memory only — restarting the dashboard clears all data. See samples/aspire/ for a minimal .pi/settings.json.
Traces:

Metrics:

Logs:

Grafana LGTM
otel-lgtm is a single Docker image that bundles Grafana, Tempo (traces), Mimir (metrics), and Loki (logs) — pre-wired with an OpenTelemetry Collector.
Start the stack:
docker compose up # or: podman compose upSee samples/lgtm/compose.yaml for the full Compose file.
Connect pi-otel:
/otel connect http://localhost:4317Ports:
| Signal | Endpoint |
|---|---|
| OTLP gRPC | http://localhost:4317 |
| OTLP HTTP | http://localhost:4318 |
| Grafana UI | http://localhost:3000 |
The sample ships a pre-built Grafana dashboard (dashboard.json) with 8 panels: request rate, average duration, token usage by type, total tokens, tool calls per operation, p50/p95/p99 latency percentiles, and duration by model. Import it via Grafana → Dashboards → Import.
Traces in Tempo:

Metrics in Grafana:

Logs in Loki:

Other backends
Any OTLP-compatible receiver works. Set endpoint and (for authenticated cloud services) headers:
// .pi/settings.json
{
"otel": {
"endpoint": "https://api.honeycomb.io",
"protocol": "http/protobuf",
"headers": {
"x-honeycomb-team": "<your-api-key>"
}
}
}Or via env vars for ephemeral sessions:
OTEL_EXPORTER_OTLP_ENDPOINT=https://... \
OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=<key>" \
piCommon OTLP targets: Grafana Cloud, Honeycomb, Jaeger (with OTLP receiver enabled), Tempo, Datadog (via the OTel Collector), or any self-hosted Collector.