README file from
GithubFractional Guru Sync for Obsidian
Sync only the Markdown notes and folders you choose from the current Obsidian vault into your Fractional Guru knowledge base. This is a one-way integration: Obsidian remains the source of truth, and the plugin never edits your local notes.
Integration status: The backend routes in
server-contract/INTEGRATION.mdare live athttps://fractional.guru. Create an integration token under Knowledge → Connected sources → Get an integration token and paste it into the plugin's settings. Real-vault acceptance testing across desktop and mobile is still outstanding.
Features
- Explicitly select folders (including nested Markdown notes) and/or individual Markdown files; nothing is selected by default.
- Connect with a scoped Fractional Guru integration token; credentials are never placed in URLs.
- Confirm the first upload before any note leaves the vault.
- Manual sync, plus optional automatic sync after approval (periodic and edit-triggered).
- Incremental SHA-256 change detection; retries avoid marking unacknowledged items as synced.
- Propagates deletion of previously uploaded local notes, but removing a selection or disconnecting does not delete remote knowledge.
- Maximum size: 1 MB per Markdown note. Non-Markdown attachments, PDFs, bidirectional sync and merge/conflict resolution are deliberately out of scope for v0.1.
- Desktop/mobile-compatible design using the Obsidian API and standard Web Crypto; actual mobile runtime testing remains outstanding.
Install
Install Fractional Guru Sync from the community directory: in Obsidian open Settings → Community plugins → Browse, search for the plugin, install it and enable it. It is listed at community.obsidian.md/plugins/fractional-guru-sync.
To install manually instead, create .obsidian/plugins/fractional-guru-sync/ in the vault that you want to connect, copy main.js, manifest.json and styles.css from this project into that folder, and restart or reload Obsidian.
Then, either way:
- On fractional.guru open Knowledge → Connected sources → Get an integration token and create a token.
- Paste it into the plugin's Integration token setting and press Connect / verify.
- Select folders or notes, choose Sync selected notes, carefully review the first-sync confirmation, then optionally enable automatic syncing.
Vault selection: Obsidian plugins run within the vault where installed; install the plugin in each vault you intend to connect. Each installation generates a vault-specific ID and has independent folder/note selections and token settings.
Privacy and security
Only selected Markdown note content and paths are sent to the configured server, through HTTPS by default. Integration tokens and a local sync manifest are stored in Obsidian's local plugin data.json, which may be included in any sync or backup system that copies .obsidian/; protect that file. Use a short-lived/revocable scoped token if the platform supports it and revoke it if exposed. Do not select notes containing secrets or information you do not have permission to share. The platform must determine visibility independently; default new notes to private.
Deleting a local note which was previously synced queues removal from Fractional Guru on the next successful sync. Deselecting a folder or note, or disconnecting, never deletes its remote copy. Manage remote knowledge separately from your Guru account. Note files over 1 MB are skipped; check the desktop console if automatic sync errors occur.
Development and tests
No build step or external runtime dependencies are required: main.js is the deployable source. With Node.js 20+ run npm test to execute the mocked API and selection tests. The repository never needs to contain a real token.
Releases
Obsidian installs from a GitHub release, and the rules are strict:
- Keep
README.md,LICENSE,manifest.jsonandversions.jsonat the repository root. - Create a release whose tag is exactly the
manifest.jsonversion, with novprefix, and attachmain.js,manifest.jsonandstyles.cssas individual release assets. - For each new version, bump
manifest.json, add the matching entry toversions.json, and repeat.
A release with no assets, or a tag that does not match the manifest version, produces a listing that cannot be installed from inside Obsidian.