// the take
Siddhi is a Java-based Complex Event Processing and stream processing engine with its own SQL-like query language for matching patterns, sequences, and windows over live event streams. It targets JVM developers who need real-time analytics or anomaly detection and would rather write declarative stream queries than hand-roll windowing and pattern-matching logic.
The query language itself is the strongest part: built-in support for sliding/time windows, event sequences, patterns, and stream joins goes well beyond what you'd quickly build by hand. It can run embedded in a JVM process, as a Python-wrapped library, or standalone as a microservice/Docker/Kubernetes deployment, so it fits both library and service use cases. The extension model (siddhi-annotations plus a large extensions ecosystem) covers a wide range of sources, sinks, and stores without touching core code. It has a long production history at WSO2 and is a CNCF sandbox project, so the query semantics and failure modes are well exercised, not theoretical.
The query language is a proprietary DSL, not standard SQL, so there's real lock-in and a learning curve compared to Flink SQL or ksqlDB, and tooling/IDE support for it is far thinner. The project carries heavy WSO2/OSGi-era baggage in its module layout and dependency choices, which shows its age next to newer JVM stream engines. Operational maturity for Kubernetes (operators, autoscaling, state management at scale) lags well behind Flink or Kafka Streams, where that ecosystem is much more built out. Star/fork counts (1.6k stars, 527 forks) are modest for a decade-old project, suggesting a shrinking rather than growing contributor base, so community support may be harder to find than for larger streaming engines.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →