Get started
Introduction
emit runs your background jobs and workflows, and keeps each job's progress and result where your app can read them.
emit is a job queue you call over HTTP. Your app creates a job: a name, like send-receipt, and a JSON payload. emit stores it before it answers, then hands it to one of your workers, the processes that do the work. A job that fails is tried again. Its progress, logs and result stay with it, so your app, your team and a browser can follow it to the end.
The work runs in your own code, on your own servers. emit keeps the queue and the record.
What you can build
- Background jobs. Send a receipt, resize an image or sync an account after the request that asked for it has returned.
- Scheduled work. Run a job in an hour, or at a set time.
- Workflows. A function that runs steps, sleeps for days and waits for a person or an event, and carries on after a crash or a deploy.
- Live progress. Show a progress bar in the browser, with no polling and no tracking table of your own.
How it fits together
- Your app creates jobs in a space, a named queue with its own settings, such as
emailsorbilling. - A worker asks for jobs by name, runs them, and reports back: progress along the way, then a result or an error.
- Your app reads the result, follows the job as it runs, or gets a signed webhook when it ends.
You reach emit through the TypeScript SDK, the Go SDK, the CLI or plain HTTP. They all use the same API.
Where to start
Create a cluster, send a job and run it.
Statuses, retries, delays, idempotency keys and callbacks.
Steps, sleeps, signals and approvals, written as one function.
Every endpoint, with its fields and a curl example.