OpenBlockperf
A CLI tool and systemd service that captures and shares network metrics from a Cardano relay node.
The client collects selected tracer and peering data from a local relay so stake pool operators can contribute to a shared view of block propagation and connectivity. It is intended for relay nodes that sit between a stake pool producer and the rest of the network. Running it on a producer is possible but not recommended. In normal operation it runs as a systemd service.
Release notes
- v0.0.42 - 2026-09-23
- first production-ready release for Haskell cardano-node relays
- blocksample and peerevent parsing aligned for normal TraceOptions installs
- peerevents: same four
change_typevalues for every client;peer_events_levelignored - peerevents: connection sessions (not IP-keyed maps); omit-none fields
event_role,session_id,node_generation,close_reason,we_dialed - HandshakeSuccess opens a session and may enrich with
n2n_version,diffusion_mode,peer_sharing,peras_support - abrupt loss (
MuxErrored,ConnectionHandler.Error,ResponderErrored) closes the session; node restart closes open sessions then submitsevent_role=node_restart - soft TTL (
peer_signal_ttl_seconds, default 1800) closes stale Warm/Hot - local
/peers: useful open sessions withopened_at/last_signal(noduplex, nofirst_seen) - still no dial-fail / PromoteColdFailed submits
- v0.0.41 - 2026-09-17
- blocksample submit adds optional 2nd/3rd header announcers:
header2_remote_addr/port,header3_remote_addr/port(empty/0when missing) - same IP obfuscation for header2/header3 as for the primary header
- backend can resolve two more relays on
block_prop; no peerrelevance endpoint
- blocksample submit adds optional 2nd/3rd header announcers:
- v0.0.40 - 2026-09-15
- peer events: debounced reporting by level (
off/low/mid/high, defaultmid= stable Hot) - peer enters wait
peer_event_stable_seconds(default 15); leaves reported immediately - Cooling tracked client-side only; not submitted to the backend
- peers keyed by remote IP; inbound reports
remote_port=0(no ephemeral ports) - peer submit payload adds optional
duplexwhen both directions are Warm/Hot - journal: only submitted peer lines (
IP direction change_type duplex=...), no parse spam peerCountStatslogs after counters settle (peer_count_stats_intervaldefault 5s);0disables- CLI: global
--version/-Vin addition toblockperf version - optional local metrics HTTP (
local_metrics_enabled, default port14041):/peersJSON (reported peers) and/metricsPrometheus gauges - sliding 30m peer relevance (header 1st/2nd/3rd points 10/5/3, body 10);
local only (
/peers+ journal); not POSTed
- peer events: debounced reporting by level (
- v0.0.39 - 2026-09-09
- dual-stack IP registration: prove IPv4/IPv6 via
/registration/ip/proof, submit proof tokens - CLI uses
OPENBLOCKPERF_CONFIGwhen--configis omitted (installer wrapper/profile sets it) - API HTTP errors print backend
detailtext (e.g. expressive 400s on register-ip) - service mode fails over on HTTP 5xx (e.g. 503 queue full) to the next edge
- installer checks for an existing install directory before the wizard
- installer retries relay API key registration up to three times
- compact blocksample journal lines: short hash, block number, edge name
- compact peer-event journal lines: remote IP and old > new status
- register-ip / register-calidus probe healthy SRV edges and fail over on HTTP 5xx
- dual-stack IP registration: prove IPv4/IPv6 via
- v0.0.37 - 2026-09-03
- increased submit timouts
- filter private IPs
- installer script improved on regsiter-ip"
- v0.0.36 - 2026-09-02
- improved logging
- use SRV targets by RTT rank and failover;
Installation
This release targets Haskell cardano-node relays. Use the installer below.
You can install the package from PyPI:
pip install openblockperf
A plain pip install only provides the blockperf command. It does not
discover your cardano-node unit, write config.json, or install the systemd
service.
The recommended way on a Linux relay is the installer script. It installs the PyPI package into a dedicated virtualenv and wires it into the existing node installation and network configuration (systemd unit, config file, service user, and CLI wrapper):
curl -fsSL https://raw.githubusercontent.com/cardano-foundation/openblockperf/main/blockperf-install.sh -o blockperf-install.sh
chmod +x blockperf-install.sh
sudo ./blockperf-install.sh
After the initial install, the best way to pick up new PyPI releases is:
sudo ./blockperf-install.sh --update
That upgrades only the openblockperf package in the existing virtualenv and
can restart the systemd service so the running client loads the new version.
Documentation
Full guides live in the openblockperf GitHub repository:
- Installer Guide for installer modes, options, API key flow, and updates
- Manual Installation Guide for a step-by-step setup that mirrors the installer
- Client Overview for what the client reports and why the shared telemetry matters
- Trace Options Guide for the cardano-node tracer settings the client needs
Metadata
Release files for openblockperf 0.0.42
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openblockperf-0.0.42.tar.gz | 101.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openblockperf-0.0.42-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 185.1 kB
Release files / openblockperf-0.0.42.tar.gz
| Download URL | openblockperf-0.0.42.tar.gz |
|---|---|
| Size | 101.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5e1aabdfd21c6eeb6d0aacb43e9204b1fd0214c27f1823f1b712fa7592425c10
|
|
BLAKE2b-256 checksum How to use checksums |
d246de2462a149b375a51fa1f049ea877eb92ee43ece400d03fae12df6dd22a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / openblockperf-0.0.42-py3-none-any.whl
| Download URL | openblockperf-0.0.42-py3-none-any.whl |
|---|---|
| Size | 83.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bdb7208a974c9235e360b326ba20f62c80052ab88f3e0420679616f5e6955962
|
|
BLAKE2b-256 checksum How to use checksums |
9143fb1334a458ebe4481fc69b82b36889a06f6710c4b37aed9d5c181a2d7ee9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|