Wristotle¶
Voice assistant for the Pebble smartwatch — runs on your phone by default, no cloud required.
Press select on your Pebble. Speak. The command runs on your Android phone — call a contact, send an SMS, set a reminder, open an app, play music. Transcription happens on the device with Whisper (or any OpenAI-compatible cloud / self-hosted endpoint you opt into); intent classification happens on the device with a small sentence encoder. By default, nothing leaves your phone.
What you can say¶
| Say on the watch | What happens on the phone |
|---|---|
| "Call Mom" / "Ring Mom" | Places the call |
| "Text Dad I'll be late" | Sends the SMS |
| "Remind me to pick up milk at 5pm" | Creates a watch-side reminder |
| "Cancel reminder" | Cancels the most recent reminder |
| "Open Spotify" / "Launch Maps" | Launches the app |
| "Play Audible" / "Pause" / "Next" | Cross-app media control |
| "Rewind 10 seconds" / "Skip ahead 30 seconds" | Seek within current track |
| "Ask agent what's the capital of France" | Routes the question to your configured LLM (Anthropic / OpenAI / OpenRouter / Ollama / …) |
Full list with paraphrases on the Voice commands page.
Why Wristotle¶
- On-device by default. Whisper runs locally; intent classification runs locally. Dictation audio never leaves your phone unless you opt into a cloud or self-hosted speech endpoint (OpenAI / Groq / Cloudflare / Speaches / whisper.cpp HTTP server / …). No account, no subscription, no telemetry.
- Works with any media app. Open and control Spotify, YouTube, Audible, Pocket Casts, or any app that registers a
MediaSession— across apps, even with the screen off. - Conversation history on the phone. Every command (and what the phone did with it) is saved in a chat-style timeline, with retention you control (1 / 10 / 20 / 30 days, default 10).
- Replayable dictation audio (microPebble only). Opt in to save the recording for each dictation so you can listen back. Last 5 are kept, off by default for privacy. Not available under Core Devices, which runs its own dictation — the audio never reaches Wristotle.
- Backup & restore. Export your notes, tasks, conversations, learned phrases, app + contact aliases, reminders, and settings to a ZIP file (anywhere — Drive, OneDrive, local file). Optional AES-256 password protection. Restore later or on a new device with a merge-by-ID flow that won't overwrite existing data.
- Confirm before send (optional). Turn it on and any action-taking command (call, SMS, reminder, calendar create, app launch, media play) pauses on the watch with a "What I'll do: …" summary first. SELECT to send, BACK to cancel. Configurable timeout + default action.
- Ask Agent (optional, bring-your-own-key). Say "ask agent <question>" / "ask claude <question>" to route to any LLM you configure (Anthropic, OpenAI, OpenRouter, Ollama, llama.cpp, …). Optional routing modes send unrecognised speech — or, hands-free, every command with no wake word — to the agent, and conversation memory keeps recent turns so follow-ups ("and tomorrow?") work. Add HTTP MCP servers under Settings to let the LLM call tools (GitHub, custom MCP servers, …) and the watch shows a per-tool status line during the agent loop. Off by default — until you paste an API key, the intent answers "No agent key set" and nothing leaves the phone.
- Open source. AGPLv3-licensed. Sideload, fork, audit.
Two pieces¶
Wristotle is two apps that work together:
- Watch app —
.pbwfor Pebble (basalt / chalk / diorite / emery / flint / gabbro). Owns the on-screen chat, dictation triggers, vibration feedback, quick-launch, and local commands (time, battery, steps, find phone). - Android companion — on F-Droid, or sideload the APK from Codeberg. Bridges the watch to phone capabilities (calls, SMS, reminders, app launch, media control), runs the speech recognizer (on-device Whisper by default, or any OpenAI-compatible cloud / self-hosted endpoint you configure) + the on-device intent classifier, persists the conversation history.
You also need one of microPebble or Core Devices (formerly rePebble) — those handle the BLE link to the watch. Wristotle plugs into them. Note that Wristotle's on-device Whisper only intercepts watch dictation under microPebble; Core Devices handles its own dictation pipeline. See Install for the tradeoffs.
Get started¶
- Install — companion from F-Droid (watch app from its store) + first-run setup
- Voice commands — what to say
- Troubleshooting — when something doesn't work
- Bug reports — the in-app diagnostics export