emit.run

Welcome

emit.run - Reliable background job processing

emit.run

Durable background job processing. Submit jobs, poll for work, process them — with automatic retries, timeouts, and real-time progress streaming out of the box.

Why emit.run?

  • Survives failures — Jobs persist through restarts, crashes, and deploys. Automatic retries with configurable backoff.
  • Real-time progress — Stream job progress to clients over WebSockets. No polling your own database.
  • Fine-grained permissions — 10 granular scopes let you give producers, workers, and dashboards exactly the access they need.
  • Space-based multi-tenancy — Organize jobs into spaces by project, environment, or team. Each space has its own queue, tokens, and event stream.
  • Simple worker model — Poll, ack, do work, complete. No SDKs required — it's just HTTP.

How It Works

Producer                    emit.run                        Worker
   │                            │                              │
   ├── POST /jobs ──────────────►  (queued, pending)           │
   │                            │                              │
   │                            │  ◄── POST /jobs/poll ────────┤
   │                            │  ──── job descriptor ────────►
   │                            │                              │
   │                            │  ◄── POST /jobs/:id/ack ─────┤
   │                            │                              │
   │   ◄─── WebSocket progress ─┤  ◄── POST /jobs/:id/progress┤
   │                            │                              │
   │   ◄─── WebSocket complete ─┤  ◄── POST /jobs/:id/complete┤

On this page