Skip to content

Use it

Getting started·

From a boxed ring to your first heart-rate reading and your first voice memo, in the order you will actually do it.

  • people holding the ring
  • 2 min read
  • 348 words

In 10 seconds

Ten minutes from a boxed ring to a heart-rate reading and a voice memo, on a Mac or Linux box — no phone needed. The ring answers one central: unpair it from LoraFit / the tiny app first. pip install -e . && ring-cli scan

0. What you need·

  • An SR116 / JY-Y3 ring (box: AI Recording Ring · HR3918 · LoraFit), charged an hour on its cradle.
  • macOS 14+ or Linux with BlueZ, Python 3.11+. Optional ffmpeg for .wav memos.

1. Install·

git clone https://github.com/cagataycali/lord-the-ring && cd lord-the-ring
python3 -m venv .venv && . .venv/bin/activate
pip install -e .            # bleak, typer, rich
ring-cli --help

Or straight from GitHub without cloning: pip install git+https://github.com/cagataycali/lord-the-ring.

2. Find the ring·

Take it off the charger if you want vitals, and make sure no phone holds it (LoraFit: disconnect; tiny app: toggle the ring off in Devices).

ring-cli scan --seconds 15
[{"address": "244FA1B5-…", "name": "JY-Y3-011A", "rssi": -58,
  "mfr": {"mac": "73:01:06:00:01:1A", "firmware": 152}}]

Empty list? The ring is connected elsewhere, or you disconnected < 40 s ago. Wait, scan again.

macOS will adopt the ring

Within minutes macOS bonds the ring as a Mousering-cli then attaches in 10 ms, but your phone can no longer see it. Hand it back: System Settings → Bluetooth → ⓘ → Forget This Device. Why.

3. Talk to it·

export RING=244FA1B5-…                    # or the MAC on Linux
ring-cli info -a $RING                    # firmware, MAC, features, battery
ring-cli battery -a $RING                 # {"battery_percent": 100, "charging": 0}
ring-cli find -a $RING                    # it vibrates
ring-cli handshake -a $RING               # set the clock, app identity, auto-HR every 5 min

Every command appends the frames it sent and received to evidence/raw.jsonl (-e to change).

4. Vitals·

Put the ring on a finger, sensor on the palm side, snug.

ring-cli hr --seconds 30 -a $RING         # one tick every ~5 s → [{"ts": …, "hr": 85}, …]
ring-cli steps -a $RING                   # today's snapshot
ring-cli sync --days 2 -a $RING           # step buckets, sleep buckets, HR/SpO₂/temp records

[] from hr = the ring saw no finger (there is no error frame). On the charger you get cradle readings (HR 80–103, 31 °C) — ignore them.

5. A voice memo·

Tap the ring four times quickly; it vibrates and starts recording. Talk. Four taps again to stop (or wait; it stops on its own).

ring-cli audio-state -a $RING             # {"state": 0, "files": 1}
ring-cli audio-pull -a $RING              # → captures/memo.opus (+ memo.wav if ffmpeg) and deletes it from the ring

--no-clear keeps the file on the ring. ring-cli audio-record --seconds 10 streams the mic live instead (worn, not on the charger).

6. Into tiny·

ring-cli audio-post captures/memo.opus    # → inbox item "ring_memo", transcribed
ring-cli bridge -a $RING --days 2         # stay connected, post vitals every 60 s

Needs this machine enrolled (npx tiny-tech~/.tiny/device.json). No computer? The tiny phone app is a gateway by itself. How the bridge behaves: Bridge daemon.

Next·

CLI reference — all 21 verbs · Python API · Hardware — taps, LEDs, wearing it · Protocol — every byte, with its proof