Skip to content

feat(dashboard): add Profiles management page (minimal) - #16324

Closed
VinceZcrikl wants to merge 3 commits into
NousResearch:mainfrom
VinceZcrikl:feat/dashboard-profiles-minimal
Closed

feat(dashboard): add Profiles management page (minimal)#16324
VinceZcrikl wants to merge 3 commits into
NousResearch:mainfrom
VinceZcrikl:feat/dashboard-profiles-minimal

Conversation

@VinceZcrikl

Copy link
Copy Markdown

Summary

A minimal first cut of a dashboard surface for managing isolated Hermes profiles. Adds a sidebar Profiles entry and a /profiles page covering the most common lifecycle actions:

  • list profiles (model/provider, skill count, path, default badge)
  • create new profile (name + optional "Clone config from default" checkbox)
  • rename (inline edit, client-side regex validation matching profiles.py)
  • delete (with typed-confirmation dialog)
  • edit SOUL.md per profile (inline expand panel)
  • copy CLI command hermes -p <name> to clipboard for terminal hand-off

The backend is a thin REST adapter over hermes_cli.profiles — six endpoints, no logic duplication.

Out of scope (intentional)

Listed here so reviewers know what's deliberately missing — these belong in follow-up PRs:

This PR purposely does not add a profile switcher — the page is a self-contained CRUD surface that complements rather than overlaps with #13823 / #9496.

Endpoints added

Method Path Body
GET /api/profiles
POST /api/profiles { name, clone_from_default }
PATCH /api/profiles/{name} { new_name }
DELETE /api/profiles/{name}
GET /api/profiles/{name}/soul
PUT /api/profiles/{name}/soul { content }

DELETE always passes yes=True to the CLI's delete_profile() since the dashboard collects the user's confirmation in its own dialog.

Test plan

  • pytest tests/hermes_cli/test_web_server.py -k profile — 7 new tests, all pass
  • cd web && npm run build — clean
  • manual: run hermes dashboard, visit /profiles, exercise create / rename / SOUL edit / copy-cmd / delete

Screenshots

(to be added after testing locally)

Adds a new /profiles page to the web dashboard for the most common
profile lifecycle actions, plus the backing REST endpoints that wrap
hermes_cli.profiles. Scope is intentionally narrow so the diff is
easy to review:

UI
- Sidebar "Profiles" entry (Users icon)
- Create form: name + "Clone config from default" checkbox; client-side
  validation against the same regex profiles.py enforces
- List of profiles with model/provider, skill count, path, default
  badge, env-configured badge
- Per-row actions: edit SOUL.md (inline expand), copy CLI command
  ``hermes -p <name>`` to clipboard, rename (inline edit + Enter to
  submit), delete (with typed confirmation dialog)

Out of scope on purpose (left for follow-up PRs):
- gateway running status / restart action
- per-profile model picker
- import / export
- shared-token conflict detection

Backend
- GET    /api/profiles
- POST   /api/profiles            { name, clone_from_default }
- PATCH  /api/profiles/{name}     { new_name }
- DELETE /api/profiles/{name}     (server skips CLI's typed-confirm
                                   prompt; the dashboard collects it)
- GET    /api/profiles/{name}/soul
- PUT    /api/profiles/{name}/soul

Test plan
- pytest tests/hermes_cli/test_web_server.py -k profile  (7 new tests
  cover list, create+rename+delete round-trip, validation rejection,
  default profile guard, missing-profile 404, SOUL round-trip)
- cd web && npm run build  (clean)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard labels Apr 27, 2026
Replace the bare ``Profiles`` sidebar label with ``Profiles: Running
Multiple Agents`` so first-time users can tell what the page is
without clicking. Switch every Chinese ``配置档`` occurrence to
``多Agent配置`` since the literal translation didn't carry the
multi-agent intent the page is for.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@VinceZcrikl

Copy link
Copy Markdown
Author
image

@VinceZcrikl

Copy link
Copy Markdown
Author

close as duplicate with #16419

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants