Open Source • AGPL-3.0

Flow automation,
rewritten in Rust

Node-RED compatible runtime with 10× less memory, WASM plugin security, and single-binary deployment. Drop-in replacement for your existing flows.

terminal
$cargo install rust-red
Compiling rust-red v0.1.0
✓ Installed. Binary: ~/.cargo/bin/rust-red (22MB)
$rust-red --import flows.json
✓ 47 flows loaded. Dashboard: http://localhost:1880
$_
0x Less Memory
0MB Binary Size
0+ Built-in Nodes
0% Flow Compatible

Why RustRED?

Node-RED changed how we think about flow-based programming. RustRED takes that vision and makes it production-ready.

Rust-Powered Performance

Zero-cost abstractions, async I/O, and no garbage collector. 10× throughput with 10× less memory than Node.js runtimes.

WASM Plugin Security

Custom nodes run in a sandboxed WASM runtime. No more supply-chain attacks through unrestricted npm packages.

Single Binary Deployment

No Node.js, no npm install, no Python. One 22MB static binary that runs on Linux, macOS, ARM, and WASI.

Node-RED Compatible

Import your existing flow JSON files directly. Compatible with the Node-RED editor and flow format.

Feature-Gated Architecture

Compile only what you need. Disable Modbus, PostgreSQL, AI, or clustering with cargo feature flags.

Built-in MQTT Broker

Topic trie with wildcard matching, QoS 0/1, and retained messages. No external Mosquitto dependency needed.

See the difference

Side-by-side with the tools you're already using.

Capability RustRED Node-RED n8n
Runtime Native Rust Node.js Node.js
Memory Usage ~22MB ~150MB ~300MB
Plugin Security WASM Sandbox Unrestricted JS Unrestricted JS
Industrial Protocols Modbus, MQTT Via plugins
Edge Deployment Single binary Requires Node.js
Cold Start <5ms ~2s ~5s
License AGPL-3.0 Apache 2.0 Fair-code

Extend with WASM Plugins

Write custom nodes in Rust, Go, or C/C++. They compile to WASM and run in a secure sandbox.

1

Write your node

Implement the FlowNodeBehavior trait in Rust, Go, or any language that compiles to WASM.

2

Compile to WASM

cargo build --target wasm32-wasip1 — produces a tiny ~13KB binary.

3

Drop and run

Place the .wasm file in your plugin directory. Hot-reloaded, no restart needed.

my_node.rs Rust
use rust_red_macro::*;

// Annotate with flow_node to register
struct MyCustomNode {
    base: BaseFlowNodeState,
}

impl MyCustomNode {
    fn build(
        flow: &Flow,
        base: BaseFlowNodeState,
        config: &RedFlowNodeConfig,
    ) -> Result<Box<dyn FlowNodeBehavior>> {
        Ok(Box::new(Self { base }))
    }
}

impl FlowNodeBehavior for MyCustomNode {
    async fn run(self: Arc<Self>, stop: CancellationToken) {
        while let Ok(msg) = self.recv_msg(stop.clone()).await {
            // Process your message
        }
    }
}

Get Started in 30 Seconds

Install, import your flows, and run.

terminal
$cargo install rust-red
Compiling rust-red v0.1.0 (…27s)
✓ Installed rust-red to ~/.cargo/bin
$rust-red --import my-flows.json
Imported 47 flows, 312 nodes from my-flows.json
✓ Server running at http://localhost:1880
$_