Deploys that
land at 2am.
Queue it before you log off. Nightshift ships it in the quiet window, holds it to your health checks, rolls it back if it has to, and leaves a report to read with coffee.
- Next window opens in
- --:--:--
- Deploys landed since 2023
- 1,284,906
- Rolled back on their own
- 0.4%
- Sign power
3,912 teams ship while they sleep. Freight, rail, payments and shops whose busiest hour is nobody's 2am, passing under the lamp.
Everything that happens while you sleep, on one panel.
The queue, the window, the checks, and the switch that decides what happens when one fails. Press run and tonight plays out at a few hundred times the speed.
A queue, not a release train.
Merge whenever. Everything waits for the window, goes out one at a time, and each deploy has to earn the next.
- Queued
storefronta1c93e2
Cache product pages at the edge · Maya Okafor
- Queued
billing-api7f02d1b
Retry webhooks with jittered backoff · Tom Weller
- Queued
search3be8c40
Bump tokenizer to 2.4 · Ines Duarte
- Queued
authc04f7aa
Rotate session signing keys · Rafael Mendes
- Queued
mobile-bffe91d5a7
Drop v1 auth headers · Sam Okoro
Simulated. Nothing leaves this page.
Ship in the quiet hours.
Your users' 2am, not yours. Pick the nights; Fridays are off unless you insist.
Hours, minutes, seconds
No Friday nights. Obviously.
Checks that hold for a minute.
Each canary step is watched against your rules before any more traffic moves.
- p95
- 184 ms
- 5xx
- 0.02%
- Checks
- 3 of 3
One switch for the bad nights.
Flip it off mid-run to see what the 2am page used to feel like.
- p95 latency< 400 ms
- 5xx rate< 1%
- GET /healthz200
Armed. Break a rule for 60 seconds and the release is rolled back before the next step.
Read it with coffee.
What shipped, what didn't and the graph that decided it, waiting in Slack at 07:30.
Nightshift07:30Night of 12 Oct
Good morning. Here's last night.
- landed
- 5
- checkout, storefront, search, auth, mobile-bff
- rolled back
- 0
- nothing tripped
- paged
- 0
- nobody woke up
Window used: 14 min of 120
Two commands, then go to bed.
Commit nightshift.toml and the whole team queues the same way.
Nightshift runs the deploy step you already have. Init finds your targets and a sane set of health checks; queue does the rest.
npm install -D @nightshift/cliNode 18 or later. No daemon, no agent on your servers.
- Binary
- 6.1 MB, one file
- Reads from
- GitHub, GitLab
- Deploys to
- Vercel, Fly, Kubernetes, ECS
- License
- MIT
Pay per seat. Deploys are on us.
Ship as often as you like on every paid plan. People who only read the morning report never count as seats.
Crew
Most teams start hereFor teams that ship every night.
$$20 per seat per month, billed $240 yearly
- Projects
- No limit
- Deploys
- No limit
- Seats
- Up to 50
- Everything in Solo, reports kept a year
- Rules on p95, error rate or any Prometheus query
- Canary steps: 10% → 50% → 100%
- Slack, PagerDuty and Linear
- A freeze calendar for holidays and launches
Solo
Start freeOne project and a bedtime.
$Free
- Projects
- 1
- Deploys
- 60 / mo
- Seats
- 1
- One nightly window per environment
- HTTP health checks on /healthz
- Rollback on a failed check
- The morning report, by email
Fleet
Talk to usFor orgs with windows in every time zone.
$$40 per seat per month, billed $480 yearly
- Projects
- No limit
- Regions
- Any
- Seats
- No limit
- Everything in Crew, plus SSO and SCIM
- Approvals for production windows
- An audit log your auditor will like
- 99.99% uptime SLA, support in 1 hour
Every plan: unlimited readers, rollbacks that never count against you, and no per-deploy fees.
Compare every lineFewer alarms set for 1:55am.
14 → 0After-hours pages a month, Okapi Freight
“We moved every production deploy to 02:00 and stopped staying late on Thursdays. 212 releases since March, three rollbacks, and nobody's phone rang for any of them.”
The rollback fired at 02:07 and the report was in my inbox at 07:30 with the graph that tripped it. I had the fix up before standup.
I stopped setting alarms for releases. That's the review.
Canary at 10%, p95 over 400 ms for a minute, gone. It's done that four times and been right four times.
−31 hRelease-night overtime a month
We ran a release rota: one engineer a week, awake from one to three with a checklist. The rota's gone. The checklist is four lines of nightshift.toml now.
Our customers are asleep at 2am too, which is the whole point. The error budget went from a monthly argument to a number nobody needs to look at.
We rolled it out to 60 engineers in a week. The freeze calendar alone stopped two Christmas incidents.
I queue my CSS at five and wake up to a link. It's like having a release manager who doesn't mind nights.
11% → 2.4%Change failure rate
Smaller batches, shipped every night, checked every time. The DORA numbers moved on their own.
Every production window has an approver, a diff and a reason. Our auditor asked for the log once and had no follow-up questions.
Our runbook had a section called “babysit the release”. I deleted it in March and nobody noticed.
What teams ask before the first night.
Mostly about what happens when something goes wrong while everyone is asleep. Short version: it rolls back, and you hear about it at breakfast.
Last updated 9 Oct 2026
It rolls back on its own. A release has to hold your health rules for a minute at each canary step; the first one it breaks, Nightshift shifts traffic back, keeps the graphs, and puts the whole thing at the top of the morning report. Nobody is paged unless the rollback itself fails.
Still have a question?
Three engineers who have all been paged at 2am answer in daylight hours, usually within 11 minutes. Send your deploy setup and we'll sketch what a window would look like.
crew@nightshift.exampleQueue something tonight.
Free for one project, and fourteen days of Crew with no card. Set it up before dinner, read the first report at breakfast.
Disarmed. Lift the guard to arm it.
Next window in--:--:--
Get started