light-telemetry
UDP fire-and-forget telemetry client for LightTelemetry — a lightweight observability daemon for test environments and embedded/bare-metal hardware where OpenTelemetry is too heavy.
Features
- Fire-and-forget —
emitserializes one packet and sends one UDP datagram. No buffering, no retries: telemetry never blocks or crashes your application. - Degradation-aware — a background watcher tracks reverse heartbeats from the server; when they stop, emissions drop before serialization (zero cost when the collector is gone).
- Two wire formats — JSON (default) or MessagePack.
- Auto-discovery — adopt the server's
telemetry.tomlto find the ingest endpoint and heartbeat timing automatically. loggingintegration —TelemetryLogHandlerforwardsloggingrecords as telemetry events.- MTU-safe — oversized packets are truncated to a marker, never fragmented.
Install
pip install light-telemetry
# or
uv add light-telemetry
Requires Python ≥ 3.11.
Quickstart
Zero-config localhost client
Reads telemetry.toml (/etc/telemetry.toml, then ~/.config/telemetry.toml)
written by the server — target address and heartbeat timing come from the
daemon itself. Falls back to 127.0.0.1:9876 if no file exists.
from light_telemetry import TelemetryClient
client = TelemetryClient.local("my-app", "service")
client.start() # spawns the heartbeat watcher
client.emit("test.start", {"case": "can_tx", "rig": 3})
client.stop()
Explicit endpoint
from light_telemetry import TelemetryClient
with TelemetryClient(
("192.168.1.10", 9876),
host_id="bench-01",
host_class="rig",
use_msgpack=True, # MessagePack wire format
heartbeat_timeout=3.0, # s; None disables the watcher
) as client:
client.emit("firmware.flash", {"target": "stm32", "bytes": 65536})
logging integration
import logging
from light_telemetry import TelemetryClient, TelemetryLogHandler
client = TelemetryClient.local("my-app", "service").start()
logging.getLogger().addHandler(TelemetryLogHandler(client, topic="logger"))
log = logging.getLogger("sut")
log.info("device under test ready", extra={"fw": "1.4.2"})
# every record emits: {"level", "logger", "message", + extra fields}
Server
Events land in the light-telemetry daemon, which exposes REST queries, a wait-subscription API, a WebSocket stream, and a Grafana-compatible JSON adapter. Storage backends: in-memory, SQLite, PostgreSQL.
Links
- Repository / full monorepo — https://github.com/oldienki/telemetry
- Rust client —
light-telemetry-clienton crates.io - Go client —
github.com/oldienki/telemetry/go/light-telemetry
License
MIT OR Apache-2.0
Metadata
Release files for light-telemetry 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| light_telemetry-0.1.2.tar.gz | 58.3 kB | Without provenance | Details for light_telemetry-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| light_telemetry-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for light_telemetry-0.1.2-py3-none-any.whl |
Total release size: 66.5 kB
Release files / light_telemetry-0.1.2.tar.gz
| Download URL | light_telemetry-0.1.2.tar.gz |
|---|---|
| Size | 58.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1840533017d5abb69d6b4fc193d2e1865fc5b3d3bd4d213c2801366ba189fb63
|
|
BLAKE2b-256 checksum How to use checksums |
c9d28439db00dc50f5ea62ac0c08579ef3eca79cc8bb764f61cd128e2b16638a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / light_telemetry-0.1.2-py3-none-any.whl
| Download URL | light_telemetry-0.1.2-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5cefaf1da576bf5d356d6db717bc1a2298f3454025d0b012213d7712f62c145b
|
|
BLAKE2b-256 checksum How to use checksums |
4288854043d89541f13b4388b8d32492a6303712ec274d5260f822cce3ccaada
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for light-telemetry 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.