Skip to content

Dashboard memory provider switching (salvage of #57425) - #60569

Merged
teknium1 merged 2 commits into
mainfrom
salvage/57425-dashboard-memory-provider
Jul 8, 2026
Merged

Dashboard memory provider switching (salvage of #57425)#60569
teknium1 merged 2 commits into
mainfrom
salvage/57425-dashboard-memory-provider

Conversation

@teknium1

@teknium1 teknium1 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Hosted dashboard users can now switch and configure memory providers safely, with dependency install and readiness gating built in — no CLI access to hermes memory setup required.

Salvage of #57425 by @shannonsands, cherry-picked onto current main (clean pick), authorship preserved.

Changes

  • hermes_cli/web_server.py: provider metadata endpoints (readiness, missing deps, write-only secrets), setup endpoint installing declared pip/external dependencies, schema-driven provider config API
  • web/src/pages/PluginsPage.tsx: provider switcher + schema-driven config forms + inline setup results, activation gated on readiness
  • web/src/pages/SystemPage.tsx: memory provider status card, routes credential edits to Plugins
  • web/src/lib/api.ts: client bindings
  • tests/hermes_cli/test_web_server.py: +217 lines of endpoint coverage

Validation

Check Result
scripts/run_tests.sh tests/hermes_cli/test_web_server.py 353 passed, 0 failed
python -m py_compile hermes_cli/web_server.py OK
npm run typecheck (web) clean

Infographic

dashboard-memory-provider

@alt-glitch alt-glitch added type/feature New feature or request comp/dashboard Web dashboard / control panel UI (dashboard/, landing) tool/memory Memory tool and memory providers P3 Low — cosmetic, nice to have labels Jul 8, 2026
…p commands

Strict charset allowlist (alnum + - _, max 64) on the {name} path param of
the memory-provider config/setup endpoints. Prevents traversal-shaped names
from reaching find_provider_dir(), and setup now 404s when neither a
loadable provider nor a plugin manifest exists, so the command-running path
is only reachable for discoverable plugins. Adds regression tests.
@teknium1
teknium1 merged commit d9a4b5a into main Jul 8, 2026
36 checks passed
@teknium1
teknium1 deleted the salvage/57425-dashboard-memory-provider branch July 8, 2026 00:27
erosika added a commit to erosika/hermes-agent that referenced this pull request Jul 8, 2026
… config

Main's NousResearch#60569 (dashboard memory provider switching) rewrote the same
GET/PUT /api/memory/providers/{name}/config routes this PR owns — the
dashboard and desktop share one backend. Resolve by dispatching: providers
that declare a config_schema.py get the declared path (host-block storage,
locked honcho writes, profile scoping, actions); everything else keeps
main's instance get_config_schema()/save_config path unchanged, so the
dashboard's PluginsPage behavior is preserved for instance providers.
Setup manifests, the /setup endpoint, provider switching, and name
validation from NousResearch#60569 apply to both paths. Instance payloads gain the
docs_url/actions keys the desktop panel expects; declared payloads gain
the setup block the dashboard expects. Main's hindsight/honcho instance-
schema tests are updated for the dispatch, and its status test gets the
HOME pin it was missing (it read the developer's real ~/.honcho).
randlee pushed a commit to randlee/hermes-agent that referenced this pull request Aug 11, 2026
… config

Main's NousResearch#60569 (dashboard memory provider switching) rewrote the same
GET/PUT /api/memory/providers/{name}/config routes this PR owns — the
dashboard and desktop share one backend. Resolve by dispatching: providers
that declare a config_schema.py get the declared path (host-block storage,
locked honcho writes, profile scoping, actions); everything else keeps
main's instance get_config_schema()/save_config path unchanged, so the
dashboard's PluginsPage behavior is preserved for instance providers.
Setup manifests, the /setup endpoint, provider switching, and name
validation from NousResearch#60569 apply to both paths. Instance payloads gain the
docs_url/actions keys the desktop panel expects; declared payloads gain
the setup block the dashboard expects. Main's hindsight/honcho instance-
schema tests are updated for the dispatch, and its status test gets the
HOME pin it was missing (it read the developer's real ~/.honcho).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/dashboard Web dashboard / control panel UI (dashboard/, landing) P3 Low — cosmetic, nice to have tool/memory Memory tool and memory providers type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants