OpenChorus is a browser extension that adds Polycentric-backed comments and replies for the current tab URL.
It runs in a browser side panel (Chromium) / sidebar (Firefox) when available, with a popup fallback when the native panel UI is unavailable.
- Comment threads keyed by the current page URL
- Replies, reactions, and delete support
- Multi-server reads and writes, with a user-editable server list
- Optional host permissions that are requested only when needed
- Local caching (IndexedDB) plus an outbox for retrying failed writes
- Identity import/export using
polycentric://backup tokens
If you just want to use the extension, grab a prebuilt dist package from GitHub Releases.
- Go to the repo's Releases page
- Download the
openchorus-<tag>-dist.zipasset - Unzip it
- Open
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select the unzipped folder (it contains
manifest.json)
Notes:
- Chromium browsers will show standard developer mode warnings for unpacked extensions.
- Updates are manual: download a newer release, unzip, and reload the folder.
Prereqs: Node.js 18+.
npm ci
npm run build:chromeThen load the extension:
- Open
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select the repo's
dist-chrome/directory
npm ci
npm run build:firefoxThen load the extension:
- Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on…
- Select
dist-firefox/manifest.json
Note: this beta is distributed as source. Loading an unpacked extension is expected to show the standard "Developer mode" warnings in Chromium browsers.
- Open the side panel via the extension icon.
- Use the Settings page to configure servers and manage your identity.
- If you enable canonical URL extraction for a site, OpenChorus will try to use that canonical URL as the thread key.
Polycentric events can include a list of references. In the Polycentric API, a reference can be a pointer (type 2) or a raw byte string (type 3, "byte reference").
OpenChorus attaches an extra byte reference to every Post it creates (including replies). The value is the UTF-8 bytes for:
openchorus:v1
This gives other clients (including polycentric.io) a simple way to exclude OpenChorus-originated posts from global views, recommendations, and search indexing.
Note: OpenChorus does not attach this marker to Opinion (like/dislike) events, because many Polycentric clients only index opinions when they have exactly one subject reference.
- Your private key never leaves the browser unless you export it via a backup token.
- Posts are signed locally and then submitted to the Polycentric servers you have configured.
- Grant host permissions only to servers you trust.
public/manifest.json: active manifest used bynpm run build(Chromium by default)public/manifest.chrome.json: Chromium MV3 manifest templatepublic/manifest.firefox.json: Firefox MV3 manifest template (sidebar_action)src/background.ts: background entry (service worker in Chromium; event page in Firefox)src/sidepanel/main.tsx: side panel UIsrc/options/main.tsx: settings UIsrc/shared/*: storage, outbox, thread cache, permissionssrc/polycentric/*: minimal Polycentric wire format utilities
BSD 3-Clause License. See LICENSE.