What Terminal backends is for
Hermes's terminal tool can run commands in seven environments: local (the default, with no isolation), docker, ssh, modal, daytona, vercel_sandbox and singularity. Switching the backend changes where the agent's shell commands and file work happen without changing how you chat with it. Docker gives a hardened, persistent container on your machine. SSH sends work to a remote server, and the cloud options give disposable or persistent sandboxes that keep the agent away from your own files. You set the backend and its image and resource limits under terminal in config.yaml, with most keys also available as TERMINAL_ environment variables.
What you need
- The runtime for the chosen backend, such as Docker or Podman, or apptainer/singularity on PATH
- Credentials for remote backends: TERMINAL_SSH_HOST and TERMINAL_SSH_USER for SSH, MODAL_TOKEN_ID and MODAL_TOKEN_SECRET for Modal, DAYTONA_API_KEY for Daytona
- For Vercel Sandbox, VERCEL_TOKEN, VERCEL_PROJECT_ID and VERCEL_TEAM_ID
Set it up
- 1
Switch backend, for example
hermes config set terminal.backend docker, and confirm Docker works withdocker version - 2
Set backend options under terminal in
config.yaml, such as docker_image, container_cpu, container_memory or docker_network - 3
Run
hermes doctorto check setup (it covers Modal), andhermes config set terminal.backend localto revert
Check it works
- Ask the agent to run a harmless command such as printing its hostname or working directory, and confirm it reflects the chosen backend
- Run
hermes doctorand review any backend warnings
Limits and failure points
- The local backend has no isolation; the agent has the same file access as your user account
- For SSH, Modal and Daytona, working-tree files are not synced back at teardown, so copy out important artifacts first
- Persistence keeps filesystem state only, not running processes; Daytona caps disk at 10 GiB
Primary sources
Spotted something wrong or out of date? Tell us on X at @HermesWatcher (opens in a new tab) and we will fix it.