Multiple users with per file access permissions

Hey everyone,
I have been using Obsidian with my team for the past 3-4 months and after the initial learning curve it has been a great add-on to the way we work.

We have set up our own Vault and we share files through git (which is not ideal but still does the trick).
However, we will be expansing our team and that means that we will have documents that not everybody should see. This lead us to spend a good deal of time seeing how we can retain Obsidian.
We really tried to find a way to sync our Vault with multiple people and have per user permissions with a UX that would make sense. We tried:

  • Set up Nextcloud (UX here won’t work because the permissions can look into file title, not file content)
  • Dropbox where we build a Python script that changes file permissions once a file is uploaded based on the contents (very painful & hellish edge cases)
  • Create an Obisidian plugin which adds a UI to select users to share with (essentially this is building the whole feature ourselves - unfortunately this is not happening)
  • Any other networked tool (Roam, all OSS alternatives)
  • git submodules (it doesn’t work, or it’s incredibly messy to set it up - probably requires one submodule per person)
  • svm (we’ve never worked with this version control and it seems a very complex solution although there are per file permissions here)

As we look at it we’ll be switching to Notion because of this (which is a great pain).
Any other thoughts or suggestions are greatly welcomed.

There is a related feature request. Obsidian Sync: Sharing a vault

Obsidian works on files. So you could use any third party file sharing service.
I assume that most Business oriented file sharing systems offer file or directory level access control.

However it seems that what you want goes way beyond this.
It seems that you want content-level permission. I am not sure such a system even exists. How would any sync service know what to sync not to sync based on content? The system should read your file, use some sort of AI to determine if it’s sensitive or not, and then share it accordingly?


Thanks for the answer. Essentially you could just make a note for your team members, parse it and figure out who to share with.
The top of the note for example will have a convention like:

Sharing: [[Teammate A]] [[Team C]]

This can be hidden also using a plugin so you can choose if to see it or not.
You can make a Python script that uploads or not (and changes permissions or not) based on a “database” that exists in text format.
This is a complete anti-pattern however (DBs and schemas exist for a reason) but at least should work. I’m really tempted to try to make something happen (Firebase Storage has a god API for permissions) but I’d essentially be building a file sync service from scratch.
Damn, I dislike Notion so much I might even do that.