Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ These are **not bundled with `hermes-agent`**. The core repo ships only the plug

| Plugin | Surface | Demonstrates |
|---|---|---|
| [`profile-studio`](./profile-studio) | Desktop `PANES_AREA` + `SIDEBAR_NAV_AREA` + `PALETTE_AREA` | Agent profile management pane — roster, identity sheet, Persona-to-SOUL generator, model picker | **desktop** |
| [`plugin-llm-example`](./plugin-llm-example) | `ctx.llm.complete_structured()` | Host-owned structured LLM calls — typed text/image input, JSON Schema validation, trust-gate config |
| [`plugin-llm-async-example`](./plugin-llm-async-example) | `ctx.llm.acomplete()` + `asyncio.gather()` | Async LLM lane — concurrent forward + sentiment + back-translation pass for `/translate` |
| [`example-dashboard`](./example-dashboard) | `dashboard/manifest.json` | Bare-minimum dashboard plugin — a tab, a slot injection, a backend route |
Expand All @@ -20,7 +21,7 @@ Each directory is a self-contained plugin. To run one in your own Hermes Agent s
```bash
git clone https://github.com/NousResearch/hermes-example-plugins.git

# pick whichever you want
# pick whichever you want — Python gateway plugins
cp -r hermes-example-plugins/plugin-llm-example ~/.hermes/plugins/
cp -r hermes-example-plugins/plugin-llm-async-example ~/.hermes/plugins/
cp -r hermes-example-plugins/example-dashboard ~/.hermes/plugins/
Expand All @@ -29,6 +30,10 @@ cp -r hermes-example-plugins/strike-freedom-cockpit ~/.hermes/plugins/
# enable any with a slash command surface
hermes plugins enable plugin-llm-example
hermes plugins enable plugin-llm-async-example

# Desktop plugin — install to ~/.hermes/desktop-plugins/ instead
cp -r hermes-example-plugins/profile-studio ~/.hermes/desktop-plugins/
# Desktop plugins hot-reload automatically; no enable needed
```

For dashboard plugins, restart the web UI (or `GET /api/dashboard/plugins/rescan`) to pick up the new tab. To uninstall, `rm -rf ~/.hermes/plugins/<name>` and the corresponding rescan / `hermes plugins disable`.
Expand All @@ -41,6 +46,7 @@ Pair each plugin in this repo with its docs page:

| Plugin here | Docs page |
|---|---|
| `profile-studio` | [Desktop Plugin SDK](https://hermes-agent.nousresearch.com/docs/developer-guide/desktop-plugin-sdk) |
| `plugin-llm-example` | [Plugin LLM Access](https://hermes-agent.nousresearch.com/docs/developer-guide/plugin-llm-access) |
| `plugin-llm-async-example` | [Plugin LLM Access](https://hermes-agent.nousresearch.com/docs/developer-guide/plugin-llm-access) |
| `example-dashboard` | [Extending the Dashboard](https://hermes-agent.nousresearch.com/docs/user-guide/features/extending-the-dashboard) |
Expand Down
38 changes: 38 additions & 0 deletions profile-studio/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Profile Studio — desktop plugin example

A Hermes Desktop plugin that gives every profile a persona card: roster grid, identity sheet, Persona-to-SOUL generator, and model picker.

**This is a Desktop Plugin SDK example** — it runs in the Electron desktop app, not in the Python gateway. Install differs from the Python plugin examples in this repo.

## Surface demonstrated

| Surface | Area | Demonstrates |
|---|---|---|
| Static pane | `PANES_AREA` | A `placement: 'main'` pane with `uncloseable: false`, using `host.request('pane.focus')` for auto-open |
| Palette command | `PALETTE_AREA` | `⌘K` action with keywords and a run handler |
| Sidebar nav | `SIDEBAR_NAV_AREA` | Left sidebar row that focuses the pane on click |
| REST bridge | `window.hermesDesktop.api()` | Profile CRUD, SOUL read/write, model assignment via `/api/profiles` and `/api/model/set` |
| Session spawn | `host.request('session.create')` + `host.onEvent('message.delta')` | AI SOUL generation in a throwaway session |

## Install (desktop)

```bash
git clone https://github.com/0-CYBERDYNE-SYSTEMS-0/profile-studio.git
cp -r profile-studio ~/.hermes/desktop-plugins/
```

Hermes hot-reloads desktop plugins within seconds. Look for **Studio** in the left sidebar, or `⌘K → Profile Studio`.

## File structure

```
profile-studio/
└── plugin.js # Single-file desktop plugin, plain ESM
```

Single-file, zero build step, zero deps beyond `@hermes/plugin-sdk` and `react/jsx-runtime`. ~870 LOC — see the notes in the file for namespace conventions and SDK import patterns.

## Companion docs

- [Desktop Plugin SDK](https://hermes-agent.nousresearch.com/docs/developer-guide/desktop-plugin-sdk) — the API surface this plugin uses
- Full distribution: [github.com/0-CYBERDYNE-SYSTEMS-0/profile-studio](https://github.com/0-CYBERDYNE-SYSTEMS-0/profile-studio)
Loading