sha256:10ed88f0fa5e301fad2da1facc879b9a1d77059e2f6c072e7129bc042421a0d7
Last pushed
about 19 hours by sbx
Type
Sandbox Kit
Manifest digest
sha256:10ed88f0fa5e301fad2da1facc879b9a1d77059e2f6c072e7129bc042421a0d7
schemaVersion: "3"
displayName: Hermes Agent (mixin)
description: Nous Research's self-improving agent as a mixin — the Hermes install in an overlay, with the Anthropic, OpenAI and OpenRouter credentials, the egress policy its provider resolution needs, and the startup hook that works out which of the three is genuinely bound. Layer it onto a shell base and run `hermes`.
version: 2026.9.14
kind: mixin
provides:
- [email protected]
capabilities:
- type: com.docker.sandbox/network-policy@1
config:
runtime:
allow:
- openrouter.ai
- '*.openrouter.ai'
- api.openai.com
- api.anthropic.com
- platform.claude.com
- models.dev
- opencode.ai
- github.com
- api.github.com
- raw.githubusercontent.com
- api.githubcopilot.com
- api.individual.githubcopilot.com
- api.business.githubcopilot.com
- api.enterprise.githubcopilot.com
- copilot.github.com
- hermes-agent.nousresearch.com
- 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
phase: runtime
service: copilot
description: GitHub Copilot model access
- type: com.docker.sandbox/lifecycle@1
config:
startup:
- command:
- sh
- /home/agent/.local/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 when only an Anthropic OAuth login or only Copilot is bound
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
config:
contentFile: /usr/share/sandbox/kit/hermes-agent-mixin/hermes-agent-mixin-context.md
args:
version:
default: 2026.9.14
description: hermes-agent release to install, without the tag's leading "v"
pattern: ^[0-9]{4}\.[0-9]{1,2}\.[0-9]{1,2}(\.[0-9]+)?$
buildArg: HERMES_VERSION