MeshHook is an MIT-licensed, webhook-first workflow engine with a visual builder (SvelteKit/Svelte 5) and Temporal-like durability via event sourcing on Postgres (Supabase).
Feature | n8n | Windmill | Temporal | MeshHook |
---|---|---|---|---|
License | Fair-code (restrictive) | AGPLv3 | MIT | MIT |
Primary Use Case | No-code automation | Script orchestration | Microservice workflows | Webhook-first workflows |
Durability | Database polling | Database + queues | Custom event sourcing | Event sourcing on Postgres |
Visual Builder | ✅ Drag-and-drop | ❌ Code-first | ❌ Code-first | ✅ Visual + Code |
Webhook-Native | ⚠️ Supported | ⚠️ Supported | ❌ Not primary | ✅ Built-in |
Self-Hosted | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
Database | MySQL/Postgres | Postgres | Custom | Postgres (Supabase) |
Transforms | JavaScript | TypeScript/Python | Any language | JMESPath |
Realtime Logs | ❌ Polling | ❌ Polling | ❌ Polling | ✅ Supabase Realtime |
Deployment | Complex (multiple services) | Complex (workers + API) | Complex (server + workers) | Simple (single service) |
Learning Curve | Low (no-code) | Medium (scripts) | High (SDK required) | Low (visual + simple) |
Install dependencies
pnpm install
Setup environment (interactive)
pnpm run setup
Select "Local Development" when prompted. This creates .env.local
with Supabase local defaults.
Start Supabase locally
pnpx supabase start
Run migrations
pnpm run db:migrate
Start the orchestrator
pnpm run start
Runs on port 8080 (configurable via PORT environment variable)
Install dependencies
pnpm install
Setup environment (interactive)
pnpm run setup
Select "Production" or "Staging" and enter your Supabase credentials.
Run migrations
pnpm run db:migrate
Automatically detects environment and pushes migrations to remote database.
Start the server
pnpm run start
Runs on port 8080 by default. Configure your reverse proxy to forward traffic to this port.
pnpm run setup
- Interactive environment configuration (local/staging/production)pnpm run db:migrate
- Run database migrations (auto-detects environment)pnpm run start
- Start the orchestrator worker (production)pnpm mh --help
- CLI help.env.local
- Local development (committed to repo with safe defaults).env.staging
- Staging environment (not committed).env.production
- Production environment (not committed).env
- Symlink to active environment (created by setup script)./docs/Environment-Setup.md
- Detailed environment setup guide./docs/Event-Partitioning.md
- Event partitioning strategy and maintenance./docs/PRD.md
- Product requirements./docs/Architecture.md
- System architecture./docs/diagrams/*.puml
- PlantUML diagramsMeshHook runs as a single service on port 8080 that handles:
All components communicate via Supabase (Postgres) - no inter-service HTTP calls needed.