Jesús García88 downloadsSync Obsidian vaults across multiple users via Supabase with real-time collaboration and locking.
Multi-user Obsidian vault sync via Supabase with real-time collaboration and file locking.
| Type | Extensions |
|---|---|
| Text | .md, .canvas, .excalidraw |
| Images | .png, .jpg, .jpeg, .webp, .gif, .svg |
| Documents | .pdf |
| Audio | .mp3, .wav, .ogg, .m4a |
Install from Obsidian Community Plugins, or copy main.js, manifest.json, and styles.css to .obsidian/plugins/supsync/.
vault-files (public)Run SupSync: Sync now or click the refresh icon in the ribbon.
When you start editing a note, SupSync acquires a lock so others see "X is editing this note". The lock releases when you:
Reading is always available — no lock needed.
| Command | Description |
|---|---|
| SupSync: Sync now | Push/pull changes immediately |
| SupSync: Sign in | Authenticate with email/password |
| SupSync: Sign out | Disconnect from Supabase |
| SupSync: Create shared vault | Register this vault in Supabase |
| SupSync: Join vault | Join an existing vault by ID |
| SupSync: Open setup wizard | Guided Supabase setup |
| SupSync: Open settings | Open plugin settings |
| Setting | Default | Description |
|---|---|---|
| Supabase URL | — | Your project URL |
| Supabase anon key | — | Public API key |
| Sync interval (ms) | 0 |
Auto-sync interval (0 = manual only) |
| Conflict mode | Remote wins | local-wins, remote-wins, or ask |
| Excluded paths | .git/, .obsidian/, .trash/ |
Paths to skip during sync |
| Storage limit (MB) | 1024 | Max file size for binary uploads |
npm install
npm run dev # watch mode
npm run build # production build
npm run typecheck # type verification
npm test # run tests
Push a tag without v prefix — the CI workflow builds, attests, and creates the GitHub release automatically:
git tag 0.2.0
git push origin 0.2.0
src/
main.ts Plugin entry point, commands, session restore
settings.ts Settings tab UI
types.ts Shared types and constants
i18n/
index.ts Locale loader and t() function
en.json English strings
es.json Spanish strings
supabase-client.ts Auth, REST helpers, storage upload/download
supabase-api.ts Vault CRUD operations
sync-manager.ts Change queue, polling, push/pull orchestration
sync-pull.ts Pull logic with conflict detection
binary-sync.ts Binary file upload/download via Storage
lock-manager.ts Lock acquisition, heartbeat, release
realtime-manager.ts WebSocket connection for lock notifications
conflict-modal.ts Side-by-side diff for conflict resolution
login-modal.ts Sign in / register modal
join-vault-modal.ts Join existing vault modal
onboard-modal.ts Step-by-step setup wizard
sql/
setup.sql Supabase schema, RLS policies, triggers
src/i18n/en.json to src/i18n/<lang>.json (use the Obsidian language code)src/i18n/index.tsMIT