Von is open-source webhooks infrastructure that handles delivery at scale. With Von, you get:
- Automatic retries with exponential backoff
- Circuit breakers for failing endpoints
- HMAC signature verification
- Environment isolation (dev, staging, prod)
- Local testing with tunnels via the CLI
All out of the box, without reinventing webhook infrastructure.
Get started at usevon.com with no setup required.
Self-hosting Von gives you full control over your data with no usage limits, and the backend services compile to standalone binaries that you can run with PM2 for zero-downtime reloads.
The backend (api, tunnel, worker) requires a VPS or dedicated server since stateful WebSocket connections aren't compatible with serverless platforms. The dashboard and site are Next.js apps that can be deployed to Vercel or self-hosted anywhere that runs Node.js.
You'll need PostgreSQL, Redis, and Bun installed for building.
git clone https://github.com/usevon/von.git
cd von
bun install
# Start infrastructure
docker compose -f docker-compose.dev.yml up -d
# Copy env files
cp apps/api/.env.example apps/api/.env
cp apps/worker/.env.example apps/worker/.env
cp apps/tunnel/.env.example apps/tunnel/.env
# Push database schema
bun run --cwd apps/api db:push
# Start all services
bun devFrontend
Deploy the dashboard and site to Vercel by importing your repo and setting the root directory to apps/dashboard or apps/site, then add your environment variables.
Backend
The backend services require a Linux VPS with PostgreSQL and Redis, and PM2 for process management (npm install -g pm2). Build the binaries locally and deploy them to your server:
bun run --cwd apps/api build:prod
bun run --cwd apps/tunnel build:prod
bun run --cwd apps/worker build:prodCopy the binaries to your server (replace user@server with your SSH details):
scp apps/api/dist/api user@server:/app/
scp apps/tunnel/dist/tunnel user@server:/app/
scp apps/worker/dist/worker user@server:/app/Then start them with PM2 and configure automatic startup:
pm2 start /app/api --name api
pm2 start /app/tunnel --name tunnel
pm2 start /app/worker --name worker
pm2 save && pm2 startupFor zero-downtime reloads after updates, run pm2 reload all.
# Unit tests (from root)
bun run test
# Package-specific tests
bun test --cwd packages/sdk
bun test --cwd apps/worker
# Integration tests (requires env vars)
cd apps/api && bun test tests/integration| Language | Package |
|---|---|
| TypeScript | @usevon/sdk |
| React | @usevon/react |
Install the CLI globally to test webhooks locally with tunnels:
npm install -g @usevon/cliVon is open source and welcomes contributions, issues, and feedback.
See CONTRIBUTING.md for development setup and guidelines.
For security concerns, see our Security Policy.
Von uses dual licensing:
AGPL-3.0 License (LICENSE-AGPL)
apps/- api, dashboard, site, tunnel, workerpackages/auth- authenticationpackages/db- database schemapackages/queue- job queuepackages/utils- shared utilities
MIT License (LICENSE-MIT)
packages/cli- CLIpackages/react- React hookspackages/sdk- TypeScript SDKpackages/typescript-config- shared TypeScript configpackages/ui- UI components