Status Page Gen

Other

Generate a dark-themed static HTML status page summarizing health checks, ping, SSL certs, and uptime for self-hosted services from a JSON config.

Install

openclaw skills install nai-status-page-gen

status-page-gen

Generate a static HTML status page for all your self-hosted services.

Skill Location

~/.openclaw/workspace/skills/status-page-gen/

Quick Start

1. Configure services

Copy the example config and edit it:

cp ~/.openclaw/workspace/skills/status-page-gen/assets/services.example.json \
   ~/.openclaw/workspace/skills/status-page-gen/assets/services.json

Edit services.json with your actual service names, URLs, and health endpoints.

2. Run a full check and generate the page

cd ~/.openclaw/workspace/skills/status-page-gen

python3 scripts/check_services.py --config assets/services.json --output /tmp/status_check.json
python3 scripts/check_certs.py --config assets/services.json --output /tmp/cert_check.json
python3 scripts/history.py --append /tmp/status_check.json --db assets/history.json
python3 scripts/generate_page.py \
  --services /tmp/status_check.json \
  --certs /tmp/cert_check.json \
  --history assets/history.json \
  --output ~/status.html

Open ~/status.html in a browser.

3. Schedule updates (cron)

Add to crontab (crontab -e):

*/5 * * * * cd ~/.openclaw/workspace/skills/status-page-gen && \
  python3 scripts/check_services.py --config assets/services.json --output /tmp/status_check.json && \
  python3 scripts/check_certs.py --config assets/services.json --output /tmp/cert_check.json && \
  python3 scripts/history.py --append /tmp/status_check.json --db assets/history.json && \
  python3 scripts/generate_page.py --services /tmp/status_check.json --certs /tmp/cert_check.json --history assets/history.json --output ~/status.html

Scripts

ScriptPurpose
check_services.pyHTTP health checks + ping + response time
check_certs.pySSL certificate expiry validation
history.pyAppend results to log, compute uptime %
generate_page.pyRender self-contained HTML status page

Config Format (services.json)

See assets/services.example.json for a full example. Each service entry:

{
  "name": "Grafana",
  "url": "https://grafana.example.com",
  "health_endpoint": "/api/health",
  "expected_status": 200,
  "ping_host": "grafana.example.com",
  "tags": ["monitoring"]
}
  • health_endpoint — path appended to url for health check (default: /)
  • expected_status — HTTP status code to consider "up" (default: 200)
  • ping_host — hostname for ICMP ping (optional, derived from url if omitted)

References

See references/setup-guide.md for detailed configuration, GitHub Gist publishing, and advanced scheduling.