Ship background jobs
without the infra.
RELAY demonstrates how an edge-job product can explain queues, retries and observability with confidence. Replace every capability and performance claim with verified product evidence before launch.
6
complete demo pages
4
code language tabs
0
runtime asset requests
Fictional logo placeholders · replace with permissioned customer marks
The problem
Background jobs are simple in theory.
In production, they're a nightmare.
You start with a simple queue. Then you need retries. Then a dead-letter queue. Then observability. Then regions. Six months later, you're maintaining infra you never wanted.
Silent failures
Jobs fail and disappear. No alert, no trace, no way to know what went wrong or replay it.
3am alerts
A worker crashes, a queue backs up, users don't get their receipts. You're debugging at midnight.
Infra sprawl
SQS queues, Lambda functions, CloudWatch alarms, DLQ redrive policies — all for a simple email send.
Zero observability
How many jobs ran today? What's the p99 latency? Which queue is backed up? Nobody knows.
Type-unsafe glue code
JSON.parse() with `any` types, magic string queue names, no compile-time safety between enqueue and handler.
Single-region lock-in
Your workers run in one region. Your users are everywhere. Latency is a feature you forgot to ship.
RELAY solves all of this. Out of the box. No config files.
Features
Everything you need. Nothing you don't.
RELAY is designed for developers who want to ship features, not manage queues.
Edge-native execution
Show how distributed workers could run close to a product's users.
This sample feature card demonstrates how a real product could explain routing, failover, and regional controls without turning the page into a wall of infrastructure jargon.
Dead-letter queues built in
Failed jobs don't disappear. Every failure is captured, inspectable, and retryable.
Configure retry policies with exponential backoff. Inspect payloads, stack traces, and execution logs from the dashboard. Replay any job with one click.
Real-time observability
See every job's status, latency, and error in a live dashboard.
Stream job logs in real time. Set alerts on queue depth, p99 latency, or failure rate. Export metrics to Datadog, Prometheus, or your own sink.
P50 latency
23ms
P99 latency
142ms
Error rate
0.02%
SDK-first, not YAML-first
Define jobs in code, not config files. Type-safe from enqueue to execution.
First-class SDKs for Node.js, Python, Go, and Rust. Full TypeScript generics — your payload type flows from enqueue() to the handler with zero casting.
// TypeScript — generic flows through const processOrder = relay.defineJob<OrderPayload>({ id: "process-order", async handler(payload) { // payload is typed payload.orderId; // string payload.amount; // number }, }); // Enqueue — compile error if payload wrong await processOrder.enqueue({ orderId: "ord_abc", amount: 4999, });
How it works
Show a clear path from setup to first verified result.
No infrastructure to provision. No queues to manage. Just define, enqueue, ship.
Define your job
Use the SDK to write a typed job handler. Set retry policies, timeouts, and queue routing — in code, not config.
relay.defineJob({
id: "send-invoice",
queue: "billing",
retries: 5,
timeout: "30s",
handler: async (payload) => { ... }
})Enqueue from anywhere
Call .enqueue() from your API, webhook handler, or scheduled function. RELAY routes to the nearest edge worker instantly.
await sendInvoice.enqueue({
userId: "usr_123",
amount: 4999,
});
// -> job_7xnm | eu-west-1 | 21msMonitor and recover
Every execution is logged, every failure is captured in the DLQ, and every metric is in your dashboard — real time.
SDK examples
Demonstrate the integration story.
First-class SDKs for every major language. Or use the HTTP API from anywhere.
import { relay } from "@relay/sdk";
const generateReport = relay.defineJob({
id: "generate-report",
queue: "analytics",
retries: 3,
timeout: "5m",
async handler(payload: { reportId: string; format: "pdf" | "csv" }) {
const data = await fetchReportData(payload.reportId);
const file = await renderReport(data, payload.format);
await storage.upload(`reports/${payload.reportId}.${payload.format}`, file);
await notify.email({ template: "report-ready", data: { reportId } });
},
});
// Enqueue from your Express/Next.js API
app.post("/reports", async (req, res) => {
const job = await generateReport.enqueue({
reportId: req.body.id,
format: "pdf",
});
res.json({ jobId: job.id, status: "queued" });
});Integrates with your stack
Template composition
6
Complete pages
Landing, pricing, docs, changelog, waitlist and 404
4
Code examples
Node, Python, Go and cURL presentation tabs
8
FAQ slots
Typed answers ready for verified product facts
0
External assets
Self-hosted fonts and code-native visuals
Sample social-proof pattern
Developers ship faster with RELAY.
“Use this card for a permissioned migration outcome with a specific baseline, measured result and enough context for buyers to trust it.”
“Use this card to explain how the product changed an operational workflow, backed by supportable reliability or incident evidence.”
“Use this card for a scale or implementation result only after the volume, time period and comparison can be documented.”
Illustrative pricing model
Make plan differences easy to scan.
Compare hierarchy, limits and upgrade paths; validate every price, allowance and term before launch.
Hobby
An entry-tier example for side projects and early experiments.
- 100,000 job executions / month
- 3 queues
- 5 edge regions
- 72-hour log retention
- Community support
- + 1 more features
Pro
For growing teams that need reliability, observability, and scale.
- 10M job executions / month
- Unlimited queues
- 40+ edge regions
- 30-day log retention
- Priority email support
- + 4 more features
Enterprise
For teams with compliance, SLA, and volume requirements.
- Unlimited executions
- Unlimited queues
- Private edge regions
- 1-year log retention
- Dedicated Slack support & SLA
- + 5 more features
RELAY vs building it yourself
estimated savings / month| What you're avoiding | DIY est. cost | With RELAY Pro | You save |
|---|---|---|---|
| SQS + Lambda infra setup | ~8 hrs eng | 0 hrs | $800+ |
| DLQ monitoring + alerts | ~4 hrs / mo | Built in | $400+ |
| Multi-region job routing | $200+ / mo | Included | $200+ |
| Ops overhead (on-call, fixes) | ~6 hrs / mo | 0 hrs | $600+ |
| Total monthly savings | $49 / mo | $2,000+ | |
Engineering time estimated at $100/hr. Infrastructure costs vary. RELAY Pro at $49/mo.
FAQ
Common questions, straight answers.
Managed queues give you the pipe; RELAY gives you the whole plumbing system. You get SDK-native job definitions, built-in dead-letter queues with replay, real-time dashboards, edge execution, and a retry engine — all without writing a single line of infrastructure config. SQS is infrastructure. RELAY is a job platform.
None. RELAY is fully serverless. You write your job handler, push it with the CLI, and RELAY provisions the compute at the edge on every enqueue. You never touch a server, a Kubernetes deployment, or an IAM role.
Job payloads are limited to 256 KB on all plans. If your job needs larger data, the recommended pattern is to store the payload in object storage (S3, R2, GCS) and pass a reference URL in the job. Our docs include a working example of this pattern.
Both. RELAY supports on-demand enqueue via SDK, HTTP, or webhook trigger. It also supports cron schedules with full observability — view upcoming runs, edit the schedule, and see historical run history per schedule.
The default job timeout is 30 seconds. Pro and Enterprise plans can configure per-queue or per-job timeouts up to 15 minutes. Timed-out jobs are automatically sent to the dead-letter queue with a TIMEOUT error code.
This is a content-model prompt, not an assurance. Replace it with current certifications, privacy obligations, data residency, subprocessors and contractual evidence linked from a maintained trust center.
Waitlist pattern
Ship faster.
Sleep better.
Preview a focused signup journey, then connect consent, storage, delivery and a real launch timeline before publishing.
Front-end demo · no account, subscription or waitlist record is created here.