Deployment guide

Activepieces: the MIT n8n alternative for agencies and AI agents

Deploy on a VPS Cloud →

Tutorial

Activepieces: the MIT n8n alternative for agencies and AI agents

Automation9 min read8 steps

Since n8n adopted its Sustainable Use License, agencies that resell automations to clients find themselves in a legal grey zone. Activepieces solves this with an unambiguous MIT license, a Docker deployment in under ten minutes, and — available since March 2025 — native MCP protocol support that lets your AI agents (Claude, GPT-4o) trigger flows directly, with the Streamable HTTP protocol added in December 2025. This guide walks you from installation to connecting your first agent, with an honest three-way comparison.

Contents· Why n8n's license is a problem for agencies1/10
  1. 01Why n8n's license is a problem for agencies
  2. 02What Activepieces' MIT license changes in practice
  3. 03System requirements before deployment
  4. 04Deploy Activepieces with Docker Compose
  5. 05Connecting an AI agent via MCP
  6. 06The connector question: 280 or 500?
  7. 07Activepieces vs n8n vs Make — agency comparison
  8. 08Backing up Activepieces' PostgreSQL database
  9. 09Troubleshooting — common errors
  10. 10Next steps and further resources

Why n8n's license is a problem for agencies

n8n switched to the Sustainable Use License (SUL) in 2022 and tightened it in 2025. The core clause prohibits using n8n to provide a commercial service to third parties without prior agreement from the vendor. For an agency, this covers virtually every use case: automating a client's workflows, reselling access to a shared instance, or billing setup hours on an instance hosted on a client's behalf. The SUL explicitly states: "You may not make the functionality of the Software available to third parties as a service." This wording covers multi-client internal SaaS scenarios, white-label dashboards, and integrations delivered under your own brand. The practical consequence: a serious agency must either negotiate a commercial license with n8n (variable cost and timelines) or find a truly open-source alternative. Activepieces targets exactly this gap: same visual flow builder paradigm, MIT license with no commercial use restriction, and a connector ecosystem covering common agency integrations.

What Activepieces' MIT license changes in practice

  • Unrestricted client use — deploy Activepieces for each of your clients, bill your configuration hours, resell access: no clause prohibits it.
  • Fork and customise — modify the source code, rebrand the interface, embed Activepieces in your own offering, without asking permission.
  • No commercial license to negotiate — zero license cost, zero administrative delay, zero risk of terms changing at renewal.
  • Full auditability — your client can inspect the code processing their data; a selling point for regulated sectors (legal, healthcare, finance).
  • Community contributions — MIT attracts more contributors than SUL; the pace of new connectors benefits directly.
  • Data portability — exporting flows as standard JSON is unrestricted; migration between instances or to a fork stays possible at any time.
  • Multi-cloud hosting — choose your datacenter, cloud provider, or private datacenter without notifying the vendor.

System requirements before deployment

Activepieces runs two main services: a Node.js server and a PostgreSQL database. For an agency instance serving up to five simultaneous clients, plan for at least 2 vCPU and 4 GB RAM — the same baseline as n8n, but Activepieces includes a sandbox engine for custom pieces (TypeScript executed in an isolated worker) that consumes extra memory at peak. In production with sandbox mode enabled, 8 GB RAM allows processing complex flows without memory pressure. For storage, plan 20 GB minimum for execution logs and attachments; a separate volume for PostgreSQL will simplify backups. Ports to open inbound: 80 and 443 for the reverse proxy, 5432 closed to the public (local database). Activepieces does not require Redis in basic configuration; Redis becomes useful only when enabling distributed mode (multiple workers). Verify that Docker Engine ≥ 24 and Docker Compose ≥ 2.20 are installed: docker --version and docker compose version.

Deploy Activepieces with Docker Compose

  1. Create the working directory

    Connect to your VPS and create a dedicated directory:
    mkdir -p /opt/activepieces && cd /opt/activepieces

  2. Download the official Compose file

    Fetch docker-compose.yml from the official repository:
    curl -fsSL https://raw.githubusercontent.com/activepieces/activepieces/main/docker-compose.yml -o docker-compose.yml

  3. Create the environment file

    Generate an encryption key and set the essential variables:
    cp .env.example .env 2>/dev/null || touch .env
    Then edit .env with at minimum:
    AP_ENCRYPTION_KEY=$(openssl rand -hex 16)
    AP_JWT_SECRET=$(openssl rand -hex 32)
    AP_FRONTEND_URL=https://automations.yourdomain.com
    AP_POSTGRES_PASSWORD=$(openssl rand -hex 24)

  4. Start the containers

    Launch the stack in the background:
    docker compose up -d
    Verify both services are healthy:
    docker compose ps

  5. Configure the Nginx reverse proxy

    Create /etc/nginx/sites-available/activepieces with the following block (adapt server_name):
    server { listen 443 ssl; server_name automations.yourdomain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } }
    Enable and reload: ln -s /etc/nginx/sites-available/activepieces /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx

  6. Obtain a TLS certificate

    With Certbot:
    certbot --nginx -d automations.yourdomain.com --non-interactive --agree-tos -m [email protected]

  7. Create the first admin account

    Open https://automations.yourdomain.com in your browser. The first-run wizard prompts you to create the admin account. Enter an email address and a strong password (≥ 16 characters).

  8. Check the version and enable updates

    Check the deployed version in Settings → About. To update:
    docker compose pull && docker compose up -d
    Schedule this command as a weekly cron job to stay on a patched version.

Connecting an AI agent via MCP

MCP (Model Context Protocol) support reached general availability in Activepieces in March 2025, with the Streamable HTTP protocol added in December 2025. It exposes each Activepieces flow as an MCP tool callable by any compatible client — Claude Desktop, the Anthropic API with tools, or a GPT-4o agent via OpenAI's tools interface. In practice, an Activepieces flow becomes a tool your agent can invoke by name: create-crm-contact, send-slack-alert, sync-airtable-row. To enable MCP on a Docker instance, add to your .env: AP_MCP_ENABLED=true. After restarting (docker compose up -d), Activepieces generates an MCP endpoint at https://automations.yourdomain.com/api/v1/mcp. In Claude Desktop, add this server to your MCP configuration file with the URL and an Activepieces service account API key. The agent can then list available flows and trigger one with structured parameters, with no manual webhook setup required. For GPT-4o, the same endpoint is compatible with the OpenAI API tools schema: define the URL and API key in your chat.completions.create call and the model can invoke your automations as native functions.

The connector question: 280 or 500?

Activepieces offers around 280 official connectors versus roughly 500 for n8n — a real gap, worth acknowledging honestly. In practice, most agencies rarely use more than thirty connectors on a given instance: CRM, Slack, inbound webhooks, email, Google Sheets, Airtable, Notion. For these use cases, the Activepieces catalogue is complete. When a connector is missing, the TypeScript custom pieces SDK lets you write one in a few hours: the structure is documented, the sandbox worker manages the lifecycle, and the custom piece is versioned like any other code. The real question is not 'how many in the catalogue' but 'is the connector I need available today' — and for everyday agency integrations, the answer is yes.

Activepieces vs n8n vs Make — agency comparison

Scroll the table

Activepiecesn8nMake
LicenseMIT — free commercial useSustainable Use License — third-party use restrictedProprietary SaaS — no self-hosting
Native MCP supportYes (GA March 2025, Streamable HTTP Dec. 2025)No (experimental third-party plugins)No
Connector count~280 official connectors + custom pieces SDK~500 official connectors~1,500 connectors (SaaS only)
Self-hostingDocker Compose, Kubernetes, RailwayDocker, npm, KubernetesNot available
Self-hosted pricingFree (MIT)Free (fair-code) then commercial license for third-party useBusiness plan minimum monthly subscription (no self-hosting option) / month minimum
Visual editorYes, drag-and-drop canvasYes, drag-and-drop canvasYes, scenario canvas
Custom code executionTypeScript in sandboxed workerJavaScript/Python in code nodeNo (HTTP modules only)

Backing up Activepieces' PostgreSQL database

All configuration (flows, credentials, execution logs) lives in PostgreSQL. A daily backup suffices for most agencies. Add this line to your crontab (crontab -e):
0 3 * * * docker exec activepieces-postgres pg_dump -U activepieces activepieces | gzip > /opt/backups/activepieces-$(date +%Y%m%d).sql.gz
Test the restore at least once on a development instance: gunzip -c activepieces-20261001.sql.gz | docker exec -i activepieces-postgres psql -U activepieces activepieces. Keep at least seven rolling backups and transfer them off the VPS (S3, Backblaze, rsync to a secondary server).

Troubleshooting — common errors

Error: ENCRYPTION_KEY is not set — the AP_ENCRYPTION_KEY variable is missing or empty in your .env. Generate a value with openssl rand -hex 16 and restart the stack. Do not reuse the same key across distinct instances: encrypted credentials would become unreadable on the other instance.

Connection refused on port 8080 — the activepieces container started but is not yet listening. Check the logs: docker compose logs activepieces --tail=50. The most common cause is PostgreSQL not ready: Activepieces waits for the database at startup, but a hard restart can leave PostgreSQL taking longer to come back online. Simply restart: docker compose restart activepieces.

MCP endpoint returns 401 — the AI agent is sending either an expired API key or a key linked to an account without MCP access permission. In Activepieces, go to Settings → API Keys, regenerate the service account key, and verify the account has the OPERATOR or ADMIN role on the relevant project.

Flow execution stuck on sandbox step — the sandbox worker is waiting for CPU resources. Check load with docker stats: if the activepieces container stays at 100% CPU for more than thirty seconds, your VPS is undersized for the volume of concurrent flows. Upgrade to 4 vCPU or limit parallelism in Activepieces project settings (Settings → Project → Max parallel executions).

Next steps and further resources

Your Activepieces instance is running and connected to your AI agents. The natural next step is to organise your flows by client project and set up a versioning system (JSON export + Git repository). If you manage multiple clients on one instance, explore Activepieces Workspaces, which provide separation of flows, credentials, and logs per client. To go further on the topics covered in this article, see our companion guides: [Install Activepieces on a VPS](/blog/installer-activepieces-vps) for a ground-up installation guide, [Install n8n on a VPS](/blog/installer-n8n-vps) to evaluate both solutions side by side, [Zapier vs n8n: cost and migration](/blog/zapier-vs-n8n-cout-migration-2026) for the full ROI calculation, and [Deploy a self-hosted MCP AI server on VPS](/blog/mcp-serveur-ia-auto-heberge-vps) to go deeper into multi-agent architecture.

Deploy Activepieces in one click from the marketplace

Launch a ready-to-use Activepieces environment from the ServOrbit marketplace — MIT license, AI agents connectable via MCP from first start, data hosted in Europe.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab