Runtime overview
Multi-runtime support and the AgentRuntime Protocol abstraction.
A runtime is the long-running process on each tenant's VPS that
takes a chat turn, calls the LLM, runs Skills, and reports usage back
to the control plane. HydraCore is multi-runtime by design: every
runtime implements the AgentRuntime Protocol so the chat proxy,
restart endpoints, health checks, and telemetry ingestion treat them
uniformly.
How runtime selection flows
- Each
Recipereferences amanifest_id(e.g.openclaw-basic). - Each
Manifestdeclares itsruntime_type(e.g.expressclaw,hermes,goose). - The provisioning worker dispatches to
_RUNTIME_TYPE_DIRS[runtime_type]for the runtime-specific bundle source. - Cloud-init's
artifact-pullfragment branches onruntime_typeto extract the bundle to the right path and start the right systemd service.
Tenants pick a runtime via the wizard's runtime-picker step (gated
behind the experimental flag for non-default runtimes) or by setting
manifest_id directly on POST /v1/instances or POST /v1/recipes/deploy.
Adding a new runtime
The Hermes (commit 2dfb8b5) and goose (commit f225a37) tracks
established the pattern:
- Add the runtime to the
RuntimeTypeLiteral, ORM CheckConstraint, and frontendRuntimeTypeunion (one alembic migration per addition). - Drop a
templates/fragments/<runtime>.yaml.j2cloud-init fragment. - Drop a
templates/runtimes/<runtime>/shim (install.sh, http-adapter.py, hydracore-emitter.py, README, pyproject.toml). - Author a
templates/manifests/<runtime>-basic.yaml+.lockwithexperimental: trueuntil the inner LLM hookup lands. - Implement
src/runtimes/<runtime>.pyagainst the AgentRuntime Protocol; register insrc/runtimes/__init__.py. - Add the runtime to
_RUNTIME_TYPE_DIRSinsrc/provisioning/bundle.py. - Branch
templates/fragments/artifact-pull.yaml.j2for the new runtime in three places (secrets-409 recovery, Phase 5 extract + install, Phase 6 service start).
The catalog below is regenerated from the live templates/manifests/
tree on every docs build.
Catalog
See Catalog for the auto-generated runtime list (every manifest with its runtime, footprint, experimental status, and source files).