Skip to content

Latest commit

 

History

197 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MeshHook — Mesh your webhooks. Orchestrate everything.

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.

Stack

  • UI/API: SvelteKit (Svelte 5)
  • Database: Postgres, through @profullstack/libsql-pg (the queries kept their libSQL shape)
  • Workers: Node.js (or Bun), stateless
  • Queue: SQLite-backed, with visibility timeouts and a dead-letter queue
  • Auth: self-hosted sessions (scrypt password hashing, opaque session tokens)
  • Live logs: Server-Sent Events
  • Transforms: JMESPath

Why MeshHook?

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 SQLite
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
Transforms JavaScript TypeScript/Python Any language JMESPath
Realtime Logs ❌ Polling ❌ Polling ❌ Polling ✅ Server-Sent Events
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)

MeshHook's Sweet Spot

  • Webhook-first: Built specifically for webhook orchestration and transformation
  • Simple deployment: Single service on one port, no complex infrastructure
  • MIT licensed: Truly open source, use anywhere without restrictions
  • Event sourcing: Temporal-like durability without the complexity
  • Visual + Code: Low-code visual builder with JMESPath for power users
  • No infrastructure: local development is a single SQLite file — no server, no containers

Quick Start

Local Development

  1. Install dependencies

    bun install
  2. Setup environment (interactive)

    bun run setup

    Select "Local Development" when prompted. This creates .env.local pointing at a local SQLite file (file:./meshhook.db) and generates a secrets encryption key.

    There is no database server to start — the file is created by the migration step.

  3. Run migrations

    bun run db:migrate
  4. Start the orchestrator

    bun run start

    Runs on port 8080 (configurable via PORT environment variable)

Production / Staging

  1. Install dependencies

    bun install
  2. Setup environment (interactive)

    bun run setup

    Select "Production" or "Staging" and enter your Postgres URL (postgres://user:pass@host:5432/meshhook). Anything else is refused.

  3. Run migrations

    bun run db:migrate

    Applies any pending migrations from migrations/ and records them in schema_migrations. Re-running is a no-op.

  4. Start the server

    bun run start

    Runs on port 8080 by default. Configure your reverse proxy to forward traffic to this port.

Available Commands

  • bun run setup - Interactive environment configuration (local/staging/production)
  • bun run db:migrate - Apply pending database migrations
  • bun run db:status - Show applied and pending migrations
  • bun run db:verify - Verify the schema matches what the app expects
  • bun run test - Run the test suite
  • bun run start - Start the orchestrator worker (production)
  • bun run mh --help - CLI help

Environment Files

  • .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)

Documentation

Architecture

MeshHook runs as a single service on port 8080 that handles:

  • Webhook intake and processing
  • Workflow orchestration
  • Background job execution
  • HTTP request execution with retries

All components communicate through the Postgres database - no inter-service HTTP calls needed.

About

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).

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages