← Back to Writing

n8n Self-Hosted Agent Automation: Why I Moved Off Make and Zapier

I ran my agent orchestration on Make.com for six weeks. Then I hit the operation limits, the missing version control, and the opaque errors. Self-hosted n8n costs $6/month and handles whatever throughput you throw at it.

I ran my agent orchestration on Make.com for six weeks. Then I hit the wall: 1,000 operations per month on the free tier, no version control for workflows, and a JSON export that corrupted on round-trip. I moved everything to self-hosted n8n. Here's what changed.

The Problem With Hosted Automation for Agent Work

Most no-code automation platforms (Make, Zapier, IFTTT) are built for marketing workflows: "when someone fills out a Typeform, add them to Mailchimp." They're not built for agent orchestration loops.

Three specific breakpoints:

1. Operation limits kill agent polling loops. Every n8n webhook trigger is one operation. If Harbor polls the task board every 5 minutes, that's 8,640 operations per month just for one agent. Make's free tier is 1,000 ops. Zapier's starter is 750. You're paying before you've built anything real.

2. No version control for workflows. When I refactored the Harbor-to-Quill handoff pipeline and broke it, I couldn't git revert. I had to manually reconstruct the JSON export. The Make JSON had different field names from the UI. Not a clean source of truth.

3. Opaque error handling. Make's error logs show "Operation failed" with no stack trace. When Forge's webhook payload changed format and Harbor stopped parsing, I spent 45 minutes debugging a silent failure that a self-hosted n8n instance would have logged in 2 seconds.

What Self-Hosted n8n Gives You

Unlimited operations. You pay for the server, not per trigger. A $6/month Hetzner VPS runs 6 agent workflows comfortably.

Git-native workflows. n8n stores workflows as JSON files. git init your workflow directory and you have rollback, branching, and blame. When I broke the Harbor handoff, I reverted the JSON and it was fixed in 30 seconds.

Local execution. No data leaves your machine. Agent internal logs, API keys, task descriptions. All stay inside the VPS. For agent infrastructure that handles your personal workflow data, this matters.

Direct filesystem access. n8n nodes can read and write files, execute shell commands, and query SQLite databases. My agents don't need a separate database layer. n8n reads the same kanban database that Harbor writes, and the same log.md that Quill appends to. One source of truth, read by n8n, written by agents.

My Workflow Topology

Webhook triggers (Discord bot, cron timers, GitHub webhooks)
  ↓
n8n workflow nodes (route, transform, validate)
  ↓
Agent system prompts (read from Obsidian vault or config files)
  ↓
Agent output (written back to vault files: kanban.db, log.md, memory/)
  ↓
n8n notification nodes (Discord post, email digest, Slack alert)

Three core workflows:

1. Cron → Harbor heartbeat → task board update. Every 30 minutes, n8n hits a Discord webhook that triggers Harbor's polling cycle. Harbor reads the kanban board, moves cards, posts status to #harbor-dock. No hosted cron service, no third-party scheduler.

2. GitHub webhook → Forge build → Discord notification. When I push to the mimir.works repo, n8n catches the GitHub webhook, triggers a build check, and Forge posts the result to #forge-workshop. All through n8n, all self-hosted.

3. Quill publish → RSS rebuild → social cross-post. When Quill flips draft: false on a blog post, n8n detects the git commit, triggers a Vercel redeploy, rebuilds the RSS feed, and optionally cross-posts the excerpt to X. One workflow, zero SaaS subscriptions.

What Still Requires SaaS

Not everything moves to n8n. I keep these external:

  • GitHub Actions for CI/CD. n8n is for orchestration, not build pipelines.
  • Vercel for hosting. n8n doesn't do static site serving.
  • Discord as the control surface. n8n routes messages, Discord displays them.

n8n is the glue, not the platform. It connects the pieces I already own.

The Cost Comparison

| | Make (Pro) | Zapier (Starter) | Self-hosted n8n | |------------------------|--------------|------------------|---------------------| | Monthly cost | $9 | $19.99 | $6 (Hetzner VPS) | | Operations | 10,000 | 750 | Unlimited | | Version control | Export JSON | Export JSON | Git-native | | Local data | No | No | Yes | | Shell and DB access | No | No | Yes | | Multi-agent workflows | Exhausts ops | Impossible | Default |

At 6 agents polling every 5 to 30 minutes, Make's Pro tier would hit 60,000+ operations per month. That's their Team plan at $29/month, and you're still limited to 40,000 ops. Self-hosted n8n costs less than one lunch and handles whatever throughput you throw at it.

What I'd Do Differently

I'd start with n8n on day one. The hosted platforms teach you wrong patterns because their pricing penalizes the polling loops that agent orchestration depends on. You end up engineering around operation limits instead of building the right architecture.

One thing that tripped me: n8n's webhook node requires a public endpoint. On a Hetzner VPS behind a firewall, you need either a Cloudflare Tunnel or nginx reverse proxy to expose the webhook receiver. Took 20 minutes to set up. Worth doing upfront.


Related reading:

Some links on this site may be affiliate links. I only recommend tools I use. If you click through and make a purchase, I may earn a small commission at no extra cost to you.