hermes-agent/web/src
Teknium 01214a7f73 feat: dashboard plugin system — extend the web UI with custom tabs
Add a plugin system that lets plugins add new tabs to the dashboard.
Plugins live in ~/.hermes/plugins/<name>/dashboard/ alongside any
existing CLI/gateway plugin code.

Plugin structure:
  plugins/<name>/dashboard/
    manifest.json     # name, label, icon, tab config, entry point
    dist/index.js     # pre-built JS bundle (IIFE, uses SDK globals)
    plugin_api.py     # optional FastAPI router mounted at /api/plugins/<name>/

Backend (hermes_cli/web_server.py):
- Plugin discovery: scans plugins/*/dashboard/manifest.json from user,
  bundled, and project plugin directories
- GET /api/dashboard/plugins — returns discovered plugin manifests
- GET /api/dashboard/plugins/rescan — force re-discovery
- GET /dashboard-plugins/<name>/<path> — serves plugin static assets
  with path traversal protection
- Optional API route mounting: imports plugin_api.py and mounts its
  router under /api/plugins/<name>/
- Plugin API routes bypass session token auth (localhost-only)

Frontend (web/src/plugins/):
- Plugin SDK exposed on window.__HERMES_PLUGIN_SDK__ — provides React,
  hooks, UI components (Card, Badge, Button, etc.), API client,
  fetchJSON, theme/i18n hooks, and utilities
- Plugin registry on window.__HERMES_PLUGINS__.register(name, Component)
- usePlugins() hook: fetches manifests, loads JS/CSS, resolves components
- App.tsx dynamically adds nav items and routes for discovered plugins
- Icon resolution via static map of 20 common Lucide icons (no tree-
  shaking penalty — bundle only +5KB over baseline)

Example plugin (plugins/example-dashboard/):
- Demonstrates SDK usage: Card components, backend API call, SDK reference
- Backend route: GET /api/plugins/example/hello

Tested: plugin discovery, static serving, API routes, path traversal
blocking, unknown plugin 404, bundle size (400KB vs 394KB baseline).
2026-04-16 04:10:06 -07:00
..
components feat: dashboard theme system with live switching 2026-04-16 02:44:32 -07:00
hooks feat: web UI dashboard for managing Hermes Agent (#8756) 2026-04-12 22:26:28 -07:00
i18n feat: dashboard theme system with live switching 2026-04-16 02:44:32 -07:00
lib feat: dashboard plugin system — extend the web UI with custom tabs 2026-04-16 04:10:06 -07:00
pages feat(dashboard): add HTTP health probe for cross-container gateway detection 2026-04-14 15:41:30 -07:00
plugins feat: dashboard plugin system — extend the web UI with custom tabs 2026-04-16 04:10:06 -07:00
themes feat: dashboard theme system with live switching 2026-04-16 02:44:32 -07:00
App.tsx feat: dashboard plugin system — extend the web UI with custom tabs 2026-04-16 04:10:06 -07:00
index.css feat: react-router, sidebar layout, sticky header, dropdown component, remove emojis, rounded corners 2026-04-14 00:01:18 -04:00
main.tsx feat: dashboard plugin system — extend the web UI with custom tabs 2026-04-16 04:10:06 -07:00