Skip to content

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:

  1. Runtime permissions — Contacts, Phone, SMS, Notifications
  2. Battery optimisation exemption — keeps the watch bridge running in the background
  3. 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.

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.

brew install --cask android-platform-tools
# Debian/Ubuntu
sudo apt install android-tools-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

  1. Settings → About phone → Build number — tap 7 times to unlock Developer Options.
  2. Settings → System → Developer options → USB debugging — toggle on.
  3. Connect via USB and tap Allow on the phone when prompted.
  4. Confirm with adb devices — should list your device as device (not unauthorized).

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:

adb shell settings get secure voice_recognition_service

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:

  1. Settings → System → Developer options → Wireless debugging → Pair device with pairing code. Note the IP:port + 6-digit code.
  2. adb pair <ip>:<port> — enter the code when prompted.
  3. adb connect <ip>:<port> (use the port shown on the Wireless debugging screen, not the pairing port).
  4. 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:

adb shell settings delete secure voice_recognition_service