Relay classifies, routes, retries, and explains your background jobs automatically — describe what you need in plain English, or queue it the usual way.
import { Relay } from "@relay/sdk";const relay = new Relay({ apiKey: process.env.RELAY_API_KEY! });// Describe the job - Relay classifies it and routes it to a queue.const job = await relay.run("Send welcome email to user@email.com");
Relay handles the operational decisions most job queues leave to you.
Describe a job in plain English and Relay classifies it and routes it to the right queue — no manual wiring.
Failed jobs retry automatically with exponential backoff, so transient failures don't need a human.
Recurring errors are grouped into patterns, with a suggested fix and a confidence score. You decide what to apply.
Relay estimates failure probability and expected duration per job type from your real run history.
Set concurrency per queue, and pause or resume a queue at any time.
Track worker heartbeats, browse job logs, receive webhooks on job events, and manage API keys from the dashboard.
Call relay.run() with a plain-English description, or create a job directly on a queue with relay.jobs.create().
Relay works out what kind of job it is and places it on the right queue automatically.
Workers execute the job with retries and backoff. When something keeps failing, AI analysis points to the likely cause.
Ask the AI agent about your jobs, queues, and workers. For anything destructive, it asks first — nothing runs until you click Approve or Reject.
This action needs your confirmation before I run it.
Define ordered steps across your queues, run them on demand, and follow each run from the dashboard or the SDK.
step 1
send-welcome-email
step 2
provision-account
Relay's backend, dashboard, and TypeScript SDK live in one public repository. Read the code, run it locally, or open an issue.
View on GitHubSign in to explore the Relay dashboard with live queues, jobs, and AI insights.
Request a demo