telemetryd
A single-binary, zero-config observability backend. OTLP goes in, the Loki, Tempo and Prometheus query APIs come out, and everything lives in one directory on one node. No sidecars, no stack to operate.
Running your own observability normally means running a stack: Loki for logs, Tempo for traces, Prometheus or Mimir for metrics, and something to put in front of them. telemetryd is one binary that accepts all three signals as OTLP and serves them back through the same Loki, Tempo and Prometheus query APIs those tools expose, so anything that already speaks them keeps working. One port, one data directory, no sidecars.
The whole setup
telemetryd serve. It listens on 127.0.0.1:4319, stores data in a local directory, keeps 7 days of logs and traces and 30 days of metrics, and holds itself under a 10 GiB disk budget. Point Telemetry for Laravel at that address, and point all three of the Telemetry UI connectors at the same base URL.
Single-node on purpose
It is scoped at one team, a handful of apps, one VPS or a laptop, and it targets that case completely rather than scaling to a fleet. That is a design choice rather than a limitation waiting to be removed: it is what allows sharding, consensus, object-store tiering and a query scheduler to be deleted outright, which is the difference between one 2.6 MB binary and a set of services to operate. If you outgrow one node, you have outgrown telemetryd, and it says so rather than pretending.
What It Does
Three Signals, One Store
Logs, traces and metrics all arrive as OTLP over HTTP, with Prometheus remote_write accepted too, and land in Parquet segments in a single directory.
The APIs You Already Query
Reads come back through the Loki, Tempo and Prometheus query APIs, including live tail. The compatibility contract is derived from the Telemetry UI connector source rather than from the upstream references, so it matches what actually gets called.
Retention With A Disk Budget
Retention enforces both an age and a size ceiling, so a burst of logs cannot quietly fill the volume while the time-based rule still looks satisfied.
Refuses To Be Open By Accident
It will not start on a non-loopback address without a token configured. The container image binds all interfaces, so it generates tokens on first start and prints them once.
Your Data Can Leave
export and import move every signal in both directions as OTLP. Between two telemetryd instances records are read straight from the store rather than re-derived from a query language, so they cross as stored.
Installs Like A Service
An install script that verifies the checksum always and the release signature when cosign is present, a Homebrew tap, a deb, a container image, and a hardened systemd unit or launchd plist you can print and read before installing.
Honest about the gaps
The repository carries a build-status document listing what works, what the known gaps are, and what is deliberately absent, kept next to the code rather than in a roadmap. The part worth reading before pointing a query tool at it is which Loki and Prometheus constructs are refused: someone who knows those languages will otherwise write valid expressions this does not run.