Deduplicate and round noisy sensor data once at the message broker instead of in every subscriber.
Compute OHLC bars and moving averages on financial market data streams passing through NATS.
Sit monoblok in front of an existing NATS cluster to clean data before it reaches subscribers.
| lexvicacom/monoblok | kritagya123611/ascent | 0xsv1/ghosttype-bof | |
|---|---|---|---|
| Stars | 8 | 8 | 7 |
| Language | C | C | C |
| Setup difficulty | — | hard | hard |
| Complexity | — | 5/5 | 4/5 |
| Audience | developer | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Monoblok is a message processing tool that cleans and routes data streams passing through NATS, an open messaging system where software components send and receive data on named subjects. In many real-world systems, multiple services each have to write their own code to clean up raw incoming data: rounding noisy sensor readings, removing duplicate messages, filtering out trivially small changes, or computing running statistics. Monoblok moves that cleanup work to one place, applying it once on the way through rather than once in every service that needs clean data. You configure monoblok using a small rules language called patchbay, a simple S-expression format similar to Lisp-style syntax. Rules can include rounding, deduplication, deadband filtering, which means ignoring changes below a threshold, OHLC bar calculations, meaning open, high, low, close figures common in financial data, threshold alerts, moving averages, and moving sums. Publishers send raw events to monoblok, and subscribers receive already cleaned data without needing to handle cleanup themselves. Monoblok can run in three modes: as a standalone lightweight NATS broker with conditioning built in, as a front door that cleans data before forwarding to a larger NATS cluster, or as a tap that subscribes to an existing cluster and republishes cleaned subjects. Written in C using libuv, it is designed to be small and fast, with benchmark results showing it handling between 1 and 18 million messages per second depending on hardware. It runs on Linux and macOS, available as a pre-built binary, a container image, or buildable from source. A companion project called tinyblok targets microcontrollers. The MIT license applies.
A fast C-based message processor that sits in front of NATS and cleans, rounds, and routes noisy data streams once instead of in every subscriber.
Mainly C. The stack also includes C, libuv, NATS.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.