Pebble Sync pulls notes from your Pebble deployment into your Obsidian vault as atomic notes and can optionally embed links back into the matching Daily Note.
- Import Pebble notes on demand or on an interval; force mode overwrites existing files when needed.
- Deduplicate imports with an on-disk history (cleared via Settings → Pebble Sync → Forget imported history).
- Generate atomic notes with a configurable template, folder, and tag-derived naming.
- Automatically embed created notes beneath a configurable heading in the target Daily Note, respecting core Daily Notes settings when enabled.
- Obsidian 1.5.0 or newer.
- A deployed Pebble API endpoint.
- A Pebble API key (shared between Pebble app and plugin).
Use the Pebble deploy button:
After deploy:
- Add Worker secret
API_KEY(one random value). - Add KV binding
PEBBLE_SYNC_KV.
- Copy the release folder into your vault under
.obsidian/plugins/pebble-sync/. - In Obsidian go to Settings → Community plugins:
- Enable Community plugins.
- Enable Pebble Sync.
- Open Settings → Pebble Sync.
- Set:
- API URL: your Worker URL, for example
https://pebble.example.workers.dev - API Key: same value used for Worker
API_KEYsecret
- API URL: your Worker URL, for example
- Run Pebble Sync: Import new notes (or click ribbon icon).
- Hits
{API_URL}/api/sync/fetchwith headerX-API-Key: <value>. - Accepts payloads with
items: [{ type: 'note', markdown, createdAt, tags? }]. - Stores processed-note fingerprints (up to 5,000) to prevent duplicates; purge them with the “Forget imported history” button in Settings.
- Builds file names from the trigger tag (if present) or the first line of the note plus the captured timestamp (
<Folder>/<Name> dddd, MMMM Do YYYY HH-mm.md). - Embeds notes inside Daily Notes under a heading (default
## Pebble Imports).
This plugin is built with TypeScript and uses esbuild for bundling.
- Node.js (LTS version, installed via nvm)
- pnpm
-
Install dependencies:
pnpm install
-
Build the plugin:
pnpm run build
-
For development with watch mode:
pnpm run dev
src/main.ts- Main plugin source codemanifest.json- Plugin manifestversions.json- Version compatibility mappingmain.js- Compiled output (generated)styles.css- Plugin stylesesbuild.config.mjs- Build configurationtsconfig.json- TypeScript configuration
- Update version in
package.json - Run
pnpm run versionto update manifest and versions.json - Build with
pnpm run build - Package the following files for distribution:
manifest.jsonmain.jsstyles.cssREADME.mdversions.json
Tip: run node scripts/prepare-release.mjs from the project root to automatically copy those files into the release/ folder before creating a GitHub release or uploading assets. This helps avoid missing main.js/manifest.json in a release.
- “No new notes” usually means the dedupe cache already contains the items – clear it in Settings if you need to re-import.
- “API returned …” errors come directly from the Pebble endpoint; check server logs and verify
API_KEYmatches in both app/plugin. - Network issues: confirm the URL is HTTPS and reachable from your device.
- Use the developer console (
Cmd/Ctrl+Shift+I) for additional logs.
MIT – see LICENSE for details.