Problem or Use Case
Hermes profiles are useful as isolation boundaries: different configs, sessions, credentials, tools, models, memory, and runtime policies can live under separate profiles.
The web dashboard should reflect that same profile boundary. Today, dashboard UI/customization is effectively shared at the application/code level, so a custom dashboard design or org-chart view can feel global even when the underlying runtime data is profile-specific.
This is especially important when profiles represent different operating modes or teams, for example:
- a main AI development team profile with an org chart and role-execution evidence
- a production/release profile with stronger warnings and deployment-oriented UI
- a reviewer/read-only profile with validation-focused dashboards
- an upstream-contribution profile with clean/default branding
- a low-latency VS Code profile with reduced dashboard surface area
Users should be able to tell immediately which profile they are looking at and should be able to give each profile its own dashboard identity without maintaining separate dashboard forks or custom code branches.
Related existing issues:
This request is specifically for profile-scoped dashboard design/identity/customization, not only profile switching or data scoping.
Proposed Solution
Add first-class profile-specific dashboard customization, driven by profile config rather than hardcoded dashboard source edits.
Suggested profile config shape:
dashboard:
title: "Kinni Team"
subtitle: "AI development control room"
theme: "kinni-dark"
logo: "kinni-logo.svg"
accent_color: "#FA4E4A"
org_chart_registry: "kinni-org-chart.registry.yaml"
default_route: "/org-chart"
visible_nav:
- overview
- sessions
- analytics
- org-chart
- config
Expected behavior:
-
Dashboard launched under a profile reads that profile's dashboard config.
- Example:
hermes --profile kinni-team dashboard --port 9119
- Example:
hermes --profile reviewer dashboard --port 9120
-
The active profile is always visible in the dashboard header.
- Include profile name, config path, and optionally whether this is the default/sticky profile.
- Make production/release profiles visually distinct enough to prevent mistakes.
-
Branding/theme/logo are profile-scoped.
- A profile can set a title, logo, default theme, accent palette, and dashboard metadata.
- This should not require editing shared dashboard source files.
-
Org-chart and role-team metadata can be profile-scoped.
- A profile can point to a profile-specific org chart registry.
- If omitted, dashboard falls back to the built-in/default org chart.
- This lets one profile have a Kinni/NoblePro role-team view while another stays generic Hermes.
-
Dashboard APIs should expose profile identity and profile-scoped metadata.
/api/dashboard/profile or similar could return active profile, profile home, config path, theme/branding config, and dashboard capabilities.
- Existing dashboard endpoints should remain scoped to the active profile's state/config.
-
Support both approaches:
- running separate dashboard instances per profile on different ports
- optional future multi-profile dashboard switcher/overview
-
Avoid dashboard forks.
- The intended pattern is one shared dashboard codebase that renders differently from profile config.
Alternatives Considered
- Keep one shared dashboard design for all profiles. This is simpler, but makes profiles less useful as distinct operational contexts and increases the risk of confusing production/release/reviewer/team dashboards.
- Maintain separate dashboard code branches per profile. This would work visually but would drift quickly and make updates harder.
- Only add a profile switcher. Useful, but insufficient unless each profile can also define its own identity/theme/registry.
Feature Type
Configuration option; Dashboard / UI improvement; Developer experience.
Scope
Medium to large.
A phased implementation could be:
- expose active profile identity in the dashboard header and API
- add profile-scoped dashboard title/theme/logo config
- add profile-scoped org-chart registry path
- add optional profile switcher / multi-profile overview
Acceptance Criteria
Problem or Use Case
Hermes profiles are useful as isolation boundaries: different configs, sessions, credentials, tools, models, memory, and runtime policies can live under separate profiles.
The web dashboard should reflect that same profile boundary. Today, dashboard UI/customization is effectively shared at the application/code level, so a custom dashboard design or org-chart view can feel global even when the underlying runtime data is profile-specific.
This is especially important when profiles represent different operating modes or teams, for example:
Users should be able to tell immediately which profile they are looking at and should be able to give each profile its own dashboard identity without maintaining separate dashboard forks or custom code branches.
Related existing issues:
This request is specifically for profile-scoped dashboard design/identity/customization, not only profile switching or data scoping.
Proposed Solution
Add first-class profile-specific dashboard customization, driven by profile config rather than hardcoded dashboard source edits.
Suggested profile config shape:
Expected behavior:
Dashboard launched under a profile reads that profile's dashboard config.
hermes --profile kinni-team dashboard --port 9119hermes --profile reviewer dashboard --port 9120The active profile is always visible in the dashboard header.
Branding/theme/logo are profile-scoped.
Org-chart and role-team metadata can be profile-scoped.
Dashboard APIs should expose profile identity and profile-scoped metadata.
/api/dashboard/profileor similar could return active profile, profile home, config path, theme/branding config, and dashboard capabilities.Support both approaches:
Avoid dashboard forks.
Alternatives Considered
Feature Type
Configuration option; Dashboard / UI improvement; Developer experience.
Scope
Medium to large.
A phased implementation could be:
Acceptance Criteria
hermes --profile <name> dashboardclearly shows the active profile in the dashboard header.hermes profile show <name>orhermes config checkreports the dashboard customization source and warns on missing logo/registry files.