02 Applications we run for you
Node-RED
Flow-based automation under foundation governance, with no vendor that can change its mind about the licence.
- Role
- Workflow automation
- Licence
- Apache 2.0
- Since
- 2013
- Upstream
- Project site ↗
Node-RED is a flow-based automation tool: a visual editor for the joins between systems, self-hosted on your own machine.
Why we choose it over the popular alternative
The obvious choice here is n8n, and it is a good product. We do not default to it, and our reason has little to do with features.
n8n is source-available, published under the Sustainable Use License and controlled by a single company. Node-RED is Apache 2.0 and governed by the OpenJS Foundation. A licence is only as durable as the entity that can change it, and a foundation has no commercial reason to relicense, whereas venture-funded companies periodically do.
A tool that will hold the joins between your systems for a decade should be chosen for that property ahead of a nicer node palette.
What it is good at
Event-driven glue. A webhook arrives, something happens in Redmine, a file lands in Nextcloud, or a nightly job checks that what should have happened did. It has been in production use since 2013, originally out of IBM. It has a very large library of community nodes and a runtime small enough to run on a Raspberry Pi in a plant room.
Flows are JSON, so they can be committed and diffed like any other artefact, which means automation can be reviewed like the rest of the infrastructure.
How we run it
On NixOS with PostgreSQL for state, declared in your repository. Flows are exported and committed to Git, so every automation has an author, a diff and a review instead of existing only inside a web interface. A staging instance runs against test data, and every flow alerts on failure. Automation that fails silently is worse than none, because people stop checking.
Where it falls short
The editor looks dated next to newer tools, and the node library is uneven. It is excellent for protocols and hardware and thinner for modern SaaS APIs, where you will write more HTTP requests by hand than you would with n8n.
A canvas also only helps up to a point. Past roughly a hundred nodes, a flow is harder to read than the code it replaced, and error handling in particular is easier to get right in a programming language. At that stage we write a small Ruby service and schedule it with systemd.