Lightweight, ultra-fast streaming SQL engine for edge & IoT in Rust
5.2K
rekuiper is a lightweight streaming SQL engine written in Rust for edge computing, IIoT gateways, connected vehicles, and robotics. It is a drop-in replacement for LF Edge eKuiper. It processes 150k–200k messages per second per CPU core with a low memory footprint.
rekuiper includes an embedded Model Context Protocol (MCP) server (rekuiper-mcp). AI assistants (Antigravity IDE, Claude Desktop, Cursor) use this server to inspect schemas, validate SQL offline, query topologies, and trace streaming rules.
Start rekuiper with the REST API and Prometheus metrics enabled:
docker run -d --name rekuiper \
-p 9081:9081 -p 59720:59720 -p 20499:20499 \
-e KUIPER__BASIC__CONSOLELOG=true \
-e KUIPER__BASIC__PROMETHEUS=true \
ankurkrp/rekuiper:0.506-beta
Check engine status:
curl http://localhost:9081/ping
# Response: pong
Open the OpenAPI Swagger UI in your browser:
http://localhost:9081/
Clone the repository and start the multi-service stack:
git clone https://github.com/ankur-paan/rekuiper.git
cd rekuiper
docker compose -f deploy/docker/docker-compose.yml up -d
This stack starts:
9081, 59720, 20499)1883)6379)Perform vector similarity calculations directly in SQL queries:
cosine_similarity(vec1, vec2): Calculates cosine similarity between numeric vectors (-1.0 to 1.0).vector_l2(vec1, vec2): Calculates Euclidean distance between points.vector_dot(vec1, vec2): Computes the inner dot product.vector_match(query_vec, candidate_array, top_k): Returns the top $K$ nearest vectors ordered by similarity.WHERE cosine_similarity(v1, v2) > 0.85.Connect to RabbitMQ brokers natively without CGO or external shared libraries:
amqps://) and dynamic credentials.Run custom user-defined functions (UDFs) in a secure, sandboxed WebAssembly runtime:
POST /plugins/wasm, GET /plugins/wasm, and DELETE /plugins/wasm/:name.wasm_run('module', 'function', arg1, arg2).Protect credentials across streams and sinks:
{{vault://mount/path#field}}.{{env://VARIABLE_NAME}}.Store and read streaming telemetry using columnar Apache Parquet:
PAR1 headers and Snappy compression.Integrate with EdgeX Foundry microservices:
9081 (eKuiper default) and port 59720 (EdgeX default) with full bidirectional REST parity.deploy/docker/docker-compose-edgex-openziti.yml to remove all public host ports.| Port | Protocol | Purpose | Default Bind |
|---|---|---|---|
9081 | HTTP / TCP | REST API, OpenAPI UI & Management (Standard eKuiper port). | 0.0.0.0:9081 |
59720 | HTTP / TCP | EdgeX Application Service REST Port (Concurrent parity with 9081). | 0.0.0.0:59720 |
20499 | HTTP / TCP | Prometheus Metrics (/metrics when enabled). | 0.0.0.0:20499 |
20498 | TCP | eKuiper RPC Protocol Parity (Legacy Go RPC communication). | 127.0.0.1:20498 |
Override configuration keys in etc/kuiper.yaml with double underscores: KUIPER__<SECTION>__<KEY>.
| Variable | Default | Description |
|---|---|---|
KUIPER__BASIC__LOGLEVEL | info | Log verbosity: debug, info, warn, error. |
KUIPER__BASIC__CONSOLELOG | true | Streams logs directly to stdout and stderr. |
KUIPER__BASIC__PROMETHEUS | false | Enables the Prometheus /metrics scraping server. |
KUIPER__BASIC__PROMETHEUSPORT | 20499 | Port for the Prometheus metrics listener. |
KUIPER__BASIC__AUTHENTICATION | false | Enforces RSA JWT token validation on REST routes. |
KUIPER__BASIC__TIMEZONE | Local | IANA timezone string (for example, UTC or Local). |
MQTT_SOURCE__DEFAULT__SERVER | tcp://127.0.0.1:1883 | Default upstream MQTT broker URL. |
VAULT_ADDR | http://127.0.0.1:8200 | HashiCorp Vault server address. |
VAULT_TOKEN | (None) | HashiCorp Vault access token. |
RUST_LOG | info | Rust tracing filter (info, debug, warn). |
| Container Path | Purpose |
|---|---|
/kuiper/data | Stores SQLite database (sqliteKV.db), rule checkpoints, Parquet files, and WASM modules. |
/kuiper/etc | Contains configuration files (kuiper.yaml, mqtt_source.yaml). Mount to supply custom configurations. |
/kuiper/log | File-based logging directory when file logging is active. |
docker run -d --name rekuiper \
-p 9081:9081 -p 59720:59720 -p 20499:20499 \
-v rekuiper-data:/kuiper/data \
-v rekuiper-etc:/kuiper/etc \
ankurkrp/rekuiper:0.506-beta
The container includes the kuiper CLI and rekuiper-mcp binary in /kuiper/bin:
# Check engine status
docker exec -it rekuiper kuiper ping
# Create a stream
docker exec -it rekuiper kuiper create stream demo '(temp float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="devices/+/events")'
# List active streams
docker exec -it rekuiper kuiper show streams
# Inspect the Model Context Protocol server
docker exec -it rekuiper /kuiper/bin/rekuiper-mcp --help
Official images support:
linux/amd64 (x86_64 servers and edge gateways)linux/arm64 (Raspberry Pi 4/5, NVIDIA Jetson, Apple Silicon, AWS Graviton)Content type
Image
Digest
sha256:abb9cf7e4…
Size
47.2 MB
Last updated
about 1 hour ago
docker pull ankurkrp/rekuiper