Integrations · Discourse Plugin

Every new account starts at trust level 0.
Established people shouldn’t.

Discourse keeps newcomers restricted because it can’t tell a real, established person from a bot at signup. This plugin lets a member link their Mask.ID from their profile; your forum receives a tier — Trusted, Building or Low — and nothing else. Then it shows a badge, marks their posts, and can start them above TL0. Open source, installed with one git URL.

What your forum gets

A tier, and a way to act on it

A native Discourse badge per tier (Gold / Silver / Bronze), a shield beside the member’s name on every post, and a trust-level floor you set per tier — a Trusted Mask.ID can start at TL2 instead of serving the new-user restrictions. A floor, never a ceiling: nobody is demoted, staff and locked levels are untouched.

What your forum never gets

Anything personal

No Mask.ID username, no wallet address, no referral graph, no profile content. The forum stores a pairwise reference code that is meaningless on any other site. The member can unlink at any time; a Mask.ID revoked or deleted on the other side unlinks on the next refresh.

Install

Self-hosted Discourse: add the plugin to containers/app.yml and rebuild. (Discourse’s hosted plans allow third-party plugins only on the higher tiers; self-hosted instances install anything.)

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/EricStanek/maskid-discourse.git
cd /var/discourse && ./launcher rebuild app

Then Admin → Settings → Plugins → maskid and tick maskid enabled. The Mask.ID platform key is fetched once from https://app.mask.id/.well-known/maskid-attest-key and pinned. No API key is needed during the pilot.

Settings

SettingDefaultMeaning
maskid trust level trusted2Minimum trust level for a member whose Mask.ID tier is Trusted
maskid trust level building1…whose tier is Building
maskid trust level low0…whose tier is Low
maskid refresh days1How often each linked member’s tier is re-read from Mask.ID
maskid show poster icononShield beside the name on posts
maskid key idproduction keyThe pinned platform key; responses signed by any other key are rejected

How it works

  1. A member clicks Link my Mask.ID on their forum profile. The plugin mints a single-use code and sends them to Mask.ID’s consent page with your forum’s request.
  2. The member sees exactly what will be shared — a tier and a reference code — and approves it with their own key on Mask.ID.
  3. Mask.ID returns a platform-signed response to your forum (in the member’s browser, and to your webhook if your forum is on public https). The plugin verifies one Ed25519 signature against the pinned key, checks the single-use code, the user, and your host, and stores the tier.
  4. Every refresh days, the plugin re-reads the member’s current tier. Revoked or deleted on Mask.ID → unlinked here.

The full contract is the Attestation API — the same one every other integration uses. The plugin’s source is on GitHub (MIT).

Why a forum admin would want this

You already run a trust-level system; it exists because signup can’t tell humans from bots, so it punishes every genuine newcomer for weeks. A Mask.ID tier is a trust level the member earned elsewhere — from people who know them, on an identity that is expensive to fake — and it plugs into the levels you already understand. Bots still start at zero. Banned members can’t come back with a fresh email. And a member who links once carries their standing to every forum that installs this.

One plugin · One git URL · MIT

Running it? Tell us — your forum gets listed.

Get the plugin Works with Mask.ID

Contact Us

Or message the developer directly on Vector.