Skip to content
STACK IT FAST

n8n vs Activepieces

Architecture comparison 2 projects Built from source-audited deep dives

Both are self-hostable workflow automation platforms written in TypeScript. n8n is a pnpm monorepo with a Vue 3 editor whose server runs on SQLite out of the box and moves to PostgreSQL for production; Activepieces is a Bun monorepo with a React editor that runs one image as API and BullMQ workers on PostgreSQL and Redis, and ships every integration as its own npm package.

n8n
TypeScript · NOASSERTION
Activepieces
TypeScript · NOASSERTION
Updated
2026-09-26

Which one should you pick?

Pick n8n if…
  • You want a single container that works with no other services: SQLite is the default database
  • Your team works in Vue 3
  • You want an embeddable chat widget that ships separately from the editor
Pick Activepieces if…
  • You want to scale execution by adding worker replicas of the same image
  • You want contributors to publish integrations as separate typed npm packages
  • Your team works in React
  • You run untrusted flow code and want a native sandbox on top of V8 isolates

Side by side

Attribute n8n Activepieces
Written in TypeScriptVueJavaScript TypeScript
License NOASSERTION NOASSERTION
Frontend VueVite ReactViteTailwind CSSTanStack QueryZustand
Backend & APIs Node.jsExpressTypeORM FastifyNode.jsisolated-vmSocket.IOVercel AI SDK
Data & persistence SQLitePostgreSQL PostgreSQLTypeORMRedisBullMQS3
Infrastructure & deploy DockerTurborepopnpm DockerKubernetesSentryPostHog
Key decisions
  • Monorepo split into workflow, core, cli, and nodes-base packages
  • A newer engine package runs on Express, TypeORM, and Postgres directly
  • SQLite is the zero-config default; Postgres is the production path
  • Integrations are npm packages ("pieces") built on a typed framework
  • One image, two roles: APP and WORKER
  • Flow code executes in isolates, optionally hardened by a sandbox binary
Audited 77cd72c · 2026-09-17 70790de · 2026-09-17

How they differ

Runtime and editor

n8n is a pnpm workspace split into workflow (schema and expression engine), core (execution), cli (the server) and nodes-base (integrations). The editor is a Vue 3 app built with Vite, with a separate design system and an embeddable chat widget. Activepieces is a Bun workspace: a Fastify API with Zod route schemas, a React editor built on @xyflow/react, and an engine that executes steps in isolated-vm.

Data and scaling

n8n ships a single image that compiles the SQLite addon in, so one container works out of the box; teams that need shared state or several instances move to PostgreSQL. Activepieces runs the same image in two roles, app and worker: executions are queued in BullMQ on Redis and picked up by workers, so capacity grows by adding worker replicas. Run status and logs reach the browser over Socket.IO with a Redis adapter.

Integrations

n8n keeps its integration nodes together in nodes-base. Activepieces publishes each integration (“piece”) to npm on top of a typed framework package, and the server loads them at runtime, which is how outside contributors add connectors.

Architecture diagrams

n8n Open SVG
n8n architecture diagramWorkflow editor → n8n server (REST); Triggers → n8n server (webhooks); Chat widget → n8n server (chat API); n8n server → @n8n/engine (execute); @n8n/engine → Nodes (run nodes); n8n server → Database (TypeORM); @n8n/engine → Database (pg); Nodes → Integrations (calls)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEEXTERNALWorkflow editorVue · ViteTriggerswebhooks · schedulesChat widgetVue packagen8n serverNode.js · CLI@n8n/engineExpress · TypeORMNodesnodes-base · AI nodesDatabaseSQLite / PostgreSQLIntegrationsAPIs · LLMs · MCPexecuteRESTwebhookschat APIrun nodesTypeORMpgcalls
Activepieces Open SVG
Activepieces architecture diagramFlow builder → API (APP) (REST · Socket.IO); Triggers → API (APP) (webhooks); MCP clients → API (APP) (MCP); API (APP) → PostgreSQL (TypeORM); API (APP) → Redis (enqueue); Redis → Worker (jobs); Worker → Engine (run flow); Engine → Pieces (actions)CLIENTSSERVICESWORKERS & JOBSDATA & STORAGEEXTERNALFlow builderReact · React FlowTriggerswebhooks · schedulesMCP clientspieces as toolsAPI (APP)Fastify · Socket.IOWorkerBullMQ consumerEngineisolated-vm sandboxPostgreSQLTypeORM · pgvectorRedisqueues · locks · Socket.IOPiecesnpm integrations · AIrun flowREST · Socket.IOwebhooksMCPjobsTypeORMenqueueactions

Frequently asked questions

Which databases do n8n and Activepieces use?

n8n defaults to SQLite and uses PostgreSQL for production through its in-house TypeORM fork; its newer execution engine is built and tested against PostgreSQL. Activepieces uses PostgreSQL in production (the compose file runs the pgvector image), can fall back to PGlite or SQLite for trials, and needs Redis for its BullMQ queues, locks and Socket.IO adapter.

How do n8n and Activepieces run user code safely?

Both rely on isolated-vm, whose native addon n8n rebuilds in a dedicated Docker stage. Activepieces adds the isolate sandbox binary for process-level isolation and ships scripts to verify it.

Do n8n and Activepieces support AI agents and MCP?

Yes. n8n builds its LLM and agent nodes on LangChain and has a Model Context Protocol package. Activepieces wraps the Vercel AI SDK with a catalog of model providers and exposes its integrations as MCP servers.