Skip to content

Latest commit

 

History

History
86 lines (67 loc) · 4.06 KB

File metadata and controls

86 lines (67 loc) · 4.06 KB

Hermes dashboard sandbox

This directory hosts the release demo sandbox for Hermes Collab Engine v5.0. It runs a real local dashboard server with mock API data, an isolated SQLite demo database, and an isolated workspace; it does not bundle runtime data, secrets, or real Hermes/Claude configuration.

Quick start

# From an installed checkout
curl -fsSL https://raw.githubusercontent.com/lpc0387/hermes-collab-engine/main/scripts/install.sh | bash
cd ~/hermes-collab-engine
./scripts/start_sandbox.sh

# Or run the sandbox server directly
python3 sandbox/server.py --host 127.0.0.1 --port 8876

Open http://127.0.0.1:8876/.

To try an online sandbox environment, contact the author on WeChat lg19961117 to request access.

What is isolated

Area Sandbox behavior
Dashboard Serves sandbox/index.html, copied from the production UI with sandbox labels and an isolation banner.
API sandbox/server.py serves lightweight mock payloads and can read a sanitized SQLite snapshot in read-only mode.
Runs Default POST /api/runs creates in-memory demo records only; --real enables limited real worker execution in the sandbox boundary.
Database Uses demo SQLite such as data/demo_sandbox.sqlite3; real mode writes data/sandbox_real.sqlite3; never point it at production data.
Workspace Real mode defaults to ignored data/sandbox_workspace/, separate from real project workspaces.
TTL cleanup scripts/start_sandbox.sh defaults to 2 hours, then stops the sandbox process to avoid long-running demos.
Templates Hermes/Claude templates are empty skeletons or .example files; no tokens, sessions, logs, memories, skills, or auth data are shipped.

Launcher options

./scripts/start_sandbox.sh                 # default: 2 hours on port 8876
./scripts/start_sandbox.sh 4               # 4 hours
./scripts/start_sandbox.sh 0.5             # 30 minutes
./scripts/start_sandbox.sh --hours 8       # 8 hours
./scripts/start_sandbox.sh --port 8877     # custom port
./scripts/start_sandbox.sh --no-reseed     # reuse existing demo DB
./scripts/start_sandbox.sh --real          # limited real workers in isolated DB/workspace
./scripts/start_sandbox.sh -i              # ask duration interactively

Deployment with sub-path and seed data

python3 scripts/seed_demo_data.py --db data/demo_sandbox.sqlite3 --reset
HERMES_SANDBOX_DB=data/demo_sandbox.sqlite3 \
HERMES_SANDBOX_BASE_PATH=/sandbox/hermes \
HERMES_SANDBOX_PUBLIC_URL=https://demo.example.com/sandbox/hermes \
HERMES_SANDBOX_MOCK_CONFIG=config/sandbox-mocks.json \
python3 sandbox/server.py --host 127.0.0.1 --port 8876

Share the configured public URL: https://demo.example.com/sandbox/hermes/.

Expected reverse-proxy routing:

location /sandbox/hermes/ {
    proxy_pass http://127.0.0.1:8876/sandbox/hermes/;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_buffering off;
}

Environment variables:

Variable Purpose
HERMES_SANDBOX_HOST Bind host, default 127.0.0.1. Keep localhost for reverse-proxy deployments.
HERMES_SANDBOX_PORT Bind port, default 8876.
HERMES_SANDBOX_BASE_PATH Domain sub-path, for example /sandbox/hermes.
HERMES_SANDBOX_PUBLIC_URL Shareable URL shown by the server, for example https://demo.example.com/sandbox/hermes.
HERMES_SANDBOX_DB Optional sanitized SQLite file. The sandbox opens it read-only and falls back to in-memory data if omitted.
HERMES_SANDBOX_MOCK_CONFIG Mock service config, default config/sandbox-mocks.json.

Isolation checks:

  • Use only the database generated by scripts/seed_demo_data.py; do not point HERMES_SANDBOX_DB at production data.
  • Mock service addresses come from config/sandbox-mocks.json and are localhost-only.
  • The sandbox API exposes /api/sandbox/config so operators can confirm base path, read-only database source, mock endpoints, and public URL.
  • Keep real ~/.hermes and ~/.claude secrets outside this repository; use the integration script templates only after manual review.