reMarkable Bridge
approvedby kebl3541
Send notes to a reMarkable as typed text, edit them there with the Type Folio, and pull the edits back. Uses the official desktop app's local store; no Connect subscription needed. Unofficial; not affiliated with reMarkable AS. - This plugin has not been manually reviewed by Obsidian staff.
reMarkable Bridge
Write in Obsidian, edit on paper. Send a note to your reMarkable, type on it with the Type Folio — footnotes included — and pull the edits back as clean markdown. Send a PDF, mark it up with the pen, and pull it back with your ink baked onto the pages and every text highlight extracted. No Connect subscription, no cloud hacking: the official desktop app does all the syncing.
If this plugin adds value for you and you would like to help support continued development, please use the buttons below:
☕ Buy me a coffee · 💙 Donate via PayPal
If you like this plugin or find it useful, please consider giving it a star on GitHub!
This is an unofficial project. It is not affiliated with or endorsed by reMarkable AS.
Status
Beta. Developed and tested on macOS with a reMarkable Paper Pro and the official reMarkable desktop app (free tier). The Windows and Linux store paths are untested guesses; set the store path manually in settings on those platforms and treat them as experimental. The plugin never deletes device data (archiving means the device trash) and refuses to write if the store layout looks unfamiliar, but this is beta software that touches your documents: keep backups of your vault.
Install
Not yet in the community plugin directory. Manual install:
- Download
main.js,manifest.json, andstyles.cssfrom the latest release (or build withnpm install && npm run build). - Copy them to
<your vault>/.obsidian/plugins/remarkable-bridge/. - Enable "reMarkable Bridge" in Settings → Community plugins.
- Make sure the reMarkable desktop app is installed, paired, and has synced at least once.
How it works
The reMarkable desktop app (free tier) keeps a full local copy of the tablet's document library on disk, in the tablet's own storage format:
~/Library/Containers/com.remarkable.desktop/Data/Library/Application Support/remarkable/desktop/
Each document is a UUID with sidecar files (.metadata, .content, .local, .pagedata) and a folder of per-page .rm v6 binary files. Typed text lives inside the .rm files as structured text blocks (a CRDT sequence), not as ink.
The plugin never talks to reMarkable's cloud. It reads and writes documents in this local store, and the official desktop app handles all syncing with the tablet. This avoids the unofficial cloud API entirely, along with its data loss history.
Features
- One ribbon button, two choices: click the tablet icon for "Import from reMarkable…" or "Export to reMarkable…"; each opens a searchable picker. No persistent panels.
- Notes round-trip as text: headings, bold, italic, bullets, and footnotes survive both directions. Fenced code blocks are stashed on send and restored on pull.
- Footnotes on the device: existing footnotes appear as frozen
[n]markers with an editable Notes section; new footnotes are typed inline as((the note text))and come back properly numbered. Full guide in docs/FOOTNOTES.md. - PDFs both ways: send a vault PDF for reading and annotation; pull back a
(annotated).pdfwith your ink rendered onto the pages (calibrated pen colors, opacity, and pressure-varying width) plus a highlights note with every text highlight organized by page. - Import anything: any typed-text notebook or PDF on the device can be imported into the vault, no check-out needed.
- Check-out model: a sent note shows a banner and (optionally) refuses edits in Obsidian until pulled back, so the two copies cannot diverge. Out-of-band edits (sync plugins, git) are detected and diverted to a conflict copy instead of overwritten.
- Watcher: the plugin notices device edits arriving on your computer and offers to pull, or pulls automatically if auto-pull is enabled. Status bar shows
rM: 2 out, 1 ready. - Safety: never deletes device data (archiving means the device trash), keeps device copies that contain handwriting or conflicts, and refuses to write if the store layout looks unfamiliar.
Design
Check-out/check-in, to avoid merge conflicts:
- Export to reMarkable: the note's markdown becomes a typed-text notebook in the store; the vault note is marked checked out.
- Edit on the device with the Type Folio (or pen, for PDFs).
- Import / pull back: the plugin reads the document, converts it to markdown (or bakes ink into a PDF copy), and restores it. The device copy is archived to stay under the free tier's document sync limit.
The .rm v6 text codec is a TypeScript port of rmscene's logic, cross-checked against it on hundreds of real pages; pen rendering calibration follows reMarkable Sync. The original Python validation spikes live in spike/.
Filesystem access and privacy
Obsidian's review tooling correctly flags this plugin for direct filesystem access, so here is exactly what it touches:
- Outside the vault, it reads and writes one directory only: the reMarkable
desktop app's local document store (on macOS
~/Library/Containers/com.remarkable.desktop/…/remarkable/desktop/, or the path you set in settings). All access goes through one module rooted at that directory. - What it does there: reads documents, creates new documents, and edits a document's metadata to move it to the device trash. It never hard-deletes anything, never rewrites an existing page file, and refuses to write at all if the directory layout doesn't look like a reMarkable store.
- Inside the vault it uses only Obsidian's own vault API.
- Vault enumeration: the plugin lists the vault's files in exactly one place — when you open the "Export to reMarkable…" picker, to show you your notes and PDFs to choose from. The list is built in memory for that picker and discarded when it closes. Nothing about your vault's structure is stored, indexed in the background, or written anywhere.
- Network: the plugin makes no network requests of any kind. Syncing with the tablet is done entirely by the official reMarkable app. Nothing leaves your machine because of this plugin.
isDesktopOnly is set accordingly; the plugin cannot run on mobile.
Caveats
- The desktop app's storage layout is undocumented and could change in an app update. The plugin must detect unknown layouts and refuse to write rather than guess.
- Editing the same document on both sides between syncs will fork or clobber; the check-out model exists to prevent this.
Support
If this plugin adds value for you and you would like to help support continued development, please use the buttons below:
License
GPL-3.0-or-later. Third-party attributions in NOTICES.md.
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.
