sha256:3eb00695f9cc445aed63cf651c169a589f0cf6143b6db57997193a2488731592
Last pushed
about 1 hour by dhibot
Type
Sandbox Kit
Manifest digest
sha256:3eb00695f9cc445aed63cf651c169a589f0cf6143b6db57997193a2488731592
schemaVersion: "3"
displayName: Hermes Agent (mixin)
author: Docker, Inc. https://docker.com
description: Hermes Agent overlay for a shell workload, with native ACP and provider credential setup.
sourceUrl: https://github.com/docker-hardened-images/definitions
version: 0.23.1
licenses:
- MIT
kind: mixin
provides:
- [email protected]
capabilities:
- type: com.docker.sandbox/network-policy@1
config:
runtime:
allow:
- openrouter.ai:443
- '*.openrouter.ai:443'
- api.openai.com:443
- api.anthropic.com:443
- platform.claude.com:443
- models.dev:443
- opencode.ai:443
- github.com:443
- api.github.com:443
- raw.githubusercontent.com:443
- api.githubcopilot.com:443
- api.individual.githubcopilot.com:443
- api.business.githubcopilot.com:443
- api.enterprise.githubcopilot.com:443
- copilot.github.com:443
- hermes-agent.nousresearch.com:443
- type: com.docker.sandbox/credential@1
optional: true
config:
apiKey:
inject:
- domain: api.anthropic.com
format: '%s'
header: x-api-key
name: ANTHROPIC_API_KEY
proxyManaged: true
oauth:
credentialFile:
path: ~/.claude/.credentials.json
structure:
claudeAiOauth:
accessToken: '{{.AccessToken}}'
expiresAt: '{{.ExpiresAt}}'
refreshToken: '{{.RefreshToken}}'
scopes: '{{.Scopes}}'
resourceHosts:
- api.anthropic.com
sentinels:
accessToken: sk-ant-oat01-proxy-managed
refreshToken: sk-ant-ort01-proxy-managed
tokenEndpoint:
host: platform.claude.com
path: /v1/oauth/token
phase: runtime
service: anthropic
description: Anthropic API access (API key or claude.ai OAuth)
- type: com.docker.sandbox/credential@1
optional: true
config:
apiKey:
inject:
- domain: api.openai.com
format: Bearer %s
header: Authorization
name: OPENAI_API_KEY
proxyManaged: true
phase: runtime
service: openai
description: OpenAI API access
- type: com.docker.sandbox/credential@1
optional: true
config:
apiKey:
inject:
- domain: openrouter.ai
format: Bearer %s
header: Authorization
name: OPENROUTER_API_KEY
proxyManaged: true
phase: runtime
service: openrouter
description: OpenRouter API access (200+ models)
- type: com.docker.sandbox/credential@1
optional: true
config:
apiKey:
inject:
- domain: api.githubcopilot.com
format: Bearer %s
header: Authorization
- domain: api.individual.githubcopilot.com
format: Bearer %s
header: Authorization
- domain: api.business.githubcopilot.com
format: Bearer %s
header: Authorization
- domain: api.enterprise.githubcopilot.com
format: Bearer %s
header: Authorization
- domain: copilot.github.com
format: Bearer %s
header: Authorization
name: COPILOT_GITHUB_TOKEN
proxyManaged: true
phase: runtime
service: copilot
description: GitHub Copilot model access
- type: com.docker.sandbox/lifecycle@1
config:
startup:
- command:
- sh
- /opt/hermes-agent/bin/hermes-credential-auth.sh
description: Resolve which of the anthropic/openai/openrouter/copilot credentials are genuinely bound, record the result for `sbx exec` login shells, and pin the active provider in config.yaml (Anthropic, then OpenAI, then Copilot; OpenRouter or nothing bound keeps the image default)
env:
- HERMES_HOME
- SBX_CRED_ANTHROPIC_MODE
- SBX_CRED_OPENAI_MODE
- SBX_CRED_OPENROUTER_MODE
- SBX_CRED_COPILOT_MODE
user: "1000"
- type: com.docker.sandbox/agent-context@1
optional: true
config:
content: Hermes is installed at /usr/local/bin/hermes. Credentials are proxy-managed. Do not print or replace credential sentinels. Runtime package installation is disabled; the image includes the Anthropic and ACP extras.
directory: /home/agent
filename: AGENTS.md
- type: com.docker.sandbox/agent-context@2
optional: true
config:
content: Hermes is installed at /usr/local/bin/hermes. Credentials are proxy-managed. Do not print or replace credential sentinels. Runtime package installation is disabled; the image includes the Anthropic and ACP extras.
directory: /home/agent
filename: AGENTS.md
- type: com.docker.sandbox/agent-sessions@1
optional: true
config:
continue:
- --continue
prompt:
- chat
- --oneshot
- --query={{.Prompt}}
resume:
- --resume
- '{{.SessionID}}'
- type: com.docker.sandbox/agent-interactive-sessions@1
optional: true
config:
continue:
- --continue
prompt:
- chat
- --query={{.Prompt}}
resume:
- --resume
- '{{.SessionID}}'
- type: com.docker.sandbox/acp@1
optional: true
config:
agent: hermes-agent
command:
- hermes
- acp
args:
version:
required: true
description: hermes-agent release to install, without the tag's leading "v"
pattern: ^[0-9]+\.[0-9]+\.[0-9]+$
buildArg: VERSION