Skip to content

tiny

The ring as a fleet endpoint·

Each ring is a tiny fleet endpoint — 'Silver ring', 'Black ring' — reachable with use_device invoke through the phone that holds it.

  • tiny users with a fleet
  • 1 min read
  • 147 words

In 10 seconds

Each ring is a device in your tiny fleet — "Silver ring", "Black ring" — with a presence dot (last sync < 15 min) and a panel. use_device invoke "Silver ring" "battery" → a ring command the phone claims → a sentence. No token, no URL, nothing to rotate: the ring is projected from its health-device row. Shipped 2026-09-19 18:50Z.

How it works·

health_devices hd_… ──project──▶ /api/devices  kind: endpoint · platform: ring · name: label · via: the phone
use_device invoke "Silver ring" "battery"  ──▶  worker /ring/<hd>/api/chat  ──▶  ring_command queue  ──▶  phone ⇄ ring
use_device list  ──▶  online: last sync < 15 min · capabilities: find battery status measure_hr measure_spo2 set_auto_hr sync memo_pull record
field value
source of truth health_devices — the fleet row is read-only, never carries a secret, cannot be revoked separately
routes the worker hosts /ring/<hd>/api/telemetry (battery, charging, last HR/SpO₂/temp, steps, firmware, last sync) · /ring/<hd>/api/chat (a prompt → the ring verb it names → result sentence)
presence online: true while the ring synced within 15 min, else false — the same signal as the staleness watchdog
panels web /devices renders telemetry; iOS/Android device lists show the ring kind with its label swatch
proof use_device invoke "Silver ring" "battery" from an agent on prod → "Your silver ring is at 99% battery."

The ring never speaks HTTP. The endpoint is a projection: everything still flows through the phone gateway's claim loop (Agent tools) and the health platform (Health platform).

The original plan (superseded) — a Mac-hosted ring/serve.py endpoint

The first design (2026-09-19 morning) copied q-the-brain / raspberry-the-pi: a long-lived Python daemon on the Mac mini holding the BLE central, exposing GET /api/health, GET /api/telemetry, POST /api/control/{find,hr, spo2,temp,sync,settime}, GET /api/events (SSE) behind a Bearer token at ~/.ring/token, published through a cloudflared tunnel and registered with POST /api/devices {kind:"endpoint", url}. It was never built: the ring holds one central, and in daily life that central is the phone — so the endpoint had to be a projection of the health device the phone already syncs, not a second radio owner. The Mac driver remained the reference and capture toolkit; ring-cli bridge covers the "ring lives at a desk" case.