Skip to main content

Overview

Plugins add interactive features to Radarboard — task managers, note-taking, bookmarks, RSS readers, and more. Each plugin lives in its own package under plugins/ and provides:
  • An overlay UI — side panel, modal, fullscreen, or mini-HUD
  • Scoped storage — key-value DB for plugin data
  • MCP tools (optional) — AI assistant actions
  • Dashboard widgets (optional) — embed data in the grid
  • Cross-plugin communication (optional) — intents and RPC

Prerequisites

  • Radarboard dev environment set up (Setup Guide)
  • Familiarity with React and TypeScript

Step 1: Scaffold

This creates plugins/my-plugin/ with a working overlay, registers it in radarboard.config.ts, and runs pnpm install.

Step 2: Build the Overlay

Edit src/components/my-plugin-overlay.tsx. The component receives api: PluginAPI:

PluginAPI Reference

Step 3: Configure the Descriptor

Edit src/index.ts:

Presentation Modes

Step 4: Add Settings (Optional)

Let users configure your plugin without editing code:
Read settings in your component:

Step 5: Test

Run conformance tests (included in the scaffold):
For unit testing with the mock API:

Optional: Add MCP Tools

Let the AI assistant interact with your plugin:

Optional: Contribute Dashboard Widgets

Plugins can embed widgets in the dashboard grid:

Optional: Cross-Plugin Communication

Intents (receive data from other plugins)

Services (expose RPC methods)

Module Boundaries

Plugins can only import from:
  • @radarboard/plugin-sdk
  • @radarboard/types
  • @radarboard/utils
  • @radarboard/ui
  • @radarboard/widget-engine
  • @radarboard/embedding-service
  • @radarboard/llm

Reference

  • Full type reference: @radarboard/plugin-sdk/types
  • UI components: @radarboard/plugin-sdk/components/*
  • Testing utilities: @radarboard/plugin-sdk/testing
  • Real examples: plugins/tasks/, plugins/notes/, plugins/bookmarks/
  • Extension rules: CONTRIBUTING-EXTENSIONS.md