feat(dashboard): add Profiles management page (minimal) - #16324
Closed
VinceZcrikl wants to merge 3 commits into
Closed
feat(dashboard): add Profiles management page (minimal)#16324VinceZcrikl wants to merge 3 commits into
VinceZcrikl wants to merge 3 commits into
Conversation
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>
3 tasks
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>
Author
Author
|
close as duplicate with #16419 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
A minimal first cut of a dashboard surface for managing isolated Hermes profiles. Adds a sidebar Profiles entry and a
/profilespage covering the most common lifecycle actions:profiles.py)SOUL.mdper profile (inline expand panel)hermes -p <name>to clipboard for terminal hand-offThe 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
/api/profiles/api/profiles{ name, clone_from_default }/api/profiles/{name}{ new_name }/api/profiles/{name}/api/profiles/{name}/soul/api/profiles/{name}/soul{ content }DELETEalways passesyes=Trueto the CLI'sdelete_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 passcd web && npm run build— cleanhermes dashboard, visit/profiles, exercise create / rename / SOUL edit / copy-cmd / deleteScreenshots
(to be added after testing locally)