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.
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
ffmpegfor.wavmemos.
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).
[{"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 Mouse — ring-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