Real-time, multiplayer shared folders and notes for Obsidian. Deploy it yourself or use our hosted service — and either way, notes are encrypted end-to-end. Everything you love about Google Docs, but in your lovely local Obsidian instance. Fully MIT-licensed.
Warning: Beta software. This project is still in active development and may contain bugs, breaking changes, data leakage, or data-loss risks; use at your own risk and keep backups of important vaults.
After installing the plugin, right click on a folder and select Share folder.... Send the invite URL to a friend or teammate and the folder will appear in their vault. You can see each others' cursors in the file and edit collaboratively in realtime.
As long as Obsidian is open, updates you make will be synced to other people shared on the folder, so feel free to use Claude Code or your favorite AI tools on the shared folders and the changes will propagate automatically.
collab_demo.mp4
This is a community plugin maintained by Andy Bromberg at Experimental LLC. Neither Andy nor Experimental LLC are affiliated with Obsidian.
The valiant Obsidian plugin reviewing team is facing an onslaught of submissions. It may be weeks or months until they get to this one and add it to the real directory. Until then, you can install it with a helper plugin called BRAT.
- Install BRAT. Alternatively, in Obsidian, open
Settings->Community pluginsand installBRAT. (You'll have to turn onCommunity pluginsfirst if you haven't already) - Toggle BRAT "on" in the community plugins list.
- Open BRAT settings and choose
Add beta plugin. - Enter this repository:
abromberg/obsidian-collaborative-folders-pluginand hitAdd - On first launch the plugin opens an onboarding modal — enter your display name and choose a service mode:
- Hosted service (recommended): enter your email, then verify it with a one-time code in plugin settings and subscribe
- Self-deployment: follow the Server Deployment section below and enter your deployment URL
Render blueprint is included at render.yaml. All you need to do is set up a new "Blueprint" deployment on Render, pasting in this repo's GitHub URL (https://github.com/abromberg/obsidian-collaborative-folders). Running such a server costs ~$9/month in Render costs (as of February 2026).
The hosted deployment URL is https://collaborativefolders.com. Paste that into Collaborative Folders plugin settings in Obsidian, then reload Obsidian.
- Obsidian plugin for sharing folders and the notes within them, with live collaborative editing.
- Collaboration server for auth, membership, invites, key lifecycle, encrypted document/blob relay, and realtime awareness signaling.
- Shared TypeScript package for protocol constants, payload types, and room naming.
Note
There is a read-only sister repo https://github.com/abromberg/obsidian-collaborative-folders-plugin that houses plugin releases. Code changes, issues, and PRs should be made in the monorepo in which you're reading this (https://github.com/abromberg/obsidian-collaborative-folders), and updates are then regularly pushed to the sister repo for plugin releases.
This section is intended to satisfy Obsidian's disclosure expectations for community plugins, based on the implementation in this repository.
- Network use: The plugin makes outbound HTTPS/WSS requests to the configured
Server URLfor invite creation/redeem, token refresh, folder membership APIs, key lifecycle APIs, realtime relay (encrypted document updates/snapshots plus awareness signaling), and encrypted blob upload/download. - Account requirements:
- Self-hosted mode: no account is required
- Managed service mode (
https://collaborativefolders.com): hosted account linking is required for invite redemption and billing access; each collaborator needs their own active subscription.
- Payments and paid features:
- Self-hosted mode: no payments are required to run this code or use the product.
- Managed service mode: no free tier,
$9 USD / subscribed user / month, owner-level3GBtotal storage cap across owned shared folders, and25MBmax uploaded blob size. - Managed service mode: when a hosted subscription becomes inactive (for example after cancellation period end), collaborator access is automatically offboarded (editor memberships removed, pending invites revoked). Existing local vault copies remain local but stop syncing.
- External file access:
- Reads/writes only files and folders in the active Obsidian vault via Obsidian APIs.
- Does not intentionally access files outside the vault.
- Ads: no advertising.
- Telemetry/analytics:
- Plugin: no third-party analytics SDK or telemetry collector is integrated.
- Server: writes security/audit events (for auth denials, invite/member mutations, rate-limit events, blob access, token lifecycle events)
- Data processed by the collaboration backend:
- Control-plane metadata: folder IDs, room names (doc room names encode relative paths), member/client IDs, display names, roles, invite metadata (including optional invite labels), token-version state, and timestamps.
- Credential artifacts: hashed invite tokens, hashed refresh tokens (with token families), revoked access-token JTIs, one-time WS tickets (stored hashed in-memory).
- Key lifecycle data: client public keys, folder key epochs, and per-member wrapped content-key envelopes.
- Content artifacts: encrypted document updates/snapshots and encrypted blobs (
ciphertext,nonce,aad,keyEpoch,digestmetadata). - Blob metadata: digest hashes, sizes, and storage paths.
- Retention and deletion:
- Self-hosted mode: you (the operator) control retention/deletion of DB rows and blob files.
- Managed service mode: policy is documented at https://collaborativefolders.com/privacy
- Privacy policy:
- Self-hosted mode: governed by the operator of the server you deploy.
- Managed service mode: https://collaborativefolders.com/privacy
- Source availability:
- Plugin source: open source (MIT) in this repository.
- Server source: open source (MIT) in this repository.
For protocol details, see Data Flow and Encryption.
At a high level:
- Clients encrypt note and blob content locally before syncing.
- The server handles auth, membership, invites, key lifecycle, encrypted relay/storage, and awareness signaling.
- The server cannot read note/blob plaintext in transit or at rest.
apps/
plugin/ # Obsidian plugin (@obsidian-teams/plugin)
server/ # REST + WebSocket server (@obsidian-teams/server)
packages/
shared/ # Shared protocol/types/constants (@obsidian-teams/shared)
Note: there is a separate repo with only the plugin code that is used for releases. This is to satisfy Obsidian's plugin-reviewing agent that doesn't handle the monorepo server code well.
- TypeScript (workspace-wide)
pnpmworkspaces + Turborepo- Yjs CRDT sync + CodeMirror 6 integration
- Express +
wson the server - SQLite (
better-sqlite3) for server state
For prerequisites and quickstart setup, see Local Development.
Contributions are welcome. Please open an issue to discuss significant changes before submitting a PR, and include clear reproduction steps or tests for bug fixes. Using AI is great, but please make sure you (the human) understand the existing codebase and the code you are submitting. I would strongly recommend writing the PR description yourself to ensure this is true.
This project is licensed under the MIT License. See LICENSE.
