Publish the current note to your self-hosted Annotex server so invited colleagues can read it and leave inline, anchored comments.
Publish the note you're editing to your self-hosted Annotex server with one
command. Invited colleagues open the link, read the rendered note, and leave
inline, anchored comments (with LaTeX). The note's Markdown — including $math$ —
is rendered on the server and gets the Annotex comment layer + KaTeX.
This plugin needs an Annotex server — it's a companion to one you run yourself, and does nothing until you point it at your server's URL. Don't have one? Start your own in one command on any machine with Node 18+:
npx annotex-serverIt prints an admin token to paste here and an admin URL to invite colleagues. Details: annotex-server. Then see Configure and Network use & privacy below.
https://<your-server>/n/<docId> and
copies the share link to your clipboard.docId (stored in frontmatter as annotex-doc), so
renaming the file — or re-publishing after edits — keeps the same comment thread.<note>.annotex.json file right beside it holding all its highlights and
comments. It's refreshed automatically whenever you open or publish the
note (and on demand via "Sync annotations to vault"), so the discussion
travels, versions, and backs up together with the note. The Annotex server
stays the live hub colleagues comment against in real time; the sidecar is your
owned, offline copy of it.Once it's in the Community Plugins store, install it the normal way: Obsidian → Settings → Community plugins → Browse → search Annotex → Install → Enable. Until then, use one of the manual options below.
manifest.json and main.js from the
latest release.<vault>/.obsidian/plugins/annotex-publish/
and put both files in it. (.obsidian is hidden — on macOS press
Cmd-Shift-. in Finder to show hidden folders.)Install the BRAT community plugin, then Add beta plugin →
epipolarstudios/annotex-obsidian-plugin. BRAT tracks new releases for you.
git clone https://github.com/epipolarstudios/annotex-obsidian-plugin
cd annotex-obsidian-plugin
npm install && npm run build # produces main.js
Then copy manifest.json + main.js into
<vault>/.obsidian/plugins/annotex-publish/ and reload + enable as in Option A.
After any manual update, Settings → Community plugins → Reload (or toggle the plugin off/on) is what picks up the new
main.js.
Settings → Annotex:
https://annotex.example.com./admin → Publish tokens → Generate) and paste it here. It authorises
publishing only (not managing access) — safer than your master admin token.
The plugin keeps it in this vault's plugin data, on the device running
Obsidian — it's only ever sent to your server, never anywhere else. Treat it
like a password; don't sync it to a shared vault. (Your master ADMIN_TOKEN
also works here, but a scoped publish token is preferred.)This plugin makes network requests only to the Annotex server URL you configure — no other remote services, no third parties, and no analytics or telemetry of any kind.
PUT /api/documents/…), authenticated with your publish token.GET /api/annotations/…) to mirror them into the vault.Nothing is sent anywhere else. The plugin is a companion to a self-hosted Annotex server that you run and control, and does nothing until you point it at one.
Required configuration (disclosure): the plugin needs an Annotex server URL
and a publish token to function. It only reads/writes files inside your vault
(the note it publishes, and a <note>.annotex.json mirror beside it) — never outside.
Open a note → run "Publish current note" (Command palette, or the ribbon icon) → the share link is copied to your clipboard. Send it to an invited colleague (add them first in the Annotex admin panel). Edit and re-publish any time; the link and its comments stay.
If Annotex is useful to you, you can support development:
<note>.annotex.json sidecar is currently a one-way mirror (server →
vault): it's a durable, versioned copy of the comments, but it isn't yet
re-imported to rebuild the server from the vault. Keep it in your vault backup;
automatic restore-on-publish is a planned follow-up.[[Note|Alias]] →
Alias); embeds ![[...]] are dropped. Standard Markdown + $…$/$$…$$ math
render fully.