// the find
lf-edge/ekuiper
Lightweight data stream processing engine for IoT edge
eKuiper is a lightweight SQL-based stream processing engine meant to run on actual edge hardware — Raspberry Pis, industrial gateways, OpenWrt routers — not in a datacenter. It's for teams doing real-time filtering/aggregation on sensor or MQTT data before it leaves the device, essentially a stripped-down Flink with a rule engine instead of a full job API.
The lightweight claim is backed by real numbers, not just marketing copy: 4.5MB binary, ~10MB memory footprint, with benchmarks actually run on a Pi 3B+ (12k msg/sec) and a t2.micro, including a documented test of 8000 concurrent rules on 4GB of RAM. Using SQL as the rule language (`SELECT temperature FROM source WHERE temperature > 20`) is the right call — no custom DSL to learn, and it reads like a WHERE clause anyone's seen before. The extension model is genuinely broad: native Go plugins, portable plugins over a language-agnostic SDK, and WASM, so a custom sink doesn't force you into Go. Go build tags also let you compile down to a minimal core runtime, which matters when flash space on the target device is the actual constraint.
Management tooling is an afterthought: the web dashboard is a separate Docker image (one official, one community fork), so out of the box you're doing everything through CLI or raw REST calls, which is a rough UX for anything beyond a handful of rules. The "seamless integration" pitch leans hard on the EMQX/Neuron/NanoMQ stack — step outside that vendor's broker and industrial-protocol tooling and you're wiring sources yourself. The published throughput numbers filter out 90% of incoming data before the sink even runs, which flatters the result; worth re-benchmarking with your own rule's actual selectivity before trusting the Pi figures. Fault tolerance and state recovery across a reboot or power loss — the single most relevant failure mode for edge hardware — gets a dedicated doc page but isn't even mentioned in the README, which is a strange thing to bury.