A lightweight webhook proxy that routes inbound HTTP requests to multiple outbound destinations with a visual flow editor and real-time telemetry.
- 🎨 Visual Flow Editor — Design webhook routing using a drag-and-drop React Flow canvas
- 🔀 Multi-destination Routing — Proxy a single inbound request to multiple outbound webhooks
- 📊 Real-time Telemetry — Monitor request/response logs with replay capabilities
- 🔐 HMAC Signature Verification — Secure your inbound webhooks with signature validation
- 🏢 Organization Support — Multi-tenant project organization
- 🚀 Self-hosted or Cloud — Run on your own infrastructure or use the managed version
- Node.js 20+
- PostgreSQL
- Redis
# Clone the repository
git clone https://github.com/ericmaro/hooki.git
cd hooki
# Install dependencies
pnpm install
# Configure environment
cp .env.example .env
# Edit .env with your database and Redis URLs
# Push database schema
pnpm db:push
# Start development server
pnpm dev| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Required |
REDIS_URL |
Redis connection string | Required |
BETTER_AUTH_SECRET |
32+ character secret for auth | Required |
BETTER_AUTH_URL |
Base URL for auth callbacks | http://localhost:5004 |
HOOKI_MODE |
self-hosted or cloud |
self-hosted |
Note: In
self-hostedmode, only one user account can be created. The first signup becomes the admin.
- Create a Project — Organize your flows into projects
- Create a Flow — Define a new webhook routing flow
- Configure Inbound Route — Set the path that receives incoming webhooks
- Add Outbound Destinations — Connect to your target webhook URLs
- Save & Test — Your flow is ready to proxy requests
POST https://your-domain.com/api/webhook/{flowId}
# or with custom paths
POST https://your-domain.com/api/webhook/{custom-path}
- TanStack Start — Full-stack React framework
- React Flow — Visual node-based editor
- Better Auth — Authentication
- Drizzle ORM — Type-safe database access
- BullMQ — Background job processing
- shadcn/ui — UI components
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Run production server
pnpm db:push # Push schema to database
pnpm db:studio # Open Drizzle Studio
pnpm lint # Run ESLint
pnpm test # Run testsSee SECURITY.md for security policies and reporting vulnerabilities.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Note: Direct commits to
mainare disabled. All changes require a PR.
MIT — see LICENSE for details.