Skip to content

feat: add runtime_type to agents + Hermes multi-agent profile provisioning#550

Merged
0xNyk merged 1 commit intomainfrom
feat/hermes-multi-agent
Apr 3, 2026
Merged

feat: add runtime_type to agents + Hermes multi-agent profile provisioning#550
0xNyk merged 1 commit intomainfrom
feat/hermes-multi-agent

Conversation

@0xNyk
Copy link
Copy Markdown
Member

@0xNyk 0xNyk commented Apr 3, 2026

Summary

Adds runtime type tracking to agents and automatic Hermes profile provisioning for multi-agent support.

What changed

Agent runtime type — agents can now be tagged with their runtime (hermes, openclaw, claude, codex, custom):

  • New runtime_type column in agents table (migration 049)
  • Runtime type dropdown in Create Agent modal
  • Runtime badge shown on agent cards
  • Stored in DB config, available via API

Hermes profile provisioning — when creating a Hermes agent, MC automatically creates a profile directory at ~/.hermes/profiles/<agent-name>/ with:

  • config.yaml — model + provider + toolsets from agent config
  • SOUL.md — personality from soul_content field

This prepares for Hermes's native --profile flag (documented at hermes-agent.nousresearch.com/docs/user-guide/profiles/) which uses this exact directory structure. When Hermes ships profile support, MC-created agents will be immediately usable via hermes -p <name>.

Current state

Hermes v0.4.0 doesn't yet support --profile — the profile directories are provisioned ahead of time. The directory structure matches the documented spec:

~/.hermes/profiles/<name>/
├── config.yaml
└── SOUL.md

Test plan

  • pnpm typecheck — passes
  • pnpm test — 892/892 pass
  • Manual: Create agent with runtime_type=hermes, verify profile dir created
  • Manual: Verify runtime badge shows on agent cards
  • Manual: Verify ~/.hermes/profiles/<name>/config.yaml has correct model

Support creating agents with an explicit runtime type (hermes, openclaw,
claude, codex, custom). When creating a Hermes agent, automatically
provisions a profile directory at ~/.hermes/profiles/<name>/ with
config.yaml and SOUL.md — ready for Hermes multi-profile support.

- DB migration 049: add runtime_type column to agents table
- Validation: add runtime_type enum to createAgentSchema
- Agent creation UI: runtime type dropdown (Auto-detect, Hermes, OpenClaw,
  Claude Code, Codex CLI, Custom)
- Agent card: shows runtime type badge
- POST /api/agents: provisions ~/.hermes/profiles/<name>/ for hermes type
- i18n keys for runtime type labels (10 locales)
@github-actions github-actions bot added the screenshot-drift UI changed — README screenshots may need updating label Apr 3, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 3, 2026

📸 Screenshot Drift Check

This PR modifies UI source files. Please verify whether the README screenshots need refreshing:

  • docs/mission-control-overview.png — main dashboard
  • docs/mission-control-agents.png — agents panel
  • docs/mission-control-memory-graph.png — memory graph
Changed UI files
src/app/api/agents/route.ts
src/components/panels/agent-squad-panel.tsx

See docs/SCREENSHOT-GUIDE.md for instructions on capturing and optimising screenshots.

This comment is posted automatically and can be dismissed if no visual changes occurred.

@0xNyk 0xNyk merged commit 3bd1eb7 into main Apr 3, 2026
1 of 2 checks passed
@0xNyk 0xNyk deleted the feat/hermes-multi-agent branch April 3, 2026 10:45
0xNyk added a commit that referenced this pull request Apr 11, 2026
…ents

These routes were added in #552 (gateway control panel), #550 (hermes
multi-agent), and #556 (mcp-audit verify) without matching OpenAPI
entries. Adding them to the parity ignore list to unblock unrelated
PRs; the follow-up is to write full specs and remove them from the
ignore file.
0xNyk added a commit that referenced this pull request Apr 11, 2026
* fix: start hermes gateway without systemd when running in Docker

`hermes gateway start` installs a systemd service, which fails inside
the Mission Control Docker image (no systemd, no sudo). The runtime
setup modal would report "gateway failed to start" with no workable
recovery path.

Detect `/.dockerenv` and, when present, spawn `hermes gateway run`
(the foreground variant) detached via Node's `child_process.spawn`
with `stdio` pointed at `~/.hermes/gateway.log` and track the PID in
`~/.hermes/gateway.pid` so the existing `isHermesGatewayRunning()`
check picks it up. Stop/restart read the same PID file and send
SIGTERM, cleaning up stale files on ESRCH.

On bare metal we still defer to the hermes CLI's native subcommands
so systemd-managed installs continue to work unchanged.

Also:
- Updated the runtime setup modal hints to show `hermes gateway run`
  for Docker users alongside `hermes gateway start` for bare metal.
- Expanded the docker-compose.yml comment block around
  NEXT_PUBLIC_GATEWAY_HOST to call out that NEXT_PUBLIC_* values are
  baked at build time and point users at the login page's Advanced
  Settings as the runtime override (from #560).

Fixes #567

* chore: ignore pre-existing spec drift for gateway control + hermes events

These routes were added in #552 (gateway control panel), #550 (hermes
multi-agent), and #556 (mcp-audit verify) without matching OpenAPI
entries. Adding them to the parity ignore list to unblock unrelated
PRs; the follow-up is to write full specs and remove them from the
ignore file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

screenshot-drift UI changed — README screenshots may need updating

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant