Files
fathah--hermes-desktop/docs/remote-access-lab.md
T
2026-07-13 13:36:53 +08:00

91 lines
3.3 KiB
Markdown

# Remote Access Lab
This lab creates a disposable remote Hermes target for the sandboxed Hermes One instance without
touching the normal Hermes One worktree, config, or database.
## Shape
- Lab state lives in `.sandbox/remote-lab/hermes-home`.
- Containers are named `hermes-two-remote-lab-*`.
- The desktop connects to one URL: `http://127.0.0.1:19080`.
- A small nginx proxy routes:
- `/api/*` and `/api/ws` to the Hermes dashboard service in the agent container.
- `/v1/*` to the OpenAI-compatible API server in the same agent container.
- One disposable token is used for both:
- `X-Hermes-Session-Token` dashboard auth.
- `Authorization: Bearer ...` legacy API auth.
- The Hermes Agent image is built from the bundled checkout at
`.sandbox/hermes-home/hermes-agent` into `hermes-two-remote-lab-agent:local`,
because the public `nousresearch/hermes-agent:latest` image can lag the
bundled dashboard auth contract.
- The lab copies working model configuration, then strips messaging/webhook
platform credentials and opts out of bundled skill sync to avoid side effects.
- For regression testing only, the lab exports `COMFYUI_HOST` as
`http://host.docker.internal:49000` so Remote HTTP and SSH-dashboard tests can
use this Windows machine's AI Playground ComfyUI. Normal remote deployments
should not rely on access to connecting-host resources.
- Remote-generated images should be copied into `/opt/data/images` and surfaced
as `MEDIA:/opt/data/images/<file>.png` when possible. That path is under the
Hermes home media roots exposed by the upstream dashboard `/api/media`
endpoint.
- If the copied config has an `OPENROUTER_API_KEY`, the lab pins
`auxiliary.vision` to OpenRouter with `google/gemini-3-flash-preview`. This
keeps `vision_analyze` on a vision-capable auxiliary model even when the
active chat model is a text-only custom provider such as DeepSeek.
## Commands
Run from the separate development worktree:
```powershell
cd C:\Users\pmos6\Documents\Claude\Projects\Hermes-Desktop-reconcile
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\remote-lab.ps1 init
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\remote-lab.ps1 up
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\remote-lab.ps1 status
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\remote-lab.ps1 configure-desktop
```
Stop the lab:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\remote-lab.ps1 down
```
Remove all lab state:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\remote-lab.ps1 clean
```
## Expected Probes
`status` should show three OK checks:
- `dashboard status`
- `dashboard sessions auth`
- `legacy OpenAI models auth`
If Docker Desktop returns pipe/API 500 errors or hangs on `docker ps`, restart
Docker Desktop or run:
```powershell
wsl --shutdown
```
Then reopen Docker Desktop and retry `scripts\remote-lab.ps1 up`.
The first `up` may take several minutes because Docker builds the local Hermes
Agent image. Later starts reuse the image cache.
## Hermes One Sandbox Settings
After `configure-desktop`, the sandboxed Hermes One instance is set to:
- Connection mode: Remote
- Remote URL: `http://127.0.0.1:19080`
- Chat transport: Auto
That is the intended regression-test mode: dashboard first, legacy fallback
available through the same remote URL.