Generate a static HTML status page for all your self-hosted services.
~/.openclaw/workspace/skills/status-page-gen/
Copy the example config and edit it:
bash
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.
bash
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.
Add to crontab ( crontab -e):
text
*/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
ScriptPurposecheck_services.pyHTTP health checks + ping + response timecheck_certs.pySSL certificate expiry validationhistory.pyAppend results to log, compute uptime %generate_page.pyRender self-contained HTML status page
services.json)#See assets/services.example.json for a full example. Each service entry:
json
{
"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)See references/setup-guide.md for detailed configuration, GitHub Gist publishing, and advanced scheduling.