Sync your Obsidian tasks to a Pebble smartwatch — with timeline pins, smart reminders, and voice note capture.
🤖 Vibecoded with Claude (Anthropic).
- Reads open tasks (
- [ ]) from your Obsidian vault and displays them on the watch - Tasks with due dates appear as timeline pins on the Pebble timeline
- From the watch you can:
- ✅ Mark a task as done — writes
- [x]back to the Obsidian file - ⏰ Set a reminder — 1 h / tonight / tomorrow morning / next week / pick a weekday
- 🎙️ Dictate a new note — saved as a task in a configurable
.mdfile
- ✅ Mark a task as done — writes
- Reminders fire as Android notifications (mirrored to the watch by the Pebble app)
- Tag-based grouping rules, configurable sync interval, task preview in the companion app
| Setup | Sync |
|---|---|
![]() |
![]() |
Android companion app — Setup (vault, group rules, watch app install) and Sync (scheduled reminders, activity log, sync settings).
| Component | Details |
|---|---|
| Pebble watch | Any model (aplite, basalt, chalk, diorite, emery) |
| Pebble app | Core Devices app or Rebble |
| Android | 8.0+ (API 26+) |
| Obsidian | Any version; vault stored locally or synced to phone storage |
Install from the Rebble store, or sideload the .pbw via the button in the Android companion app.
Download the latest APK from Releases and install it on your Android phone.
- Open the companion app → Config tab
- Pick your Obsidian vault folder (grants read/write access via Android's Storage Access Framework)
- Optionally configure tag-grouping rules and sync interval
- Tap Sync — your tasks will appear on the watch within seconds
ObsidianTasksPebbleBridge/ ← Android companion app (Kotlin)
watchapp/ ← Pebble watch app (C + PebbleKit JS)
| File | Role |
|---|---|
BackgroundReceiver.kt |
Handles all Pebble messages (FETCH / DONE / REMIND / NOTE / PIN_ACT) |
ReminderStore.kt |
Persists scheduled reminders so the UI can list them |
ReminderReceiver.kt |
Fires when an alarm triggers; posts the Android notification |
PebbleBridgeService.kt |
Foreground service keeping the runtime broadcast receiver alive (Android 8+ restriction) |
MainActivity.kt |
Two-tab UI: Config (vault, rules, preview) + Sync (reminders, log, settings) |
| File | Role |
|---|---|
src/c/teste_obsidian.c |
Main C watchapp — task list, action menu, reminder submenu, timeline relay |
src/pkjs/index.js |
PebbleKit JS — communicates with Android, manages Rebble timeline pins |
src/pkjs/config.js |
Clay config page (colour picker, voice note toggle, links) |
Watch button → "Remind in X"
↓
BackgroundReceiver (Android) schedules exact AlarmManager alarm
↓
Alarm fires → ReminderReceiver posts Android notification
↓
Pebble app mirrors notification to watch
Delays are computed on the watch using local time (localtime / mktime), so "tonight" always means 20:00 in your timezone, "tomorrow morning" means 09:00, etc.
Tasks with a due date (📅 YYYY-MM-DD, @due(…), or due::…) are pushed as timeline pins to the Rebble timeline. From a pin you can mark the task done or set a reminder directly.
cd ObsidianTasksPebbleBridge
./gradlew assembleDebug
# APK → app/build/outputs/apk/debug/app-debug.apkcd watchapp
pebble build
# Bundle → build/teste_obsidian.pbwRequires the Pebble SDK.
MIT — see LICENSE.


0 comments
log in to comment.