Flint
pendingby Tiago Fabre, Andrew Mao
Forked from Andrewyx/Flint
Sync your vault across devices using Firebase Storage with CRDT-based conflict resolution.
Flint
Obsidian plugin that syncs your vault across devices using your own Firebase Storage bucket. Concurrent edits from multiple devices are merged automatically using Automerge CRDTs — no conflicts, no lost work.
Features
- CRDT sync — concurrent edits from different devices are merged, not overwritten.
- Bring-your-own Firebase — your data lives in your bucket; no third-party server involved.
- Firebase Authentication — sign in with email/password to scope reads/writes to your account.
- Force Push — command-palette escape hatch to overwrite remote state with local vault.
- Android/Mobile compatible.
Setup
Firebase Project
- Create a new project at console.firebase.google.com.
- Register a Web App (Project Settings → Your apps → Add app) and copy the
firebaseConfigvalues. - Enable Firebase Storage (Build → Storage → Get started). Choose a region, start in production mode.
- Enable Email/Password authentication (Build → Authentication → Sign-in method → Email/Password → Enable).
- Create a user account (Authentication → Users → Add user).
- Set your Storage rules:
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /vaults/{vaultName}/{allPaths=**} { allow read, write: if request.auth != null && request.auth.token.email != null; } } } - Configure CORS on your bucket. Create a
cors.jsonfile:Apply it with:[ { "origin": ["app://obsidian.md"], "method": ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS"], "responseHeader": ["Content-Type", "Authorization", "Content-Length", "X-Requested-With"], "maxAgeSeconds": 3600 } ]gsutil cors set cors.json gs://YOUR-BUCKET-NAME
Plugin Installation
- Enable Community Plugins in Obsidian settings.
- Search for Flint and install, or manually copy the plugin folder into
VAULT/.obsidian/plugins/. - Enable the plugin under Community Plugins.
Plugin Configuration
- Open Settings → Flint.
- Paste your Firebase
firebaseConfigvalues and click Save. - Enter your email/password and sign in.
Usage
Sync — click the refresh icon in the left ribbon. Flint merges your local files with remote state and uploads the result. The first sync uploads everything; subsequent syncs are incremental.
Force Push — open the Command Palette (Cmd/Ctrl + P) and run Flint: Force push vault to Firebase to overwrite remote state with your local vault, skipping the merge step.
New device — configure Flint with the same Firebase credentials and click Sync. Your notes will be downloaded and merged into the local vault.
Storage Layout
vaults/
<vault-name>/
path/to/note.md ← Markdown with _flint_id frontmatter
path/to/note.md.am ← Automerge binary (CRDT state)
Troubleshooting
- CORS errors — apply the CORS config to your bucket (step 7 above).
auth/configuration-not-found— Email/Password sign-in is not enabled in Firebase Console.- No changes after sync — check that your Storage rules allow authenticated writes and that the bucket name in settings matches exactly.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.