Obsidian was one of the biggest inspirations behind the Epicenter project. I used it daily and think it's incredible software. But it's not open source, and Obsidian Sync never quite worked the way I wanted it to. I think any tool that sits this deep in your personal knowledge system should be open source and auditable.
So I built Opensidian as an open-source proof of concept: what happens when you store notes as Yjs CRDTs, sync them across servers, encrypt them end-to-end, and put a POSIX-like filesystem on top?
To do this, I built `@epicenter/filesystem`, which exposes a virtual filesystem interface on top of `@epicenter/workspace`'s CRDT tables. I then wired this into `just-bash`, a bash interpreter implemented entirely in TypeScript, which provided 80+ Unix commands (awk, sed, grep, jq, find, sqlite3, curl, etc.) to run against the same data the editor uses. Shell commands and the UI hit the same underlying CRDTs.
$ echo "# Meeting notes" > /notes/2026-04-06.md
$ mkdir /notes/archive
$ mv /notes/2026-04-06.md /notes/archive/
$ open /notes/archive/2026-04-06.md
Those commands create and move real files that immediately appear in the editor's file tree. The best part is that all of this works in both browser and server-side contexts, since yjs (https://github.com/yjs/yjs) is isomorphic.
Under the hood, metadata (name, parent, timestamps) lives in a versioned CRDT table. Document content lives in a separate Y.Doc per file, so the directory index syncs without pulling every document body. Sync uses the Yjs protocol over WebSocket, with Cloudflare Durable Objects persisting an append-only SQLite update log. Everything is encrypted end-to-end with XChaCha20-Poly1305. Keys derived via HKDF-SHA256; the sync server sees only the ciphertext.
More features: CodeMirror 6 with Yjs collaboration binding, `[[` internal links that store file IDs (renames don't break them), SQLite FTS5 search, AI chat with tool-call approval UI, and Vim mode.
Opensidian itself is a demo. For the last six months, I've been working on the infrastructure underneath: `@epicenter/workspace` (typed CRDT tables with versioning, migrations, encryption, and sync) and `@epicenter/filesystem` (a POSIX filesystem layer over Yjs). I'll be writing more about those APIs separately and integrating them into more apps in the ecosystem (including Whispering). The idea is that anyone can build local-first apps on the same foundation: notes, task managers, knowledge bases, etc., while solving the most difficult problems of local-first sync.
The UI is rough, and the feature set is thin compared to Obsidian; this isn't trying to replace it today. But I'm excited for what the future of personal computing tools could look like!
MIT licensed. Would love feedback, ideas, and roasts.
Source: https://github.com/EpicenterHQ/epicenter/tree/main/apps/open... Discord: https://go.epicenter.so/discord