minimal observability
WolfTone status
Live checks for the API, demo, and Guardian webhook plus the current-process failure counters needed to triage incidents without standing up Grafana.
Last checked 2026-04-18T13:22:20.739Z
API
degradedFly health plus current-process request/error counters from the public API service.
No response
https://wolftone-api.fly.dev/v1/healthUptime
n/a
Requests
n/a
Failure rate
n/a
Unhandled exceptions
n/a
Components
Database: n/a
Active narratives: n/a
Shadow narratives: n/a
Request failures
4xx: n/a
5xx: n/a
Total failed requests: n/a
Demo
degradedStreamlit container health via the built-in /_stcore/health probe used by Fly.io.
No response
https://wolftone-demo.fly.dev/_stcore/healthProbe
Down
Body
n/a
Detection window
5 minutes
Guardian webhook
degradedWebhook service health, request error rate, and baseline job outcomes from the in-memory metrics endpoint.
No response
https://wolftone-guardian.fly.dev/healthUptime
n/a
Error rate
n/a
Baseline p50
n/a ms
Baseline p95
n/a ms
Baseline runs
Successes: n/a
Failures: n/a
Total: n/a
Request failures
4xx: n/a
5xx: n/a
Exceptions: n/a
Weekly error-rate query
Historical API error rate still comes from Fly log queries because the dashboard only shows current process lifetime.
API this week
fly logs -a wolftone-api -n 10000 \
| grep '"surface": "rest"' \
| jq -s '
def week_ago: (now - 7 * 24 * 60 * 60);
map(select((.timestamp | fromdateiso8601) >= week_ago)) as $rows
| {
total: ($rows | length),
failed: ($rows | map(select(.status >= 400)) | length),
error_rate: (
if ($rows | length) == 0 then 0
else (($rows | map(select(.status >= 400)) | length) / ($rows | length))
end
)
}'Webhook this week
fly logs -a wolftone-guardian -n 10000 \
| jq -R 'fromjson? | select(.)' \
| jq -s '
def week_ago: (now - 7 * 24 * 60 * 60);
map(select(.timestamp? and (.timestamp | fromdateiso8601) >= week_ago)) as $rows
| {
baseline_failures: ($rows | map(select(.status == "error")) | length),
comment_failures: ($rows | map(select(.status == "comment_failed")) | length)
}'