Plugins

Installing and Enabling Plugins

Installing and Enabling Plugins

There is no install step. First-party plugins are compiled into the docu.nexus server and web bundle. They register themselves when the application boots.

How a plugin loads

At startup the server runs the same sequence for every plugin:

  1. Register. The plugin’s manifest (id, name, version, description, capabilities, optional SKU) is read and the plugin is added to the loaded set.
  2. Migrate. The plugin’s database migrations run against your database. Plugin migrations are tracked separately from core migrations, in a plugin_migrations table, so a plugin can add a migration at any time without disturbing the core schema.
  3. Mount routes. The plugin’s API is mounted under /api/x/<plugin-id>. Kanban lives at /api/x/kanban, Requirements at /api/x/requirements, Databases at /api/x/databases, Git Docs at /api/x/gitdocs.
  4. Register document types. Any page types the plugin provides become valid values for a page’s type, so the create menus and the page router know about them.

On the browser side, each plugin’s web entry registers its document types and admin tabs before the app renders. That is why a Board or a Requirements entry can appear in the New content menu at all.

The server logs one line per plugin (Registered plugin: kanban v0.0.1) and a count when routing is wired.

Enabling and disabling

There is no on/off switch in the UI. A plugin is either entitled or it is not, and entitlement comes from your license key.

  • A plugin with no SKU (Databases, Git Docs, Whiteboard, the agent surface) is always active.
  • A plugin with a SKU (Kanban, Requirements) is active only when the installed license key lists that SKU.

To turn a paid plugin on: buy the add-on, then paste the updated key under Admin -> Licensing. The change takes effect without a restart.

Where plugin settings live

Each plugin owns its own tab in the Admin panel. Open Admin, and the plugin tabs sit under a Plugins heading below the core groups.

TabOwned byWhat it configures
KanbanKanban pluginThe GitLab connections this nexus may use, connection status, and a connection test
RequirementsRequirements pluginDefaults applied to new collections: item labels, key prefix, statuses, priorities, verification methods, trace link types
DatabasesDatabases pluginThe live storage backend, a connection tester, and external data sources

Admin tabs are visible only to admins, and each tab enforces its own permission check. The Kanban and Requirements tabs need you to be an owner or admin of the selected nexus; if you are not, the tab says so rather than failing silently.

What “not entitled” means

When your license does not cover a plugin, the plugin is locked, not uninstalled. Three things happen:

  • The API refuses. Any request to /api/x/<plugin> returns HTTP 403 with Plugin not entitled and the message This instance's license does not entitle the "<plugin>" plugin. This is the real paywall.
  • Pages show a locked panel. Opening an existing board or collection renders “Kanban is locked” with the explanation “Your current licence does not include this plugin.” An instance administrator also gets an Open Licensing button; everyone else is asked to have an instance administrator add the licence key.
  • Create menus hide the type. The plugin’s page type disappears from the New content menu and the space rail, because creating it would be rejected anyway.

A plugin page that says it could not be loaded is not locked. The app could not get the list of plugins from the server, so it does not yet know what your licence covers. Press Try again in a moment, or open another plugin page.

When the Requirements licence lapses

Requirements is not locked when its licence lapses. It becomes read-only, so the work in it is never hidden from you:

  • Everything can still be read. Collections open as before, with the grid, the trace canvas, the verification matrix, baselines, version history and the schema report. An agent can still use the Requirements tools that read.
  • Nothing can be changed. Adding, editing or deleting requirements, traces, fields, systems and baselines is refused, and so are workflow changes, sign-off, renumbering and applying a template. Each refusal says the Requirements licence has lapsed. The collection’s header reads read-only (licence lapsed).
  • No new collections. A collection is a page type the licence sells, so the New content menu does not offer it.

Install a key that covers Requirements and the collections are editable again at once, with no restart. This applies to an instance that has used Requirements. On an instance that never had it, Requirements is locked as described above.

Checking what is loaded

GET /api/plugins lists every loaded plugin with its id, name, version, description, capabilities, SKU, whether it is entitled, and whether it is read-only after a lapse. It is useful when you are diagnosing a locked feature and want to see what the server thinks your key covers.