# Spectacles Sync Export your Obsidian vault as a JSON knowledge graph and sync it to a Spectacles AR Lens, where you can explore your notes as a 3D graph. Your vault is end-to-end encrypted with a password you choose — the backend only ever stores an unreadable blob. ## How it works 1. Open **Settings → Spectacles Sync** and choose a **password**. 2. Run **Sync vault to Spectacles** from the command palette (or click the glasses ribbon icon). The plugin encrypts your vault locally and uploads the ciphertext. 3. On the Spectacles Lens, enter the **same password** to decrypt and view your graph. The password is the only pairing secret — there is no separate code. 4. Re-sync any time. Enable **Auto-sync on save** to re-upload about 30 seconds after you stop editing. ## Privacy & network use This plugin sends data over the network. Exactly what happens: - **Where:** your vault is uploaded to a backend server (default `https://spectacles-sync-backend-production.up.railway.app`, configurable under Settings → Advanced → Backend URL). You can self-host the backend and point the plugin at your own URL. - **What:** a single end-to-end **encrypted** blob. Before anything leaves your device it is encrypted with a key derived from your password (NaCl secretbox / XSalsa20-Poly1305). The server stores only the ciphertext plus a password-derived identifier — it cannot read your notes, and neither can anyone with access to the server. - **Plaintext contents (inside the encrypted blob):** note titles, paths, a 280-character excerpt per note, tags, links, frontmatter, headings, word counts, and timestamps. Full note bodies are included **only** if you enable **Sync full note body** (off by default). - **What is never sent:** your password. It never leaves your device. - **Excluding notes:** use **Excluded folders** and **Excluded tags** in settings to keep notes out of every sync. ### Deleting your data Run **Delete remote Spectacles data** from the command palette, or click **Delete remote data** under Settings → Danger zone. This permanently removes your uploaded blob from the backend. > Because encryption is keyed to your password, the password cannot be recovered if lost — pick one you'll remember. ## Development ```bash npm install npm run dev # esbuild watch, rebuilds main.js in place npm run build # type-check + production build ``` Symlink this folder into a test vault's `.obsidian/plugins/spectacles-sync/`, then enable the plugin under Settings → Community plugins. ## License [MIT](LICENSE)