Install¶
Wristotle is two apps + one of two BLE companion apps. All of it sideloads — no Play Store, no app store.
What you need¶
- A Pebble watch with a microphone: basalt, chalk, diorite, emery, flint, or gabbro. (Not aplite — no mic.)
- An Android phone running Android 7.0 (API 24) or newer.
- One of these BLE companion apps. This choice changes one thing only: who turns your speech into text. Every Wristotle action — calls, texts, reminders, media control, app launch, find phone — works exactly the same with either one.
- microPebble — your watch dictation is transcribed by Wristotle's own Whisper model, entirely on your phone. Nothing is sent to any server; no account or subscription needed. Pick this if you want speech-to-text that stays fully on-device.
- Core Devices (formerly rePebble) — the official companion from the team that revived Pebble. It transcribes your watch dictation with its own engine, which you can set to local, cloud, or hybrid inside Core Devices' settings. A Whisper model you download inside Wristotle is not used for dictation here — Core Devices does that part. Everything Wristotle does after your words are recognised is identical.
What you gain / give up by picking one: the only thing on the table is the transcription step. With microPebble you get Wristotle's private, offline, account-free speech-to-text. With Core Devices you get whatever transcription you've configured in its settings instead. Either way, the recognised command is handed to Wristotle Companion on your phone, which does the actual calling, texting, reminding, media control, and app launching.
You don't have to abandon Core Devices to use Wristotle — keep it and you still get all of Wristotle's phone-side features. The only thing you'd be giving up by staying on Core Devices is Wristotle's on-device Whisper transcription.
1 · Install the BLE companion¶
If you don't already have one, install microPebble or Core Devices and pair your watch through it.
Only one
Don't pair more than one companion to the same watch at the same time — they race on the BLE link and dictation gets stuck. Pick one.
2 · Install the watch app¶
Grab the latest Wristotle.pbw from Releases and open it with your BLE companion app. The companion will side-install it onto the watch.
.pbw bundles cover every supported platform (basalt / chalk / diorite / emery / flint / gabbro) in one file — the companion picks the right one for your watch.
3 · Install Wristotle Companion (Android)¶
Grab the latest Wristotle-Companion-debug.apk from Releases and sideload it.
Sideload how-to
If your phone hasn't installed sideloaded apps before, you may need to enable "Install unknown apps" for the browser or file manager you're opening the APK from. Android prompts you.
4 · First-run setup¶
Open Wristotle Companion on your phone.
a. Grant permissions¶
Tap Grant Permissions on the Permissions tab. You'll walk through three system prompts in order:
- Runtime permissions — Contacts, Phone, SMS, Notifications
- Battery optimisation exemption — keeps the watch bridge running in the background
- Notification Access — required for cross-app media control (
play <app>,pause, etc.)
b. Download a Whisper speech model¶
Open Settings → Models → Speech and tap Download on a model.
| Model | Size | Speed | Accuracy | When to pick |
|---|---|---|---|---|
tiny.en (quantized) |
~32 MB | Fastest | OK for short commands | Default — recommended |
base.en (quantized) |
~57 MB | Medium | Better for long dictation | If you dictate full SMS bodies |
small.en |
~244 MB | Slower | Higher | Power users |
The first model you download is auto-activated. Tap any downloaded model to switch.
c. (Optional) Download the Intent model¶
Strictly optional — Wristotle is fully functional without the intent model, as long as you start each command with one of the canonical verbs: call, text, remind, cancel, play, pause, next, previous, open, launch. The watch routes these via a built-in prefix table that's always available.
The intent model is a polish layer that adds tolerance for natural paraphrases of the same intents — "ring Mom" instead of "call Mom", "tell Dad I'll be late" instead of "text Dad I'll be late", "buzz me at 3" instead of "remind me at 3". The actions and contacts/slots resolved are identical to the prefix path; only the way you can phrase them changes.
To add it: open Settings → Models → Intent and download MiniLM-L6-v2 (~23 MB).
d. (Optional) Scan installed apps¶
If you want open <app> and play <app> voice commands to work, open Settings → Learning → Installed apps and tap Scan installed apps. Re-scan whenever you install or uninstall an app.
e. Set Wristotle as the system voice provider (optional but recommended)¶
This makes Wristotle the recognizer that the BLE companion routes dictation to. Without it, your companion app uses its default cloud recognizer.
Run this once from a computer connected to your phone via ADB:
adb shell settings put secure voice_recognition_service \
com.lazydevs.wristotle/com.lazydevs.wristotle.speech.service.WhisperRecognitionService
The exact command is one tap to copy from Permissions tab → Voice Input → Copy ADB activation command. See the Voice Input section below for the full ADB walkthrough.
f. Try it¶
Open Wristotle on the watch, press select, dictate "call mom" (or whoever is in your contacts).
Using Wristotle as system-wide voice input (optional, experimental)¶
Wristotle ships an android.speech.RecognitionService implementation backed by on-device Whisper. The setup below registers it as Android's default speech recognition service — in principle any app that calls android.speech.SpeechRecognizer would then transcribe through Wristotle. In practice we haven't verified which third-party apps actually use that API (many keyboards and assistants bundle their own engine), so treat this section as experimental.
The activation requires WRITE_SECURE_SETTINGS, a signature-level permission only granted to the shell user — so the command must run from a computer with ADB.
Download Android SDK Platform Tools, unzip, add the folder to PATH.
Verify with adb version — should print a version string.
Enable USB debugging on the phone¶
- Settings → About phone → Build number — tap 7 times to unlock Developer Options.
- Settings → System → Developer options → USB debugging — toggle on.
- Connect via USB and tap Allow on the phone when prompted.
- Confirm with
adb devices— should list your device asdevice(notunauthorized).
Run the activation command¶
Tap Copy ADB activation command in Wristotle's Voice Input card, then paste in a terminal:
adb shell settings put secure voice_recognition_service \
com.lazydevs.wristotle/com.lazydevs.wristotle.speech.service.WhisperRecognitionService
No output on success. Reopen Wristotle — the Voice Input card should now read "Active — Wristotle is the system voice input provider".
Verify:
Should print the long form: com.lazydevs.wristotle/com.lazydevs.wristotle.speech.service.WhisperRecognitionService.
One-time
The setting persists across reboots and Wristotle updates. You only need to repeat this if you intentionally change the voice provider, uninstall Wristotle, or factory reset.
Wireless ADB (Android 11+)¶
If you'd rather not keep a USB cable around:
- Settings → System → Developer options → Wireless debugging → Pair device with pairing code. Note the IP:port + 6-digit code.
adb pair <ip>:<port>— enter the code when prompted.adb connect <ip>:<port>(use the port shown on the Wireless debugging screen, not the pairing port).- Run the activation command as above.
Reverting¶
Switch back to Google's recognizer:
adb shell settings put secure voice_recognition_service \
com.google.android.tts/com.google.android.apps.speech.tts.googletts.service.GoogleTTSRecognitionService
Or clear it entirely: