Kaze
A minimal, performant status page application written in Go.
Features
- Monitor Types: HTTP, HTTPS (with SSL certificate tracking), TCP
- Full Metrics: Response time, SSL expiry, status codes, uptime percentage
- Configurable History: 7, 30, or 90 days retention
- Monitor Groups: Organize monitors into logical categories
- Incidents: Manual incident tracking via YAML configuration
- Dark/Light Mode: System preference detection with manual toggle
- Single Binary: All assets embedded, no external dependencies
- SQLite Storage: Lightweight, file-based database
Quick Start
# Build
make build
# Copy and edit configuration
cp config.example.yaml config.yaml
# Run
./kaze
Open http://localhost:8080 to view the status page.
Configuration
site:
name: "My Status Page"
description: "Service Status"
server:
host: "0.0.0.0"
port: 8080
storage:
path: "./kaze.db"
history_days: 90
groups:
- name: "Web Services"
monitors:
- name: "API"
type: https
target: "https://api.example.com/health"
interval: 30s
timeout: 10s
expected_status: 200
- name: "Infrastructure"
monitors:
- name: "Database"
type: tcp
target: "db.example.com:5432"
interval: 30s
timeout: 5s
incidents:
- title: "Scheduled Maintenance"
status: scheduled
message: "Database upgrade"
scheduled_start: "2026-02-01T02:00:00Z"
scheduled_end: "2026-02-01T04:00:00Z"
See config.example.yaml for full configuration reference.
Monitor Types
HTTP/HTTPS
- name: "API"
type: https
target: "https://api.example.com"
interval: 30s
timeout: 10s
expected_status: 200
verify_ssl: true
method: GET
headers:
Authorization: "Bearer token"
TCP
- name: "Database"
type: tcp
target: "db.example.com:5432"
interval: 30s
timeout: 5s
API Endpoints
| Endpoint | Description |
|---|---|
GET / |
Status page HTML |
GET /api/status |
All monitors status (JSON) |
GET /api/monitor/{name} |
Single monitor status (JSON) |
GET /api/history/{name} |
Monitor uptime history (JSON) |
Building
# Development build
make build
# Production build (optimized)
make build-prod
# Cross-platform builds
make build-all
Docker
# Build image
docker build -t kaze .
# Run with single data volume (recommended)
# Place config.yaml in your data directory before running
mkdir -p data
cp config.example.yaml data/config.yaml
# Edit data/config.yaml and set storage.path to "./data/kaze.db"
docker run -d -p 8080:8080 -v $(pwd)/data:/app/data kaze
# Or run with separate mounts (legacy)
docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml -v ./data:/app/data kaze
Command Line Options
Usage: kaze [options]
Options:
-config string
Path to configuration file (default "config.yaml")
-debug
Enable debug logging
-version
Show version information
License
MIT