All plugins

bot-dashboard

Two desktop panes in one plugin. Bot shows the focused bot's dashboard - profile and model, scheduled jobs, notes, the custom widgets that bot pinned for you, and optional tasks and projects from a markdown notes vault you point it at in the plugin settings; Group shows a group chat's members, activity, shared tasks and projects, and follows a group chat you open. Ships two agent tools in its own bot_dashboard toolset - bot_panel edits the bot's own panel, group_dashboard lets any member bot read or shape a group's dashboard - plus a pre_llm_call hook that adds a short panel snapshot on the first turn only (and an optional per-turn instruction, empty unless the user writes one). Disclosure - reads the local Hermes home (bot profiles, config.yaml, group room records) and, only if the user sets vault_path, markdown notes in that folder; writes only each bot's own panel files (widgets, notes, layout) under its profile and, when the user creates or ticks a task, that task's note in the configured vault folder. Widgets render in a sandboxed opaque-origin frame with a no-network Content-Security-Policy. The panes talk to the Hermes API on 127.0.0.1, with no third-party network calls, no shell commands and no stored credentials. Disclosure — reads the local Hermes home (every bot profile's profile.yaml, config.yaml, SOUL.md, skills list and avatar, plus the gateway's group-room tables in state.db/shared-state.db, read-only) and, only if the user sets vault_path, markdown notes in that folder; the bot_panel/group_dashboard tools can copy any .html file the model names into a widget, and any bot can edit any local group's dashboard; writes only panel files (widgets, notes, layout) under each bot's profile and under plugin-data/bot-dashboard/groups, plus, when the user creates or ticks a task, that task's note in the configured vault folder; widgets render in a sandboxed opaque-origin frame with a no-network Content-Security-Policy; an optional panel_rule setting (empty by default) adds the user's own instruction to every turn; no third-party network calls, no shell commands, no stored credentials.

trookishDesktopv1.2.0Updated 4 hours ago

About

Two desktop panes in one plugin. Bot shows the focused bot's dashboard - profile and model, scheduled jobs, notes, the custom widgets that bot pinned for you, and optional tasks and projects from a markdown notes vault you point it at in the plugin settings; Group shows a group chat's members, activity, shared tasks and projects, and follows a group chat you open. Ships two agent tools in its own bot_dashboard toolset - bot_panel edits the bot's own panel, group_dashboard lets any member bot read or shape a group's dashboard - plus a pre_llm_call hook that adds a short panel snapshot on the first turn only (and an optional per-turn instruction, empty unless the user writes one). Disclosure - reads the local Hermes home (bot profiles, config.yaml, group room records) and, only if the user sets vault_path, markdown notes in that folder; writes only each bot's own panel files (widgets, notes, layout) under its profile and, when the user creates or ticks a task, that task's note in the configured vault folder. Widgets render in a sandboxed opaque-origin frame with a no-network Content-Security-Policy. The panes talk to the Hermes API on 127.0.0.1, with no third-party network calls, no shell commands and no stored credentials. Disclosure — reads the local Hermes home (every bot profile's profile.yaml, config.yaml, SOUL.md, skills list and avatar, plus the gateway's group-room tables in state.db/shared-state.db, read-only) and, only if the user sets vault_path, markdown notes in that folder; the bot_panel/group_dashboard tools can copy any .html file the model names into a widget, and any bot can edit any local group's dashboard; writes only panel files (widgets, notes, layout) under each bot's profile and under plugin-data/bot-dashboard/groups, plus, when the user creates or ticks a task, that task's note in the configured vault folder; widgets render in a sandboxed opaque-origin frame with a no-network Content-Security-Policy; an optional panel_rule setting (empty by default) adds the user's own instruction to every turn; no third-party network calls, no shell commands, no stored credentials.

Bot Dashboard

Two desktop panes for Hermes, in one plugin.

| Pane | Shows |
| --- | --- |
| Bot | The bot behind the chat you are looking at: profile and model, scheduled jobs, tasks, saved notes, projects, and any custom widgets that bot pinned for you. |
| Group | A group chat's dashboard: members and their state, recent activity, shared tasks and projects. Pick the group from the pane, or open the group chat in the app and the pane follows it. |

Both panes live in the right sidebar as tabs next to Files and Review, and both
read only what the app already knows — no scraping, no injected UI.

Install

From the plugin catalog (once listed):

hermes plugins install bot-dashboard

From a checkout:

git clone https://github.com/trookish/hermes-bot-dashboard
cd hermes-bot-dashboard
./deploy.sh            # every profile
./deploy.sh health     # one profile

Restart Hermes Desktop after installing. The panes appear in the right sidebar:
Bot and Group.

What each pane needs

  • The Bot pane needs nothing configured: it follows the focused chat and reads
    that bot's own home directory (profiles/<id>/panel/ for widgets, notes and
    layout, config.yaml for the profile card).
  • Tasks and projects are optional. They come from a folder of markdown notes
    (an Obsidian vault works), one note per task or project, with a frontmatter key
    naming the bot that owns it. Nothing is assumed: until you set a vault, those
    cards say so and everything else works.
  • The Group pane lists the group chats recorded in your Hermes profile. Rooms
    that a member bot hosts are opened read-only; nothing is written to them.

Settings

Settings ▸ Plugins ▸ Bot Dashboard, or hermes config set plugins.entries.bot-dashboard.settings.<key> <value>:

| Key | Default | Meaning |
| --- | --- | --- |
| vault_path | empty | Folder of your markdown notes vault. Empty hides vault data. |
| tasks_folder | TaskNotes/Tasks | Folder inside the vault with one note per task. |
| projects_folder | Projects | Folder inside the vault with one note per project. |
| owner_field | bot | Frontmatter key that names the owning bot (profile name). |
| panel_rule | empty | Optional instruction added to every turn, for example "add a panel note for each decision". |

A task note looks like this; status: open or done, due is optional:

---
title: Draft the release notes
status: open
bot: writer
tags: [task]
---

Agent tools

Two tools in the bot_dashboard toolset, so any bot can work with its
dashboards when you ask (enable the toolset with hermes tools if your platform
does not list it):

| Tool | Scope |
| --- | --- |
| bot_panel | The bot's own pane: read the layout, add, update or remove a widget, write or pin a note, reorder or hide cards. |
| group_dashboard | A group chat's pane: list_groups, then view (members, activity, tasks, projects, notes, widgets) or edit it — add a widget, leave a note, tidy the layout. Any member bot of that group can use it. |

Both return JSON, never raise, and degrade to a plain error message when a file
is busy or a group no longer exists. The plugin also registers one
pre_llm_call hook that tells the bot the panes exist — on the first turn only,
or when your message mentions the panel. Plain turns get nothing, unless you
write a panel_rule.

Custom widgets render in a sandboxed iframe (sandbox="allow-scripts", no
same-origin access) with the live theme injected, behind a Content-Security-Policy
that blocks all network access: a widget inlines its images, styles and scripts. A widget taller than its frame
scrolls inside it; Open large gives it the full window.

Privacy

Everything stays on this machine. The plugin reads Hermes' own profile data and
serves it to the pane over the local plugin host (/api/plugins/bot-dashboard/).
It makes no outbound network calls and has no telemetry. It writes only to each
bot's own panel/ folder and, when you set a vault and create or tick a task, to
that task's note. It stores one preference: the last group chat you looked at.

Accessibility

Dark and light themes are followed through the app's own CSS variables. Every
control is reachable by keyboard with a visible focus ring, member rows are
links you can open with Enter, and status is never colour-only.

Requirements

  • Hermes Desktop 0.20.0 or newer (plugin SDK: contributed panes, revealPane,
    openSession, per-plugin REST).
  • Python: PyYAML>=6.0,<7 (shipped with Hermes; declared for the installer).

Development

hermes plugins validate .          # manifest, capabilities, surface checks
python tests/test_robustness.py    # 49 backend checks
python tests/test_tools.py         # 11 agent-tool checks

Layout:

plugin.yaml               manifest (name, version, declared tools and hooks)
__init__.py               agent half: bot_panel + group_dashboard tools, pre_llm_call hook
bd_settings.py            settings and paths (hermes_constants + config.yaml)
panel_store.py            per-bot panel storage (shared by the tool and the REST half)
dashboard/plugin_api.py   REST half: /bot, /stamp, /groups, /group, /group/stamp, /task
desktop/plugin.js         desktop half: the Bot and Group panes
deploy.sh                 developer copy into the Hermes home and every profile

Edit the source, never the installed copy, and run ./deploy.sh afterwards. In the
running app, reload the renderer half with the command palette ▸
Reload desktop plugins; REST changes need a full restart.

License

MIT — see LICENSE.

README from the reviewed commit 938454e; it updates when the author re-pins.

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section