Plugins
What the plugin system is, and what it is not.
Plugins add product surfaces — topbar actions, right panels, panel types, slash commands, message marks — and optional backend services, without forking the main Harmony Chat server.
First-party examples ship in the same repository:
| Plugin | Adds |
|---|---|
harmony.agents | Agent members, harness sessions, MCP |
harmony.tasks | Tasks and "my day" |
harmony.sample.embed-notes | Minimal worked example |
Trust model
v1 is trusted-only. An operator installs and enables a plugin; there is no public marketplace and
no untrusted sandbox. clientEntry scripts load from the same origin or from an explicit origin
allowlist.
Not an extension point for untrusted code
A plugin runs with the same trust as the server. Treat installation as you would treat installing a dependency that runs in your process.
Where plugin code runs
| Part | Runs on |
|---|---|
| Client module | Each client (bundled in) |
| Server module | The main server |
| Worker module | A worker machine, if present |
Client assets are staged into the web app's public/plugins/ at build time; the server discovers
installed packages under $HARMONY_HOME/plugins/<id>/.
Next: Plugin authoring.