Collab Notes

by avtarasov210
5
4
3
2
1
Score: 50/100

Description

Realtime collaborative markdown editing in Obsidian (Yjs + CodeMirror 6). Install via BRAT.

Reviews

No reviews yet.

Stats

0
stars
14
downloads
0
forks
4
days
4
days
4
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
15
commits

Latest Version

4 days ago

Changelog

Collab Notes 1.0.4

README file from

Github

Collab Notes

Real-time collaborative markdown editing in Obsidian with live participant cursors — like Google Docs, but for your notes. Powered by a CRDT (Yjs) over a self-hosted service, so two or more people can edit the same note simultaneously and see each other's carets and selections.

Works on desktop and mobile.

This plugin has no default/bundled server. You run your own collab server (a small Node service, included in server/) and point the plugin at it. Nothing is sent anywhere until you configure a server URL.


Features

  • Real-time editing + cursors — see other participants' carets and selections with their names.
  • Right-click a note (or the “•••” menu) → Collaborative editing → get a link + QR to send to a partner.
  • Right-click a folder → Create a collaborative note from a link (like “New Kanban board”).
  • Your partner adds the note to their own Obsidian with this plugin (or opens the link in a browser, if you also host the browser client).
  • Sessions survive restarts: list of shared notes, auto-reconnect, detach a note.
  • Access to a shared note is only via the signed link.

Setup

1. Run the server

The plugin needs a collab server. A minimal one is in server/:

cd server
npm install
LINK_SECRET="<any-long-random-string>" \
PUBLIC_BASE="https://collab.example.com" \
PORT=3000 \
npm start

Or with Docker:

cd server
docker build -t collab-server .
docker run -p 3000:3000 \
  -e LINK_SECRET="<any-long-random-string>" \
  -e PUBLIC_BASE="https://collab.example.com" \
  collab-server

Environment variables:

  • LINK_SECRET — required. Secret used to sign share links (any long random string). Keep it private.
  • PUBLIC_BASE — public base URL that share links use (e.g. https://collab.example.com). Defaults to http://localhost:PORT.
  • PORT — port to listen on (default 3000).

Put the server behind HTTPS (a reverse proxy such as Caddy/nginx/Traefik) so links work in mobile and in-app browsers. The endpoints it exposes:

  • POST /sessions → creates a session, returns { docId, token, link }.
  • GET /ws/<docId>?token=… → Yjs WebSocket relay (rejects invalid/expired tokens).
  • GET /healthz → ok.

2. Point the plugin at your server

Settings → Collab Notes → Service URL = your server's public URL (e.g. https://collab.example.com). Set Your name too. Done — now you can share notes.

Network use (disclosure)

This plugin only talks to the server you configure (there is no default). It uses the network for:

  • HTTPS POST /sessions to create a session and get a shareable link.
  • WebSocket to sync document edits and cursor presence in real time.

No analytics or telemetry. Only the note content you explicitly share is transmitted, and only to your configured server.

How it works

  • Yjs (CRDT) — edits merge without conflicts; the server is a thin relay.
  • CodeMirror 6 (the same editor Obsidian uses) + y-codemirror.next renders remote cursors out of the box.
  • Access is a capability token embedded in the link (HMAC-SHA256), verified by the server on WebSocket upgrade.
  • The plugin attaches yCollab to the active editor via a CM6 Compartment, only after the initial sync (to avoid duplicating text).

Installation

Community plugins

Once approved: Settings → Community plugins → Browse → search Collab Notes → Install → Enable → then do Setup above.

Beta via BRAT

Install BRAT, then Add a beta plugin with:

https://github.com/delfinchiknakite-netizen/collab-notes-obsidian

Usage

  1. Open a note → right-click (or the “•••” menu) → Collaborative editing.
  2. Copy the link / show the QR → send it to a partner.
  3. Partner adds it to their Obsidian: command Add a collaborative note by link, or right-click a folder → Create a collaborative note from a link.
  4. Manage: right-clicking an already-shared note shows a management form (copy link / detach). List everything with the command Show collaborative notes.

Settings

  • Service URL — address of your collab server (required; no default).
  • Your name — shown at your cursor to other participants (applied live).

Building from source

npm install
npm run build   # → main.js

License

MIT.


По-русски

Совместное редактирование markdown-заметок в Obsidian в реальном времени с живыми курсорами участников — как в Google Docs. Работает на десктопе и телефоне.

Дефолтного сервера нет — вы разворачиваете свой (минимальный сервер лежит в server/) и указываете его адрес в настройках. Настройка:

  1. Запустите сервер: cd server && npm install && LINK_SECRET="<секрет>" PUBLIC_BASE="https://collab.example.com" npm start (или через Docker). Спрячьте за HTTPS.
  2. Settings → Collab Notes → URL сервиса = адрес вашего сервера, задайте имя.
  3. ПКМ по заметке → «Совместное редактирование» → отправьте ссылку. ПКМ по папке → «Создать совместную заметку из ссылки».

Переменные сервера: LINK_SECRET (обязательно), PUBLIC_BASE, PORT. Сетевой доступ — только к вашему серверу: POST /sessions (создать сессию) + WebSocket (синхронизация). Телеметрии нет.