Observability
OpenTelemetry in, without the collector homework.
Point any OTel SDK or Collector at your Temps instance. Traces, metrics, and logs land in Postgres or ClickHouse, with compressed log history — queryable from the same dashboard as everything else.
Every language's OTel SDK reads these vars automatically
Distributed traces — per-request latency, span counts, and errors across services.
Key features
Any OTel SDK or Collector
Point your existing OpenTelemetry SDK or Collector at your Temps instance's OTLP endpoint — no proprietary agent to install.
Traces, metrics, and logs in one dashboard
All three OpenTelemetry signals land in the same place as your deploys, error tracking, and analytics — no second tool to correlate them in.
Storage backend you choose
Observability data lands in Postgres (TimescaleDB) or ClickHouse depending on how storage is configured — pick what fits your scale.
Compressed log history
Log retention is kept compressed by default, so keeping months of history doesn't turn into a disk-cost problem.
No change to your existing projects
Every deployment already has the env vars set.
Temps injects OTEL_EXPORTER_OTLP_ENDPOINT, _PROTOCOL, _HEADERS, and OTEL_SERVICE_NAME into every deployment automatically. Any OTel SDK that reads the standard env vars — which is most of them, out of the box — just needs to start. No manual endpoint, no token to paste in.
// otel.ts — import first in main.ts, before any other module. // Endpoint, protocol, headers, and service name all come from the // OTEL_* env vars Temps already injected — nothing to configure. import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto"; import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-proto"; import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"; import { NodeSDK } from "@opentelemetry/sdk-node"; if (process.env.OTEL_EXPORTER_OTLP_ENDPOINT) { new NodeSDK({ traceExporter: new OTLPTraceExporter(), metricReader: new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter(), }), instrumentations: [getNodeAutoInstrumentations()], }).start(); }
Point your OTel SDK somewhere that's already yours.
No separate observability vendor, no second bill tied to how much you log this month.
Try it yourself — quickstart guide