Open Source • AGPL-3.0

The Rust-powered
flow automation runtime

A Node-RED compatible runtime built in Rust. Import your flows, run them faster, deploy anywhere.

terminal
$cargo install rust-red
Compiling rust-red v0.1.0
✓ Installed. Binary: ~/.cargo/bin/rust-red (11.8MB)
$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

See it in action

Watch RustRED run a Modbus-to-PostgreSQL flow with live memory and CPU monitoring.

What is RustRED?

RustRED is an open-source flow automation runtime built in Rust. It reads your Node-RED flow JSON files and executes them using a high-performance async engine powered by Tokio.

It is a drop-in runtime — import your existing Node-RED flows and run them with significantly lower memory usage, faster cold starts, and WASM-based plugin security. No Node.js required.

AGPL-3.0 Single Binary Self-Hosted
Flow JSON
RustRED Runtime
Data Out

Features

Everything you need to run flow automation in production.

Rust Runtime

Built on Tokio async I/O with zero-cost abstractions. No garbage collector pauses, deterministic memory usage.

WASM Plugin System

Write custom nodes in Rust, Go, or C/C++ that compile to WASM and run in a sandboxed runtime. Hot-reloadable without restarts.

Single Binary

One 11.8MB static binary with no runtime dependencies. Runs on Linux, macOS, ARM, and WASI. Copy and deploy.

Node-RED Compatible

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

Feature Gates

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

Built-in MQTT Broker

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

Architecture

How RustRED works under the hood.

Tokio Async Runtime

All I/O is non-blocking via Tokio. HTTP, MQTT, Modbus, and file operations run concurrently on a multi-threaded scheduler.

Flow Engine

Parses Node-RED flow JSON and builds an execution graph. Messages flow between nodes through typed input/output ports.

WASM Sandbox

Custom plugins run inside a WASM sandbox with controlled capabilities. Each plugin gets its own memory space and cannot access the host system directly.

Protocol Handlers

Built-in support for MQTT, Modbus TCP/RTU, and PostgreSQL. Each handler is a feature-gated module that compiles only when needed.

Feature Flags

Every major subsystem is behind a cargo feature flag. Build minimal binaries for constrained devices by disabling unused features at compile time.

Editor & Dashboard

Built-in web editor for designing flows and a dashboard for monitoring runtime status. Accessible at localhost:1880.

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
        }
    }
}

Migrate from Node-RED

Your existing flows work in RustRED without modification.

1

Export your flows

In Node-RED, select all nodes and export as JSON. Or copy your flows.json file directly.

2

Import into RustRED

Run rust-red --import flows.json. RustRED parses the same JSON format and builds the execution graph.

3

Run and verify

Your flows execute with the same logic. Open localhost:1880 to access the editor and dashboard.

Quick Start

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
$_

Prerequisites

Rust toolchain (rustup) or download a pre-built binary from GitHub Releases.

Install

cargo install rust-red compiles and installs the binary to ~/.cargo/bin/.

Import flows

Pass your Node-RED flows.json with --import. Your existing flows work as-is.

Open the editor

Navigate to http://localhost:1880 to access the flow editor and dashboard.

Community

RustRED is open source. Contribute, report issues, or just say hello.