Edgelinkd
Node-RED Reimplemented in Rust
Install / Use
/learn @oldrev/EdgelinkdREADME
EdgeLinkd: Node-RED Reimplemented in Rust

English | 简中
Overview
EdgeLinkd is a high-performance, memory-efficient Node-RED compatible runtime engine built from the ground up in Rust, now featuring an integrated web UI for complete standalone operation.
Why EdgeLinkd?
- 10x less memory usage than Node-RED (only 10% of Node-RED's memory footprint)
- Native performance with Rust's zero-cost abstractions
- Integrated web interface - full Node-RED UI built-in for flow design and management
- Standalone operation - no external Node-RED installation required
- Drop-in replacement - use your existing
flows.jsonfiles - Perfect for edge devices with limited resources
- Node-RED compatibility - design, deploy, and run flows all in one application
EdgeLinkd now includes the complete Node-RED web editor, allowing you to design flows directly in the browser while executing them with native Rust performance. You can also run it headless for production deployments on resource-constrained devices.
Only the function node uses the lightweight QuickJS JS interpreter to run JavaScript code; all other functionalities are implemented in native Rust code for maximum performance.
A Short Demo
<video src="https://github.com/user-attachments/assets/5841db63-513a-4b36-8566-57c74adb7b60" controls width="100%"></video>
Use Cases
- Flow Development: Design and test flows directly in the integrated web editor
- Rapid Prototyping: Full Node-RED UI for quick flow development and iteration
- IoT Edge Gateways: Process sensor data with minimal resource usage
- Industrial Automation: Run control flows on embedded controllers with web-based monitoring
- Home Automation: Deploy smart home logic on Raspberry Pi with remote web access
- Development & Production: Use web UI for development, headless mode for production deployment
- Cloud-to-Edge Migration: Move Node-RED flows from cloud to edge with unified interface
- Container Deployments: Lightweight containers for edge computing with optional web UI
- Remote Management: Access and modify flows remotely through the web interface
Quick Start
0. Clone the Repository
Clone the repository with submodules:
git clone --recursive https://github.com/oldrev/edgelinkd.git
Or if you've already cloned without submodules:
git clone https://github.com/oldrev/edgelinkd.git
cd edgelinkd
git submodule update --init --recursive
1. Build
Prerequisites: Rust 1.80 or later
cargo build --release
Windows users: Ensure patch.exe is in your PATH (included with Git) and install Visual Studio for MSVC.
Supported platforms:
x86_64-pc-windows-msvcx86_64-pc-windows-gnux86_64-unknown-linux-gnuaarch64-unknown-linux-gnuarmv7-unknown-linux-gnueabihfarmv7-unknown-linux-gnueabi
2. Run
Start EdgeLinkd with integrated web UI (recommended):
cargo run --release --
# or after build
./target/release/edgelinkd
By default, your browser will open the Node-RED frontend at http://127.0.0.1:1888.
Main command-line options:
[FLOWS_PATH]: Optional, specify the flow file (default:~/.edgelinkd/flows.json)--headless: Headless mode (no Web UI, suitable for production)--bind <BIND>: Custom web server bind address (default:127.0.0.1:1888)-u, --user-dir <USER_DIR>: Specify user directory (default:~/.edgelink)- See more options with
--help
Examples:
# Run in headless mode
./target/release/edgelinkd run --headless
# Specify flow file and port
./target/release/edgelinkd run ./myflows.json --bind 0.0.0.0:8080
All data and configuration are stored in the
~/.edgelinkdirectory by default.
Use --help to see all commands and options:
./target/release/edgelinkd --help
./target/release/edgelinkd run --help
Run Unit Tests
cargo test --all
Run Integration Tests
Running integration tests requires first installing Python 3.9+ and the corresponding Pytest dependencies:
pip install -r ./tests/requirements.txt
Then execute the following command:
set PYO3_PYTHON=YOUR_PYTHON_EXECUTABLE_PATH # Windows only
cargo build --all
py.test
Configuration
EdgeLinkd can be configured through command-line arguments and configuration files.
Web UI Configuration
Command-line options:
--bind <address>: Set the web server binding address (default:127.0.0.1:1888)--headless: Run without the web UI for production deployments--user-dir <path>: Specify custom user directory for flows and settings
Configuration file:
You can also configure the web UI through the configuration file (edgelinkd.toml):
[ui-host]
host = "0.0.0.0"
port = 1888
Project Status
Alpha Stage: The project is currently in the alpha stage and cannot guarantee stable operation.
New: Integrated Web UI: EdgeLinkd now includes a complete Node-RED web interface for flow design and management. The web UI is fully compatible with Node-RED's editor and provides the same user experience while running on the high-performance Rust runtime.
Web UI Features:
- ✅ Complete Node-RED editor interface
- ✅ Flow design and editing
- ✅ Node palette with all supported nodes
- ✅ Deploy flows directly from the browser
- ✅ Real-time flow execution monitoring
- ✅ Debug panel integration
- ✅ Settings and configuration management
- ✅ Import/Export flows functionality
The heavy check mark ( :heavy_check_mark: ) below indicates that this feature has passed the integration test ported from Node-RED.
Node-RED Features Roadmap:
- [x] :heavy_check_mark: Flow
- [x] :heavy_check_mark: Sub-flow
- [x] Group
- [x] :heavy_check_mark: Environment Variables
- [ ] Context
- [x] Memory storage
- [ ] Local file-system storage
- [ ] RED.util (WIP)
- [x]
RED.util.cloneMessage() - [x]
RED.util.generateId()
- [x]
- [x] Plug-in subsystem[^1]
- [ ] JSONata
[^1]: Rust's Tokio async functions cannot call into dynamic libraries, so currently, we can only use statically linked plugins. I will evaluate the possibility of adding plugins based on WebAssembly (WASM) or JavaScript (JS) in the future.
The Current Status of Nodes:
Refer REDNODES-SPECS-DIFF.md to view the details of the currently implemented nodes that comply with the Node-RED specification tests.
- Core nodes:
- Common nodes:
- [x] :heavy_check_mark: Console-JSON (For integration tests)
- [x] :heavy_check_mark: Inject
- [x] Debug (WIP)
- [x] :heavy_check_mark: Complete
- [x] :heavy_check_mark: Catch
- [x] :heavy_check_mark: Status
- [x] :heavy_check_mark: Link In
- [x] :heavy_check_mark: Link Call
- [x] :heavy_check_mark: Link Out
- [x] :heavy_check_mark: Comment (Ignored automatically)
- [x] GlobalConfig (WIP)
- [x] :heavy_check_mark: Unknown
- [x] :heavy_check_mark: Junction
- Function nodes:
- [x] Function (WIP)
- [x] Basic functions
- [x]
nodeobject (WIP) - [x]
contextobject - [x]
flowobject - [x]
globalobject - [x]
RED.utilobject - [x]
envobject
- [x] :heavy_check_mark: Switch
- [x] :heavy_check_mark: Change
- [x] :heavy_check_mark: Range
- [x] :heavy_check_mark: Template
- [x] Delay
- [x] Trigger
- [x] Exec
- [x] :heavy_check_mark: Filter (RBE)
- [x] Function (WIP)
- Network nodes:
- [x] MQTT In
- [x] MQTT Out
- [ ] MQTT Broker
- [x] HTTP In
- [x] HTTP Out
- [x] HTTP Request
- [x] WebSocket Listener
- [x] WebSocket Client
- [x] WebSocket In
- [x] WebSocket Out
- [x] TCP In
- [x] TCP Out
- [x] TCP Get
- [x] UDP In
- [x] :heavy_check_mark: UDP Out
- [x] Unicast
- [x] Multicast
- [x] TLS (WIP)
- [x] HTTP Proxy (WIP)
- Sqeuence nodes:
- [x] Split
- [x] Join
- [x] Sort
- [x] Batch
- Parse nodes:
- [x] CSV
- [ ] HTML
- [x] :heavy_check_mark: JSON
- [x] :heavy_check_mark: XML
- [x] YAML
- Storage
- [x] File
- [x] File In
- [x] Watch
- Common nodes:
Roadmap
Check out our milestones to get a glimpse of the upcoming features and milestones.
Contribution
We welcome contributions! Whether it's:
- Bug reports and feature requests
- Documentation improvements
- Code contributions and new node implementations
- Testing on different platforms
Note: Please make meaningful contributions, or watch and learn. Simply modifying the README or making non-substantive changes will be considered malicious behavior.
Please read CONTRIBUTING.md for details.
Support the Project
If EdgeLinkd saves you memory and improves your edge deployments, consider supporting development:
<a href='https://ko-fi.com/O5O2U4W4E' t
Related Skills
himalaya
337.3kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
coding-agent
337.3kDelegate coding tasks to Codex, Claude Code, or Pi agents via background process
