What Vail Is
Vail is a status page you host yourself. It checks your websites, servers and game servers, shows whether each one is up and how fast it answered, and lets you post incidents and announcements.
Everything is set in one settings.json file. There is no database and no admin panel.
How It Works
Each time someone opens the page, Vail checks every service from your server. Results are cached for 15 seconds, so a busy page does not flood your services. Visitors can press Refresh to check again.
Each service ends up in one of three states:
- Operational: it answered normally.
- Degraded: it answered with an error, such as HTTP 404.
- Outage: it did not answer.
The banner at the top sums up the whole page: all operational, partly degraded, an outage, or maintenance.
What It Checks
| Type | Checks |
|---|---|
http | A website or API answers. |
tcp | A port accepts connections, such as a VPS or database. |
minecraft | A Minecraft server, using its SRV record if it has one. |
srv | Any server found through an SRV record. |
manual | Nothing. You set the status yourself. |
Services are grouped under your own headings:
"groups": [
{
"name": "Websites",
"services": [
{ "name": "Website", "description": "Main site", "type": "http", "target": "https://example.com" }
]
},
{
"name": "Game Servers",
"services": [
{ "name": "Survival", "description": "Minecraft Java", "type": "minecraft", "target": "play.example.com" }
]
}
]
Incidents and Announcements
When something breaks, add an incident to settings.json with a timeline of updates. Visitors see what happened and what you are doing about it. For planned work, turn on the announcement banner at the top of the page.
Discord Alerts
Vail can post status updates to a Discord channel through a webhook. Send an update to the /api/notify endpoint, by hand or from your own monitoring script, and Vail forwards it as an embed:
curl -X POST https://status.example.com/api/notify \
-H "Authorization: Bearer a-long-random-string" \
-H "Content-Type: application/json" \
-d '{ "title": "API Degraded", "message": "Requests are slower than usual.", "status": "degraded" }'
The endpoint is off until you set an API key. Your webhook URL and key stay on the server and are never sent to visitors.
The Look
Light and dark mode, your own name and links, and a layout that works on phones.
What You Need
- A host that runs Node.js 20.9 or newer.
- The
vail.zipfrom your BuiltByBit download. - A domain, if you want your status page public.
It runs on a Pterodactyl game panel, a Linux VPS, Docker or your own computer. The setup guide covers each one.


