You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow delegate_task to spawn subagents from named agent profiles defined in config.yaml, so users can build custom orchestration harnesses (similar to oh-my-opencode-slim's Pantheon agents) without modifying Hermes core.
Problem
Currently, delegate_task creates subagents as clones of the parent agent with limited customization:
Aspect
Current State
Limitation
System prompt
Hardcoded template in _build_child_system_prompt() — only goal and context are customizable
No way to give subagents distinct personas or behavioral roles
Model
Single global delegation.model — all subagents share the same model
Cannot assign cheap models to simple tasks and expensive models to complex ones
Tool scoping
Toolset-group level (terminal, file, web)
Cannot express "read-only filesystem" or "no shell access" per agent
Delegation routing
The parent LLM decides ad-hoc which task goes to which subagent
No systematic routing rules; no way to define "explorer" vs "fixer" vs "reviewer" roles
Profile concept
None — every subagent is an anonymous clone
Users cannot define, name, and reuse agent configurations
This means building multi-agent orchestration patterns (e.g., "route codebase exploration to a fast/cheap model, architectural decisions to a strong model, UI work to a specialist") requires either:
A skill that manually constructs the right context string for each delegation — fragile, not composable
An external agent CLI via acp_command — loses Hermes integration (memory, tools, config)
Modifying Hermes core — defeats the purpose of a user-facing feature
delegate_task(
goal="Analyze the codebase structure",
profile="explorer", # <-- new parameter
)
When profile is specified:
Load the named profile from agent_profiles config
Use the profile's model instead of delegation.model
Use the profile's system_prompt_file (or inline system_prompt) instead of _build_child_system_prompt()
Use the profile's toolsets intersection with parent's enabled toolsets
Use the profile's max_iterations if set
Use the profile's delegation (provider/api_key) overrides if set
When profile is omitted, behavior is unchanged (backward compatible).
3. Batch mode with mixed profiles
delegate_task(tasks=[
{"goal": "Find all API endpoints", "profile": "explorer"},
{"goal": "Review the auth module architecture", "profile": "oracle"},
{"goal": "Fix the failing test in test_auth.py", "profile": "fixer"},
])
4. Profile prompt resolution
Priority (highest wins):
profile.system_prompt — inline prompt in config
profile.system_prompt_file — external .md file
Fallback to current _build_child_system_prompt(goal, context) behavior
This lets users either embed short prompts in config or maintain separate prompt files.
Use Cases
Use Case 1: Cost-optimized delegation (personal)
Currently all subagents run on the same model as the parent. With profiles:
This alone can cut subagent costs by 50-80% for mixed workloads.
Use Case 2: Custom orchestration harness (project-specific)
A WordPress renewal project could define:
wp-designer — UI/UX specialist with browser + design skills
wp-deployer — SSH deployment specialist with terminal only
wp-reviewer — QA reviewer with browser + vision
The orchestrator (main agent) routes work to the right specialist based on the task type.
Use Case 3: oh-my-opencode-slim parity
oh-my-opencode-slim implements a "Pantheon" of 6 specialized agents (Orchestrator, Explorer, Librarian, Oracle, Designer, Fixer) with per-agent model/tool/prompt configuration and a Council multi-model consensus system. Agent profiles would allow Hermes users to replicate this pattern natively.
Use Case 4: Team/organization profiles
Different teams could maintain different profile sets:
Dynamic profile switching mid-session — profiles are static config
Profile inheritance/composition — each profile is self-contained (no base+override pattern)
Built-in profiles — no default profiles shipped; users define their own
Related Issues
This feature overlaps with several existing proposals. Rather than subsuming them, this issue focuses specifically on the config-level profile definition + delegate_task integration:
Summary
Allow
delegate_taskto spawn subagents from named agent profiles defined inconfig.yaml, so users can build custom orchestration harnesses (similar to oh-my-opencode-slim's Pantheon agents) without modifying Hermes core.Problem
Currently,
delegate_taskcreates subagents as clones of the parent agent with limited customization:_build_child_system_prompt()— onlygoalandcontextare customizabledelegation.model— all subagents share the same modelterminal,file,web)This means building multi-agent orchestration patterns (e.g., "route codebase exploration to a fast/cheap model, architectural decisions to a strong model, UI work to a specialist") requires either:
contextstring for each delegation — fragile, not composableacp_command— loses Hermes integration (memory, tools, config)Proposed Solution
1. Config-level agent profile definitions
Add an
agent_profilessection toconfig.yaml:2. Profile-aware
delegate_taskAdd an optional
profileparameter:When
profileis specified:agent_profilesconfigmodelinstead ofdelegation.modelsystem_prompt_file(or inlinesystem_prompt) instead of_build_child_system_prompt()toolsetsintersection with parent's enabled toolsetsmax_iterationsif setdelegation(provider/api_key) overrides if setWhen
profileis omitted, behavior is unchanged (backward compatible).3. Batch mode with mixed profiles
4. Profile prompt resolution
Priority (highest wins):
profile.system_prompt— inline prompt in configprofile.system_prompt_file— external.mdfile_build_child_system_prompt(goal, context)behaviorThis lets users either embed short prompts in config or maintain separate prompt files.
Use Cases
Use Case 1: Cost-optimized delegation (personal)
Currently all subagents run on the same model as the parent. With profiles:
gemini-2.5-flash(cheap, fast)claude-opus-4(strong, expensive)llama-4-maverick(fast, capable)This alone can cut subagent costs by 50-80% for mixed workloads.
Use Case 2: Custom orchestration harness (project-specific)
A WordPress renewal project could define:
wp-designer— UI/UX specialist with browser + design skillswp-deployer— SSH deployment specialist with terminal onlywp-reviewer— QA reviewer with browser + visionThe orchestrator (main agent) routes work to the right specialist based on the task type.
Use Case 3: oh-my-opencode-slim parity
oh-my-opencode-slim implements a "Pantheon" of 6 specialized agents (Orchestrator, Explorer, Librarian, Oracle, Designer, Fixer) with per-agent model/tool/prompt configuration and a Council multi-model consensus system. Agent profiles would allow Hermes users to replicate this pattern natively.
Use Case 4: Team/organization profiles
Different teams could maintain different profile sets:
security-audit/profiles (read-only, no shell)frontend/profiles (browser + file, design skills)devops/profiles (terminal, SSH, Docker)Environment
Affected Code Paths
tools/delegate_tool.py—_build_child_agent(),_build_child_system_prompt(),DELEGATE_TASK_SCHEMA,delegate_task()hermes_cli/config.py— config loading (addagent_profilesschema)cli-config.yaml.example— documentation of new config sectionNon-Goals
Related Issues
This feature overlaps with several existing proposals. Rather than subsuming them, this issue focuses specifically on the config-level profile definition + delegate_task integration:
modelfield)Open Questions
skillsloading? (complex — requires skill resolution at delegation time)allow/deny/askrules like Kilocode's mode system (Feature: Agent Mode System — Persona + Tool Scoping + Behavioral Constraints (inspired by Kilocode) #476), or is toolset-level scoping sufficient for v1?default_profileindelegationconfig that applies whenprofileis omitted butagent_profilesare defined?