Configuration
A complete reference for settings.json options, site branding, theme colors, and placeholders.
All configuration for Vail is defined inside settings.json located at the root of your installation.
Vail processes settings.json exclusively on the server. Client browser sessions never receive unredacted configuration data or server credentials.
Complete settings.json Example
{
"site": {
"title": "Zero Development",
"description": "Real-time service health and live latency tracking.",
"logo": "",
"icon": "/icon.png",
"favicon": "/favicon.ico",
"links": [
{
"label": "Home",
"url": "https://zerodev.ca"
}
]
},
"theme": {
"primaryColor": "blue",
"defaultColorScheme": "dark",
"radius": "sm"
},
"announcement": {
"enabled": false,
"type": "info",
"title": "Scheduled Maintenance",
"message": "Routine server upgrades in progress."
},
"footer": {
"text": "%sitename% • Made with Vail Status"
},
"discord": {
"enabled": false,
"webhookUrl": "",
"username": "Vail Status",
"avatarUrl": ""
},
"groups": [],
"incidents": []
}Site Settings (site)
| Property | Type | Description |
|---|---|---|
title | string | The status page title displayed in the header and browser document title. |
description | string | A brief description displayed below the main header. |
logo | string | Optional URL or public path to an image logo. |
icon | string | Optional path to a square app icon (e.g. /icon.png). |
favicon | string | Optional path to a favicon file (e.g. /favicon.ico). |
links | array | Header navigation links formatted with label and url. |
Theme Settings (theme)
| Property | Type | Description |
|---|---|---|
primaryColor | string | Mantine theme color name (e.g. blue, cyan, teal, violet, orange, red). |
defaultColorScheme | string | Initial color scheme. Values: dark, light, or auto. |
radius | string | Border radius applied to components: xs, sm, md, lg, or xl. |
Announcement Banner (announcement)
| Property | Type | Description |
|---|---|---|
enabled | boolean | Set to true to display a persistent banner alert at the top of the page. |
type | string | Banner visual style: info, warning, or error. |
title | string | Headline text for the announcement. |
message | string | Detailed message body. |
Footer & Dynamic Placeholders (footer)
The footer.text string supports dynamic template placeholders:
| Placeholder | Replacement |
|---|---|
%sitename% | Populated with the configured site.title. |
%year% | Populated with the current four-digit calendar year (e.g. 2026). |
Example:
"footer": {
"text": "%sitename% • %year% • Made with Vail Status"
}Incidents (incidents)
You can publish historical or ongoing incident reports with timeline entries:
"incidents": [
{
"id": "inc-101",
"title": "API Gateway Latency",
"status": "resolved",
"severity": "minor",
"createdAt": "2026-09-12T14:00:00.000Z",
"updates": [
{
"timestamp": "2026-09-12T14:30:00.000Z",
"status": "resolved",
"message": "Latency normalized after routing adjustments."
},
{
"timestamp": "2026-09-12T14:00:00.000Z",
"status": "investigating",
"message": "Investigating elevated latencies on US-East."
}
]
}
]status:investigating,identified,monitoring, orresolved.severity:minor,major, orcritical.

