OpenSandbox execution backend for Hermes Agent - secure sandboxed code execution
Project description
hermes-open-sandbox
OpenSandbox execution backend for Hermes Agent.
Run Hermes terminal and file tools inside secure, isolated OpenSandbox containers instead of your local machine.
Architecture
hermes-open-sandbox (pip package) Hermes Agent (after setup)
┌──────────────────────────────┐ ┌─────────────────────────────────┐
│ SandboxConfig │ │ tools/environments/opensandbox │
│ OpenSandboxSession │──delegates──│ - BaseEnvironment subclass │
│ - pure SDK wrapper │ │ - auto-generated by CLI │
│ - zero Hermes deps │ │ │
└──────────────────────────────┘ └─────────────────────────────────┘
The package itself has no dependency on Hermes Agent internals. The thin adapter that bridges Hermes's BaseEnvironment interface is auto-generated into the Hermes installation directory by hermes-open-sandbox-setup.
Quick Start
# 1. Install the package
pip install hermes-open-sandbox opensandbox
# 2. Patch Hermes to register the backend (idempotent)
hermes-open-sandbox-setup
# 3. Configure
hermes config set terminal.backend opensandbox
export OPENSANDBOX_DOMAIN=your-server:8080
export OPENSANDBOX_API_KEY=sk-xxx
# 4. Restart Hermes and use it
hermes
Standalone Usage
You can also use the package directly without Hermes:
from hermes_opensandbox import OpenSandboxSession, SandboxConfig
config = SandboxConfig.from_env(
domain="your-server:8080",
api_key="sk-xxx",
)
with OpenSandboxSession(config) as session:
session.create()
output, exit_code = session.execute("echo hello")
print(f"Output: {output}, Exit: {exit_code}")
session.kill()
Supported Images
Any Docker image that includes bash:
python:3.11nikolaik/python-nodejs:python3.11-nodejs20(default, includes Node.js)ubuntu:22.04- Custom images from your registry
Environment Variables
| Variable | Default | Description |
|---|---|---|
OPENSANDBOX_DOMAIN |
localhost:8080 |
OpenSandbox server address |
OPENSANDBOX_API_KEY |
(none) | Authentication key |
OPENSANDBOX_IMAGE |
nikolaik/python-nodejs:python3.11-nodejs20 |
Container image |
OPENSANDBOX_CWD |
/workspace |
Working directory |
OPENSANDBOX_CPU |
1.0 |
CPU cores |
OPENSANDBOX_MEMORY |
5120 |
Memory in MiB |
OPENSANDBOX_DISK |
51200 |
Disk in MiB |
Hermes Config Keys
These can be set via hermes config set and take precedence over env vars:
| Key | Description |
|---|---|
terminal.opensandbox_domain |
Server address |
terminal.opensandbox_api_key |
API key |
terminal.opensandbox_image |
Container image |
Manual Uninstall
# Remove the wrapper
rm ~/.hermes/hermes-agent/tools/environments/opensandbox.py
# Restore backups
mv ~/.hermes/hermes-agent/tools/terminal_tool.py.bak ~/.hermes/hermes-agent/tools/terminal_tool.py
mv ~/.hermes/hermes-agent/agent/prompt_builder.py.bak ~/.hermes/hermes-agent/agent/prompt_builder.py
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_open_sandbox-0.3.1.tar.gz.
File metadata
- Download URL: hermes_open_sandbox-0.3.1.tar.gz
- Upload date:
- Size: 38.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55a9b97bf436840f913b02abf8c755404e3e494f678744211fd2824fb616da00
|
|
| MD5 |
bd555f1ce3f39b248cad0c3faf15cadc
|
|
| BLAKE2b-256 |
8114d07f9b228e61e41c301943203d5bdb7386d3f32b4ac2b5947827f3590af0
|
Provenance
The following attestation bundles were made for hermes_open_sandbox-0.3.1.tar.gz:
Publisher:
workflow.yml on lordqyxz/hermes-open-sandbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_open_sandbox-0.3.1.tar.gz -
Subject digest:
55a9b97bf436840f913b02abf8c755404e3e494f678744211fd2824fb616da00 - Sigstore transparency entry: 1552403158
- Sigstore integration time:
-
Permalink:
lordqyxz/hermes-open-sandbox@8f1e59bba260760e315183e4d335558139506bb7 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/lordqyxz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@8f1e59bba260760e315183e4d335558139506bb7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file hermes_open_sandbox-0.3.1-py3-none-any.whl.
File metadata
- Download URL: hermes_open_sandbox-0.3.1-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab4b1f6367235e66f091be8f19f4bb837fe5fbd6abb59a8421cce460f4a78b73
|
|
| MD5 |
d34c58b9cd3d79a84ddb72e18cabe6a6
|
|
| BLAKE2b-256 |
fe1e2c233e58ebee9421dfd1a9db19f548d756af629abc6cac4c7faeb5c3df8e
|
Provenance
The following attestation bundles were made for hermes_open_sandbox-0.3.1-py3-none-any.whl:
Publisher:
workflow.yml on lordqyxz/hermes-open-sandbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_open_sandbox-0.3.1-py3-none-any.whl -
Subject digest:
ab4b1f6367235e66f091be8f19f4bb837fe5fbd6abb59a8421cce460f4a78b73 - Sigstore transparency entry: 1552403160
- Sigstore integration time:
-
Permalink:
lordqyxz/hermes-open-sandbox@8f1e59bba260760e315183e4d335558139506bb7 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/lordqyxz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@8f1e59bba260760e315183e4d335558139506bb7 -
Trigger Event:
push
-
Statement type: