n8n is made so that you can set it up and give your staff access and they can manage their own workflows (like "when a customer opens a support ticket, update their Salesforce record to increment the number of tickets they have opened").
It's clearly aimed at non technical users being able to develop their own solutions to problems (for better or for worse), more so than Windmill which is made for developers to solve their own problems or develop solutions that non-technical people can use. Node Red if I remember correctly is more heavily weighted toward real time events for dev (especially hardware/IoT dev) use than "let the support team manage their own workflows for routing customer complaints"
The library just uses the streaming API[3] of NodeJS - effectively converting lines of CSV (for example) into individual messages that flow through NodeRED.
NodeRED isn't great for handling large messages but perfect for directing many small messages.
[1] https://flows.nodered.org/node/@gregoriusrippenstein/node-re...
[2] https://flowhub.org/f/c520d9da20ad7f1d
[3] https://nodejs.org/dist/latest-v18.x/docs/api/stream.html
n8n is far more high level with google sheet nodes communicating with postgres database nodes. There is far less ability to do manipulate the data being passed around - as many said Zapier-like.
NodeRED is used for home automation and talking to devices that are connected to the network and providing nice dashboards of things happening. Another big use case is IIoT. So it less focussed on integration of SaaS services and more on devices integration and inter-communication between devices.
Plus NodeRED has a great collection[1] of third party nodes that can help in connecting to new devices. Installing nodes is based on npm but is completely automated.
You can go a _long_ way with the split/join nodes and a little ingenuity to work around any issues with streaming.
I've just poked at them, but my impression was that Node Red much more capable.
IIRC one of my issues with n8n was the lack of streaming ability, which kills it for large datasets.