🌿 Collaborative wiki on ATProto
TypeScript 97%
Shell 1%
CSS <1%
HTML <1%
JavaScript <1%
Dockerfile <1%
<1%
Vim Snippet <1%

README.md

A collaborative wiki built on ATProto. Knowledge grows together.

What is Lichen? #

Sign in with your Bluesky account, create wikis, and write in plain markdown with [[wikilinks]]. Your data lives on your own PDS: it persists independently of this app, and your Bluesky identity works everywhere on ATProto.

Features #

  • Wikilinks and backlinks: link notes with [[double brackets]], backlinks are tracked automatically
  • Revision history: every edit is a diff, full history is always available
  • Access control: public or private wikis, with admin/contributor/viewer roles
  • Live collaborative editing: several people in one note, cursors included
  • Markdown editor with split-pane live preview, image upload via drag-drop/paste
  • Obsidian round-trip: import a vault from a zip, export a wiki back out as one
  • Search from anywhere with Ctrl+K, across the wikis you can read or within the one you're in
  • Real-time sync via the ATProto firehose
  • Data portability: your wikis and notes are ATProto records on your PDS, not locked in
  • Installable as an app, with an offline fallback when the network drops
  • Multilingual UI (English, French and Japanese)
  • Self-hostable: deploy your own instance, fully independent

Markdown support #

Notes are plain markdown: CommonMark and GFM, plus the Obsidian extensions people actually use.

Feature Lichen Obsidian GitHub (GFM)
Tables, syntax-highlighted code, math $…$ ✅ ✅ ✅
Heading anchors, autolinked URLs ✅ ✅ ✅
Strikethrough ~~text~~, highlight ==text== ✅ ✅ ~~text~~ only
Task lists - [ ], alternate states - [/] ✅ ✅ - [ ] only
Footnotes [^1], inline ^[text] ✅ ✅ [^1] only
Callouts > [!note], foldable > [!note]- ✅ ✅ not foldable
Comments %%hidden%% ✅ ✅ —
Wikilinks [[note]], [[note|alias]], [[note#Heading]] ✅ ✅ —
Block references [[note#^id]] ✅ ids you type ✅ auto-minted too —
Cross-wiki [[@handle/wiki/note]] ✅ — —
Backlinks ✅ ✅ —
Transclusion ![[note]], PDF / audio embeds ![[file.pdf]] — ✅ —
Image sizing ![alt|300](…), ![300](…) ✅ ✅ —
YouTube embed ![](url) or a bare URL ✅ ![](url) only —
Tweet embed ![](url) — plain link, by design ✅ —
Diagrams as code ✅ viz-* blocks ✅ Mermaid ✅ Mermaid
Tags #tag — ✅ —
YAML frontmatter properties — hidden, not rendered ✅ shown as a table
Raw HTML — by design ✅ sanitized subset

Lichen renders diagrams from curated viz-graph / viz-sunburst blocks rather than Mermaid: notes come from anyone with contributor access on a shared server, so the renderers are vetted rather than arbitrary. Raw HTML is off for the same reason. A Mermaid block from a vault is preserved as a code block, not executed.

Bases and Canvas #

Obsidian's Bases (.base) and Canvas (.canvas) files are YAML and JSON, not markdown. A vault organised around Bases views arrives as its underlying notes without the views — the import warnings note lists what was skipped, so nothing disappears quietly. The note data itself is not lost — a Base is a query over note properties, and the properties live in each note's frontmatter, which imports intact even though Lichen does not yet read it as data.

How it works #

Contributors write directly to their own Personal Data Server via OAuth. The Lichen appview ingests those records from the network firehose, assembles wiki state, and serves reads. Your data is never locked in: it follows you across the ATProto ecosystem.

Contributing #

See CONTRIBUTING.md.

License #

Code: AGPL-3.0

Wiki content: User contributions on lichen.wiki are licensed under CC BY-SA 4.0 by default. Contributors retain copyright and grant reuse rights under this license. Private wikis are still covered by CC BY-SA 4.0, but access is restricted to members.

Tangled Stars #

Tangled Stars Chart