All systems operational v2.4.0Jobs today 48,20102:36 UTC Status ↗
>nightshift

$ npx nightshift init --sleep

Ship at night.Sleep through it.

Durable background jobs, cron and queues for teams who would rather not be paged at 3am. One binary, zero ceremony, and a queue that remembers what it was doing.

$ brew install nightshift

18 MB · no dependencies · MIT licensed

acme-prod — nightshift — 218×56 TLS 1.3
1import { job } from "@nightshift/core"
2
3export const sendReceipt = job({
4  name: "receipts.send",
5  retries: 5,
6  backoff: "exponential",
7  timeout: "30s",
8  concurrency: 50,
9}, async ({ orderId }) => {
10  const receipt = await buildReceipt(orderId)
11  await mailer.send(receipt)
12  return { delivered: true }
13})
$ nightshift deploy --prod
4.2BJobs / month
p99 42msScheduler latency
99.999%Uptime, trailing year
26Regions · one fabric
01/

Infrastructure you can
forget about.

Six decisions we already made so you don't have to. Boring where it matters, sharp where it counts.

durabilityb01

Durable by default

Every job is committed before it starts. Deploys, network partitions and that one aggressive autoscaler cannot make it disappear.

WAL-backed queue● always on
schedulingb02

Cron that speaks time

IANA timezones, DST, jitter and overlap protection. Your 2am report stays at 2am, wherever the server thinks it lives.

464 timezones● DST-aware
resilienceb03

Retries with judgement

Exponential backoff, jitter, dead-letter queues and one-click replay. Retry the things that deserve it, not the things that don't.

max 100 attempts● configurable
observabilityb04

Traces for every job

Logs, spans, attempts and the exact payload that caused the problem — searchable by job, user or trace ID.

OTel native● included
scaleb05

Scale without ceremony

One million concurrent workers, backpressure all the way down, and no cron server to keep alive on a Sunday.

1M concurrency● tested
portabilityb06

Runs where you run

Cloud, your VPC, or a laptop on a train. One static binary, no runtime, no external dependencies, no lock-in.

18 MB · static● MIT
02 / Quickstart

One primitive.
Zero magic.

Define a job in the language you already use. Nightshift handles the queue, the retries, the schedule and the part where you get woken up at 3am.

  • Typed payloads end to end — no more stringly-typed queues.
  • Local dev with the same semantics as production.
  • Deploy anywhere in under a minute.
$ nightshift dev
typed · v2.4
1import { job } from "@nightshift/core"
2
3export const sendReceipt = job({
4  name: "receipts.send",
5  retries: 5,
6  backoff: "exponential",
7  timeout: "30s",
8  concurrency: 50,
9}, async ({ orderId }) => {
10  const receipt = await buildReceipt(orderId)
11  await mailer.send(receipt)
12  return { delivered: true }
13})
1from nightshift import job
2
3@job("receipts.send", retries=5,
4     backoff="exponential", timeout="30s")
5async def send_receipt(order_id: str):
6    receipt = await build_receipt(order_id)
7    await mailer.send(receipt)
8    return {"delivered": True}
1package jobs
2
3import "github.com/nightshift/core"
4
5var SendReceipt = core.Job("receipts.send",
6  core.Options{
7    Retries: 5,
8    Backoff: core.Exponential,
9    Timeout: 30 * time.Second,
10  }, func(ctx context.Context, orderID string) error {
11    receipt, err := buildReceipt(ctx, orderID)
12    if err != nil { return err }
13    return mailer.Send(ctx, receipt)
14})
✓ 0 errors · typecheck passed · 18msCopied
03/

Boring on purpose.

Uptime is a feature. We measure it out loud, publish it, and never hide a bad afternoon.

system status — last 90 days

Live · refreshed 30s ago
90 days agoSepOctNovToday
99.999%Availability · 90d
42msp99 scheduler latency
4.2BJobs processed · month
0Lost jobs · ever
us-east-118msoperational
eu-west-224msoperational
ap-south-131msoperational
sa-east-138msoperational
self-hostedyour calloperational

Customer testimonial

We deleted four thousand lines of queue code. The pager hasn't gone off since. I'm not sure what to do with my evenings now.
Priya RamanStaff Engineer · Sonder Labs
04/

Priced like infrastructure.

No per-seat surprises, no egress maths. Start free, grow when you need to. Cancel with one command.

hobbyforever
$0 / month

For side projects, prototypes and the things you ship at 2am for fun.

  • 10,000 jobs / month
  • 3 environments
  • 7-day trace retention
  • Community support
Start free

no card required

scalecustom
Let's talk

For lots of jobs, strict residency, or a very particular compliance team.

  • Unlimited volume
  • Dedicated fabric
  • VPC / on-prem
  • 99.999% SLA
  • Named engineer
Book a call

hello@nightshift.dev

// last command, we promise

It's 2am.
Go to bed.

We'll wake you if something actually breaks. Not before.

$ npm i -g @nightshift/cli

Free for 10,000 jobs a month · no card