Skip to content

n8n Orchestration Analysis

Analysis 2026-03-19

A comprehensive evaluation of how n8n is used in the Magic Agent platform, whether it’s the right tool for the job, and what alternatives could improve the architecture.


n8n (cloud-hosted op apptractive.app.n8n.cloud) vervult drie rollen in het Magic Agent platform:

RolWat het doetComplexiteit
Webhook RouterEntry point voor agent requests, valideert en normaliseert dataLaag
Business Logic EnginePrijsberekeningen, voorraadcontrole, kortingsgoedkeuringen, conditionele branchingHoog
Integration OrchestratorChaint DB queries → AI calls → PDF generatie → e-mail met bijlagenHoog
Customer → Widget (iframe) → Agent (Express/PM2) → Claude AI
Tool decision
n8n webhook call ←→ PostgreSQL
PDF / e-mail / search / etc.
ComponentTechnologieRol
AgentsExpress.js + TypeScript, PM2Conversatie, intent herkenning, Claude tool use
n8n Cloudn8n workflows (JSON)Business logic, integraties, orchestratie
FlowExecutorCustom TypeScript (3.848 regels)State machine voor gestructureerde conversatieflows
Process BuilderReact + ReactFlowVisuele flow designer (apart van n8n)
Widget ServerExpress.js (port 4060)Multi-tenant chat widget voor klantwebsites
PostgreSQLTwee pools per agentAgent state + product data
RedisDocker container (port 11003)Beschikbaar maar ongebruikt

Er draaien 13 agent instances als aparte PM2 processen:

AgentPM2 ProcessStatus
brinxxmagic-agent-brinxxActief
spranzmagic-agent-spranzActief
logohorlogemagic-agent-logohorlogeActief
topgivingmagic-agent-topgivingActief
ollivandersagent-ollivandersActief
magiceverseagent-magiceverseActief
magic_dwfagent-magic-dwfActief
princessprincess-agentActief
jodasign-Actief
langenberg-Geen PM2
default_agent-Geen PM2
support_agentsupport-agent-wayneActief
widget servermagic-widget-serverAlle tenants

Elke agent is een volledig onafhankelijke Express app met identieke codebase — wat resulteert in aanzienlijke code-duplicatie.


WorkflowNodesComplexiteitFunctie
Brinxx Agent (hoofd)~50Hoog7 webhooks: voorraad, prijzen, kortingen, offertes, PDF, e-mail
Brinxx Quotation Request (AI)5MediumParse natuurlijke taal → gestructureerde offerte
Ollivanders Quote Email8HoogHTML e-mail met artwork previews en PDF bijlagen
Princess Agent6LaagKlantenservice: bonnetjes opzoeken en e-mailen
Promz Booking3LaagSimpele pass-through naar PHP API
JoDa Sign89HoogVolledig B2B portaal met voorraad, prijzen, levertijden

Voorbeeld: Brinxx Offerte Flow (meest complex)

Section titled “Voorbeeld: Brinxx Offerte Flow (meest complex)”
  1. Webhook ontvangt offerte-aanvraag van agent
  2. Code node valideert en extraheert klantgegevens
  3. PostgreSQL queries voor producten, prijzen, voorraad (meerdere tabellen)
  4. Code node berekent totaalprijs (basisprijs + techniekkosten + setupkosten + BTW)
  5. HTTP Request genereert PDF offerte
  6. HTTP Request downloadt artwork bestanden
  7. Merge node combineert PDF + artworks als bijlagen
  8. Email node verstuurt HTML e-mail met alle bijlagen
  9. Webhook Response bevestigt aan agent
  • Prijsberekening met kleurstaffels en techniektarieven
  • Voorraadcontrole met netto beschikbaarheid (beschikbaar - gereserveerd)
  • Offerte PDF generatie vanuit meerdere bronnen
  • Order validatie met cascading checks
  • E-mail generatie met dynamische HTML
  • Bestandsverwerking (PDF + artwork downloads + merge)
  • BTW berekeningen
  • Conditionele goedkeuringen (kortingsworkflow)

StapDuur
Send Message~100ms
Load History~50ms
Claude API2-5 sec
Format & Stream~50ms
Totaal~2-5 sec
StapDuur
Send Message~100ms
Load History~50ms
Claude API Tool Use2-3 sec
Tool Decision Logic~50ms
n8n Webhook Call1-10 sec
Update Flow Session~100ms
Execute Next Flow Node100ms - 5 sec
Format Response~50ms
Totaal5-20+ sec

De n8n network round-trip (agent → n8n cloud → PostgreSQL → n8n → agent) voegt 1-10 seconden toe per tool call.


CriteriumScore (1-10)Toelichting
Gebruiksgemak8Visuele builder is goed voor snelle iteratie
Webhook handling9Native webhook nodes, eenvoudig op te zetten
Business logic5Code nodes werken maar worden rommelig op schaal, geen testing
Betrouwbaarheid6Cloud = afhankelijkheid, 30s timeouts, geen gegarandeerde delivery
Debuggability4Moeilijk fouten te tracen over agent → n8n → DB → terug
Kosten op schaal4n8n Cloud pricing schaalt met executions, 13 agents = veel executions
Code hergebruik3Elke workflow is standalone, logica gedupliceerd per tenant
Versiebeheer3Workflows zijn JSON blobs, niet code-reviewbaar, geen git flow
Testbaarheid2Geen unit tests voor n8n workflows, geen staging omgeving
Vendor lock-in5Kan self-hosten, maar workflows zijn niet portable
Latency5Extra network hop voegt 1-10s toe per call

Optie 1: Business Logic in Agents (Aanbevolen)

Section titled “Optie 1: Business Logic in Agents (Aanbevolen)”

Vervang n8n webhook calls door directe function calls in de agent codebase. Gebruik de bestaande FlowExecutor als orchestrator.

Huidig: Agent → HTTP → n8n Cloud → DB → n8n → HTTP → Agent
Nieuw: Agent → function call → DB → response
CriteriumScore
Gebruiksgemak7
Betrouwbaarheid9
Debuggability9
Kosten10
Latency10
Testbaarheid9
Versiebeheer10
Totaal9.1

Voordelen:

  • Elimineert network hop — directe function calls
  • Volledig testbaar met unit tests en integration tests
  • Alles in TypeScript — debuggen met standaard tools
  • Geen n8n Cloud kosten
  • FlowExecutor + N8nBridge bestaan al — incrementele migratie mogelijk

Nadelen:

  • Verlies van visuele workflow builder (maar Process Builder blijft)
  • n8n workflows moeten herschreven worden als TypeScript services

Durable workflow engine. Workflows zijn code (TypeScript) met ingebouwde retries, timeouts en state persistence.

CriteriumScore
Gebruiksgemak5
Betrouwbaarheid10
Debuggability8
Kosten7
Latency8
Testbaarheid9
Versiebeheer10
Totaal8.1

Voordelen:

  • Workflows-as-code, durable execution (overleeft crashes)
  • Ingebouwde retry/timeout
  • Excellent voor long-running processen (offerte → goedkeuring → order)

Nadelen:

  • Steile leercurve
  • Infrastructure overhead (Temporal server nodig)
  • Overkill voor simpele webhook → response patronen

Best voor: Als gegarandeerde uitvoering kritiek is (offerte aanmaken MOET slagen, zelfs bij server crash halverwege).


Redis-based job queue voor Node.js. Vervang n8n webhooks door queued jobs.

CriteriumScore
Gebruiksgemak7
Betrouwbaarheid8
Debuggability8
Kosten9
Latency9
Testbaarheid8
Versiebeheer10
Totaal8.4

Voordelen:

  • Redis draait al in docker-compose (momenteel ongebruikt!)
  • Lichtgewicht, Node.js native
  • Goede monitoring dashboard (Bull Board)

Nadelen:

  • Geen visuele builder
  • Job processors moeten geschreven worden
  • Minder durable dan Temporal

Best voor: Asynchrone taken zoals e-mail versturen, PDF generatie, foto verwerking — dingen die geen directe response nodig hebben.


Dezelfde n8n, maar op eigen server in plaats van cloud.

CriteriumScore
Gebruiksgemak8
Betrouwbaarheid7
Kosten8
Latency7
Testbaarheid2
Versiebeheer3
Totaal6.5

Voordelen: Behoudt visuele builder, elimineert cloud kosten, iets lagere latency (lokaal netwerk)

Nadelen: Alle fundamentele problemen blijven (ontestbare logica, debugging, duplicatie). Alleen goedkoper.


Moderne workflow-as-code platforms met TypeScript SDK.

CriteriumScore
Gebruiksgemak8
Betrouwbaarheid9
Testbaarheid8
Versiebeheer10
Totaal7.8

Voordelen: TypeScript-native, event-driven, goede DX, ingebouwde retries en scheduling

Nadelen: Externe afhankelijkheid, minder mature dan Temporal, cloud-hosted kosten


n8n Cloud (huidig)Inline + BullMQTemporalSelf-hosted n8nInngest
Totaalscore4.99.18.16.57.8
Testbaarheid29928
Latency510877
Kosten410786
Debuggability49847
Versiebeheer31010310
LeercurveLaagLaagHoogLaagMedium
Visuele builderJaNee*NeeJaNee

*Process Builder blijft beschikbaar als visuele tool


Inline Business Logic + BullMQ voor Async

Combineer Optie 1 (business logic verplaatsen naar agents) met Optie 3 (BullMQ voor async taken) als hybride architectuur.

Synchroon (directe response nodig):
Agent → Lokale service functie → DB → response
Voorbeelden: voorraadcheck, prijsopvraag, product search
Asynchroon (mag op achtergrond):
Agent → BullMQ job → Worker verwerkt het
Voorbeelden: PDF generatie, e-mail versturen, foto verwerking, kortingsnotificaties
  1. Infrastructuur bestaat al — Redis draait in docker-compose maar is ongebruikt, FlowExecutor handelt al complexe flows af
  2. Lost het grootste pijnpunt op — latency (geen network hops meer naar n8n cloud) en debugging (alles lokaal, testbaar TypeScript)
  3. Bespaart geld — geen n8n Cloud abonnement, geen per-execution kosten
  4. Incrementele migratie — vervang een n8n webhook per keer via de N8nBridge abstractie
  5. Process Builder blijft — definieert flows visueel; nodes callen gewoon lokale functies in plaats van n8n webhooks

  1. Start simpel — Pak de eenvoudigste n8n workflow (Promz booking, 3 nodes) en herschrijf als TypeScript service functie
  2. Update N8nBridge — Laat de bridge lokale functie aanroepen in plaats van n8n webhook
  3. Test en deploy — Vergelijk latency en betrouwbaarheid met n8n variant
  4. BullMQ opzetten — Voeg BullMQ toe voor de eerste async taak (e-mail versturen)
  5. Itereer — Migreer workflows van simpel naar complex, eindigend met Brinxx offerte flow
  6. Monitor — Vergelijk response times, foutpercentages en kosten
  7. Decommission — Zodra alle workflows gemigreerd zijn, n8n Cloud opzeggen
WorkflowComplexiteitMigratie EffortPrioriteit
Promz BookingLaagKlein1 (pilot)
Princess AgentLaagKlein2
Brinxx Quotation Request (AI)MediumMedium3
Ollivanders Quote EmailHoogMedium4
Brinxx Agent (hoofd)HoogGroot5 (laatst)
JoDa SignHoogGroot6 (laatst)

  1. Monolithische agents — 13 identieke Express apps met gedupliceerde code
  2. FlowExecutor te groot — 3.848 regels in een bestand, moeilijk te onderhouden/testen
  3. Database als bottleneck — Twee pools per agent, zelfde PostgreSQL server, max 10 connecties
  4. Widget server bottleneck — Een Node.js process voor alle tenants, 238KB widget-core.js per sessie
  5. State management verspreid — SessionId in localStorage, FlowSession in PostgreSQL, variabelen in execution context
  6. Error handling — n8n failures rollen agent state niet terug, geen transactiegaranties
FlowHopsPad
Photo Search6widget → flow node → rembg → Claude Vision → n8n ML → database
Escalation3+escalation-handler.ts + engage-check.ts + flow logic
Tool Routing3sendMessage.ts → flow executor → SDK handler → Claude

BestandLocatieBeschrijving
ecosystem.config.js/home/adminwayne/magic_agent/PM2 configuratie
docker-compose.yml/home/adminwayne/magic_agent/PostgreSQL + Redis services
deploy-agent-update.sh/home/adminwayne/magic_agent/Deployment script (rebuild/restart/deploy)
n8n-bridge.tsagents/*/src/runtime/HTTP wrapper voor n8n webhook calls
flow-executor.tsagents/*/src/runtime/3.848-regels flow engine
widget-core.jswidget/238KB chat widget (speech + camera)
n8n workflowsn8n-workflows/Alle n8n workflow JSON exports