Multi-tenant projects
Per-user projects with Postgres Row-Level Security. Mint per-project API tokens scoped to a single tenant — leaks never cross projects.
Self-hosted · MIT licensed
A lean alternative to hosted QStash-style ingress. Multi-tenant queue, HTTP delivery with retries, cron schedules, and strictly-ordered message groups — all running on your own Postgres.
Six primitives. One Postgres. Zero hosted dependencies.
Per-user projects with Postgres Row-Level Security. Mint per-project API tokens scoped to a single tenant — leaks never cross projects.
Bearer pk_xxx:sk_yyy, bcrypt-hashed at rest. Shown once on creation, revocable instantly from the dashboard.
POST one HTTP job: origin, path, method, headers, body, retries, optional runAt or delaySeconds, optional idempotencyKey.
One origin + many paths, executed strictly in order. Postgres enforces sibling ordering at claim time — survives restarts and multiple workers.
Per-row cron expression + timezone. One central dispatch tick enqueues due schedules; schedule_runs dedupes overlapping workers.
Failed attempts move to pending_retry with backoff. After max_retries: dead. Every attempt is logged in delivery_attempts.
Drop in curl, the SDK, or any HTTP client.
curl -X POST https://api.passthatpayload.com/api/v1/messages \
-H "Authorization: Bearer pk_xxx:sk_yyy" \
-H "Content-Type: application/json" \
-d '{
"origin": "https://api.example.com",
"path": "/hooks/order-created",
"body": { "orderId": 42 },
"maxRetries": 5
}'What you'd otherwise build yourself.
Take one incoming event and dispatch it to many downstream URLs, each with its own retry policy. Don't lose a single delivery to a flaky third-party API.
Schedule cron expressions per row. One central dispatch tick fires the due ones — no OS cron per schedule, no Vercel-cron-per-job.
Need step 2 to wait for step 1? Message groups guarantee order at the database level — even across multiple dispatchers.
Same engine, two ways to run it.
| Feature | Hosted | Self-host |
|---|---|---|
| Infrastructure | Runs on api.passthatpayload.com — zero ops on your side. | One container + Postgres on your own server. Hetzner runbook in the README. |
| Data ownership | Stored in our shared Postgres, isolated per project via RLS. | Your database, your backups, your retention. |
| Quotas | Generous free tier during beta. | No quotas — limited only by your Postgres + bandwidth. |
| Support | Community + best-effort. | Community + GitHub issues. |
Free during beta. Self-host is free forever.
For everyone using the hosted edition during beta.
Run Pass That Payload on your own server.
Higher quotas, SLA, priority support.