Open source · Apache 2.0 · Rust

OxiPulse: Host metrics to any OTLP backend

A small Rust agent that collects CPU, memory, disk, network, load and uptime from your servers and pushes them over OTLP/gRPC to your own collector, Prometheus/Grafana stack or any OpenTelemetry vendor. No account needed.

Memory
11 MB
RSS on Linux, measured
CPU
0.01 %
Of one core, measured
Download
4 MB
Linux x86_64 release
Offline buffer
72 h
Default, in memory

OxiPulse 0.3.14 at the default 30 s interval, 5 minutes of steady state on a GitHub Actions Ubuntu 24.04 runner: 11.4 MB RSS (3.5 MB private), against 24 MB for node_exporter and 204 MB for the OpenTelemetry Collector with hostmetrics in the same run. On Windows 11: 15.5 MB private memory, 0.07 % of one core. Method and script

curl -fsSL https://install.oxipulse.dev | sudo bash -s -- --endpoint http://<collector>:4317
Sample series in Prometheus, via the OpenTelemetry Collector (labels trimmed)
system_cpu_utilization_ratio{host_name="web-01"}                                 0.1029
system_memory_usage_bytes{host_name="web-01",state="used"}                       2.33e+10
system_filesystem_usage_bytes{host_name="web-01",device="/dev/sda1",state="used"} 4.60e+10
system_network_io_bytes_total{host_name="web-01",device="eth0",direction="receive"} 8.39e+09
system_cpu_load_average_1m{host_name="web-01"}                                    0.14
system_uptime_seconds{host_name="web-01"}                                         350986
Features

What it does

One job: get host metrics from your servers into the OpenTelemetry backend you already use.

Standard
Vendor-neutral

Speaks OpenTelemetry

Pushes standard OTLP over gRPC. Point it at an OpenTelemetry Collector, Grafana Alloy, SigNoz, OpenObserve, Uptrace, VictoriaMetrics or any OTLP vendor. An optional Bearer token covers backends that need auth.

Resilience
Offline buffer

Survives outages

When the backend is unreachable it keeps every export, up to 72 h at the default 30 s interval, and sends them in order with their original timestamps when the connection comes back. No gaps in your graphs.

Operations
Optional self-update

Updates itself, if you want

Checks GitHub Releases once a day and restarts through systemd or the Windows service manager. Set auto_update = false to pin the version.

Trust
Only talks to your endpoint

Private by default

With your own backend it connects only to your endpoint, GitHub Releases (unless self-update is off) and a latency target you can change. Every outbound connection is listed in SECURITY.md.

How it works

Four steps, one binary

The whole agent is about a thousand lines of Rust. Read it on GitHub.

STEP 01sysinfo

Collect

Every 30 s by default, reads CPU, memory, swap, disk, network, load and uptime from the OS through the sysinfo crate (/proc and /sys on Linux).

STEP 0272 h default

Buffer

Keeps snapshots in an in-memory ring buffer while the backend is unreachable, with exponential backoff between retries.

STEP 03OTLP/gRPC

Export

Sends OTLP metrics over gRPC with host attributes (host.name, OS, kernel, CPU model). TLS for https endpoints, optional Bearer token.

STEP 04Optional

Update

Optionally checks GitHub Releases once a day and restarts through the service manager. Off with auto_update = false.

Comparison

How it compares

OxiPulse does less than the established tools, on purpose. Pick it when core host metrics over OTLP are all you need.

CapabilityOxiPulsenode_exporterOpenTelemetry Collector
How metrics movePush over OTLP/gRPCPull (Prometheus scrapes it)Push or pull, many protocols
Memory on Linux (RSS)11 MB24 MB204 MB (hostmetrics receiver)
CPU at a 30 s interval0.01 % of one core0.04 %0.06 %
Linux x86_64 download4.0 MB12.2 MB (v1.12.1)37.3 MB (otelcol v0.162.0)
Metric coverageCore host set (CPU, memory, swap, disk, network, load, uptime)Very broad, dozens of collectorsVery broad, plus logs and traces
Buffer while backend is downBuilt in (72 h default)Not applicable (pull)Yes, with sending queue / storage config
Self-updateOptional, dailyNoNo
ConfigurationOne TOML file, only endpoint requiredFlagsYAML pipelines
Frequently Asked Questions

Everything You Need to Know

No. OxiPulse is Apache 2.0 and works with any OTLP/gRPC endpoint. The repository includes a Docker Compose example with the OpenTelemetry Collector, Prometheus and Grafana. SecuryBlack Cloud is an optional hosted backend.

Try it on one server

Run it against your own Prometheus and Grafana with the example in the repository, or send it to SecuryBlack Cloud for hosted dashboards, alerts and a security audit, free for one server.