Service status
Read from the running instance. The table below is rendered on the server from measured values, then refreshed in your browser from /api/v1/status.
Measurements since November 9, 2026
Live, this instance
| Component | State | Detail |
|---|---|---|
| API | operational | database 0.1 ms |
| Audio delivery | operational | 55% used |
| RSS feeds | operational | generated on request |
| Dashboard | operational | shares the API |
| Background jobs | operational | last sweep 46s ago |
States come from database latency, free disk and the age of the last background sweep. Below 3 GB free, uploads pause and delivery shows degraded.
Incident history
26 incidents recorded since 2020, newest first. Each one is a real outage with what happened and what we changed. The archive explains why things broke, not just that they did.
Redirect loop after the move
API · 20 min · one path looped
After the domain move, one legacy path redirected in a loop for twenty minutes. Fixed the rule.
Tokyo region cold start
API, Audio delivery · 25 min · slow first hour
The new Tokyo region was slow for its first hour under cold caches. Warmed and stable since.
Embed blocked on strict sites
Audio delivery · 80 min · embed failed on some sites
A header change blocked the embed from framing on strict sites. Loosened it and shipped.
Worker wedged on a sweep
Background jobs, API · 40 min · 503s
A stuck background sweep wedged a worker and returned 503s for about forty minutes. Added a watchdog that restarts a wedged sweep.
Elevated API latency
API · 42 min · slow API
A noisy neighbour on shared hardware raised latency. Moved to a quieter host.
CSV export wrong encoding
Dashboard · 28 min · garbled CSV
Analytics CSV shipped without a UTF-8 marker and some tools mangled it. Added the marker.
Dashboard chart blank
Dashboard · 35 min · empty charts
A date-range bug blanked the new 30-day chart for some episodes. Data was fine; display fixed.
Clock skew on a worker
Background jobs · 40 min · odd timestamps
A worker's clock drifted and stamped a few records oddly. Fixed NTP and corrected the records.
Riga shutdown window
Audio delivery · 30 min · Riga offline
The Riga region went offline as scheduled. Data had been exportable for three months; a short window of 404s before the redirect landed.
Chapters not linked in feed
RSS feeds · 65 min · missing chapters tag
Newly added chapters were not linked in some feeds due to a caching bug. Purged and fixed.
Cover uploads 500
API · 22 min · cover upload errors
A path change broke cover writes for 22 minutes. Reverted and added a test.
Stale sessions not expiring
Background jobs · 240 min · sessions lingered
The cleanup sweep skipped expired sessions after a refactor. They never granted access, but lingered in the table. Fixed and swept.
Disk near full
Audio delivery, Background jobs · 50 min · uploads paused
A runaway log filled a disk to 94%. The 3 GB-free guardrail paused uploads before corruption. Rotated the log, added an alert.
Region failover test went long
API, Audio delivery · 45 min · degraded one region
A planned failover drill took longer than expected and degraded one region. No data lost.
Login lockout miscount
API · 30 min · early lockouts
Failed-login counting double-counted some attempts, locking accounts early. Fixed the counter.
Metrics gap
Dashboard · 180 min · missing stats
A counter reset dropped three hours of play counts for display; underlying data was intact.
Feeds slow for big shows
RSS feeds · 60 min · slow feeds
Feeds for shows with hundreds of episodes took over a second. Optimised the query.
Rate limiter too strict
API · 25 min · false 429s
A tuning change rate-limited legitimate dashboards. Rolled back the threshold.
Export timed out for large accounts
Dashboard · 70 min · failed exports
Very large libraries timed out building the zip in memory. Switched to a streaming archive.
Partial outage during deploy
API · 12 min · 503s
A deploy restarted the app without draining connections. Added graceful shutdown.
Scheduled posts published late
Background jobs · 90 min · late publishing
The sweep interval drifted and some scheduled episodes published up to 90 minutes late. Tightened the schedule.
Slow audio delivery in Europe
Audio delivery · 55 min · buffering
A disk on the European region degraded and read latency rose. Moved media to a healthy volume.
TLS certificate renewal failed
API, Audio delivery · 35 min · TLS warnings
An expired certificate was not renewed in time due to a cron typo. Renewed by hand and fixed the schedule.
Feed cache served stale covers
RSS feeds · 40 min · old cover art
A cache key missed the cover version, so some feeds showed a previous image. Fixed the key and purged.
Brief database lock
API, Dashboard · 18 min · slow responses
A long-running migration held a write lock and slowed the API. We split the migration into smaller steps.
Valid M4A uploads rejected
API · 120 min · uploads failed
An off-by-one in the upload validator rejected some valid M4A files for about two hours. Reverted, added a test with real files.