{
"id": "agent-core-impl:hermes.core@current",
"_kind": "AgentCoreImpl",
"_file": "agent-stack/core-impls/hermes-core-current.yaml",
"_cluster": "agent-stack",
"attributes": {
"displayName": "Hermes Core (current)",
"agentVersionId": "agent-version:hermes@current",
"packageRef": "source-ref:hermes-agent-pypi",
"loopIteratorPolicy": "tool-use-loop",
"loopIteratorNotes": "Python tool-use loop using `litellm` to normalize Anthropic / OpenAI / OpenRouter\nwire formats. Each turn the model emits tool calls (parallel-capable); the loop\nexecutes them via the local Python tool registry and feeds back tool results\nuntil a unified end-of-turn signal fires.\n",
"contextManagementStrategy": "platform-managed",
"compactionTriggerNotes": "Hermes delegates compaction to the active provider; no Hermes-side threshold.\nSQLite session index allows arbitrary-range replay rather than rolling summary.\n",
"subagentInvokerPolicy": "tool-call-handoff",
"subagentInvokerNotes": "Hermes models sub-tasks as nested Hermes runs spawned via a `delegate` tool;\nthe parent loop waits for the child run's session to terminate before resuming.\n",
"resultSynthesisPolicy": "model-direct",
"resultSynthesisNotes": "Final assistant text is streamed; on end-of-turn the JSONL session is flushed\nto disk and the SQLite index is updated with the new turn's offsets.\n",
"stopDetectionStrategy": "structured-end-event",
"transportClientLibrary": "hermes-internal",
"supportedTransportProtocols": [
"model-transport:anthropic-messages",
"model-transport:openai-responses",
"model-transport:openrouter"
],
"parallelToolCallHandling": "native",
"streamingFidelity": "full",
"thinkingChannelHandling": "not-supported"
},
"outgoingEdges": [
{
"from": "agent-core-impl:hermes.core@current",
"to": "layer:4-agent-core",
"kind": "realizes",
"attributes": {}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "agent:hermes",
"kind": "composes",
"attributes": {
"role": "core"
}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "model-transport:openrouter",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "model-transport:anthropic-messages",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "model-transport:openai-responses",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "capability:parallel-tool-calls",
"kind": "supports",
"attributes": {
"versionRange": ">=1.0.0",
"level": "full",
"notes": "Hermes supports parallel tool calls per agent-mux ref.\n"
}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "capability:streaming",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full"
}
},
{
"from": "agent-core-impl:hermes.core@current",
"to": "capability:supports-tool-use",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full"
}
}
],
"incomingEdges": [
{
"from": "agent-version:hermes@current",
"to": "agent-core-impl:hermes.core@current",
"kind": "composed_of",
"attributes": {
"role": "core"
}
},
{
"from": "model-transport:openrouter",
"to": "agent-core-impl:hermes.core@current",
"kind": "spoken_by",
"attributes": {}
}
]
}