Plugin Custom UI

How plugins extend the QNTX frontend with custom element types, rendering, and real-time updates.

Problem

Plugins are process-isolated gRPC services. They can register HTTP endpoints (/api/{plugin}/*) and WebSocket handlers, but the frontend has no mechanism for plugins to:

All element types are hardcoded in element-registry.ts at build time. A plugin like qntx-code that wants a "Go Editor" element or a biotech plugin that wants a "Protein Viewer" element has no extension point.

Current Implementation

AT Protocol plugin (qntx-atproto) provides a feed element using server-rendered HTML fragments. The plugin serves HTML via HTTP endpoint, frontend fetches and mounts it into the element content area.

Plugins implement the UIPlugin interface which returns ElementDef structs defining custom element types.

Example

AT Protocol plugin (qntx-atproto) provides a feed element (🦋) showing Bluesky posts.

TODO

Status

Python plugin has not been migrated to custom UI yet.

Links