Skip to content

Quickstart ​

Get a working plugin running in Dissent in about 5 minutes. No npm, no build step.

1. Scaffold a plugin ​

Run the scaffolder in any directory:

bash
npx create-dissent-plugin

Answer the prompts:

Plugin name: My First Plugin
Plugin ID (slug): my-first-plugin
Context:
  1) channel  — full-screen app inside a channel
  2) sidebar  — compact widget in the server sidebar
  3) profile  — card on a user's profile
  4) embed    — inline result from a slash command
  Choice [1]: 2
Tier:
  1 — passive (no user data access, no posting)
  2 — interactive (user opt-in, can read channel/profile)
  3 — collaborative (can post messages as bot)
  Choice [1]: 1

This creates:

my-first-plugin/
  index.html      ← your plugin UI
  manifest.json   ← plugin metadata

2. Serve it locally ​

From inside the plugin directory, start any static file server. Python's built-in server works:

bash
cd my-first-plugin
python3 -m http.server 8787

Your plugin is now at http://localhost:8787.

3. Enable Developer Mode on your server ​

In Dissent, open Server Settings → General and toggle on Developer Mode. This allows plugins hosted on localhost to be installed — it's off by default on production servers.

4. Install the plugin ​

Still in Server Settings, go to the Plugins tab and click Install from URL. Enter:

http://localhost:8787/manifest.json

Dissent fetches the manifest and pre-fills the plugin name, context, and tier. Click Install.

5. Assign and see it ​

  • For a sidebar plugin: it appears automatically in the right panel of your server.
  • For a channel plugin: go to any channel's settings, find Plugin, and assign your plugin.
  • For a profile plugin: open your profile and click Add Plugin.

You should see the scaffolded plugin rendering, displaying its PluginContext as a JSON dump.

6. Make a change ​

Edit index.html — change the content inside the #app div. Reload the channel or sidebar. Changes appear immediately (the plugin is loaded fresh on each view).

Next steps ​