Hi there, Thanks for the comments and interest in this idea!
And yes @renato, CodeMirror looks like the better fit here, thanks a lot!
I was surprised to see how many people want a browser-version of Obsidian (like me), especially in this thread.
From what I gathered, users mainly want:
Access from locked-down or unsupported devices (corporate laptops, schools, Chromebooks, Raspberry Pi, etc.)
Freedom to choose their sync provider (Dropbox, Google Drive, GitHub, etc.)
Self-hosted options (e.g. Docker) for full control
A lightweight web editor, even if not fully featured
To bypass corporate IT restrictions while still keeping notes private and accessible anywhere
The next big question is the data model:
Should we stick to atomic Markdown files (like Obsidian) and rely on cloud file storage for sync? If so, how do we handle indexing, graph previews, and CRUD performance at scale?
Or should we use a structured JSON/OPML model, which reduces file count and might make parsing/indexing faster?
Or support a self-hosted DB for storing notes, for faster queries and graph extraction, while still allowing export back to Markdown (or other formats)?
Small update on this idea since it’s been almost a year.
I ended up starting the project and have been working on it full-time for the last few months.
The current direction is a self-hosted, browser-based Markdown knowledge app where notes remain real Markdown files and vaults remain real folders on disk, while collaboration is handled through CRDTs.
So far I have:
Real-time collaborative editing working
CRDT-based sync for both note content and vault tree operations
Filesystem-backed vault storage
User management, roles, permissions, invitations, and shared vaults
Docker-first deployment
Some of stress tests and sync tests
The biggest thing missing right now is the MVP UI. I’m trying to get it into a usable state before making the repository public.
One thing that became much clearer during implementation is that collaboration for the file/folder tree is almost as important as collaboration for the note content itself, and at the same time treat the real vault files/folders stored on the FS are the source of truth, and also handles the external changes done outside the app, e.g rsync, git pull, or nano.
I’ll post another update once I have screenshots and an early alpha available,
Most likely, the correct decision here is to keep real Markdown files as the source of truth. Coupling filesystem backed storage + CRDT collaboration + listening to external changes (git pull / rsync) gives you compatibility that a pure DB or JSON model usually struggles with.
The markdown is the easy part, it’s making sure the vault tree and indexing and graph state is consistent with concurrent edits and filesystem events. Sounds like you already found that folder collaboration is as important as note collaboration. A Docker-first, self-hosted approach with actual Markdown files feels much closer to what many Obsidian users actually want than a completely new data model.
Thanks @zooha34 , that’s pretty much the conclusion I’ve reached after implementing a large part of it.
The mental model behind the project is that your notes are yours. They live on your server as real Markdown files inside real folders that you can inspect, edit, organize, back up, or process with whatever tools you prefer—not just this app.
/vaults
/my-vault
/shared-vault
You can synchronize it with rsync, cd into a vault on your server, edit files with nano or another editor, git pull content, run scheduled backups, or upload snapshots to cloud storage. I wanted the vault to remain compatible with existing workflows rather than introducing a completely new storage model.
There have been quite a few engineering challenges around that area, especially when trying to support multiple users, multiple vaults, real-time collaboration, and external filesystem changes at the same time with a good performance. I’ll share more details once I have an early alpha