Skip to main content
The official Hermes image includes its runtime, tools, and Gateway. Configure Hermes directly, then send a request to its native HTTP API. Complete the workstation setup. Run all commands below on your workstation.

Create the box

Use an existing OpenAI Chat Completions-compatible endpoint that supports tool calls. In create.py, set Secret.hosts to its hostname, without the scheme or path. Save create.py. The prompt reads the real model key on your workstation; only BoxLite’s Secret configuration receives it.
create.py
The official image entrypoint and gateway run restore Gateway on every boot. This image digest was used for verification.

Configure Hermes

Save these two files on your workstation. Set model.base_url to your endpoint’s API base URL and model.default to its model ID. These are Hermes’s native model settings. Keep <BOXLITE_SECRET:model> unchanged. API_SERVER_KEY is a separate credential for callers of your Gateway.
config.yaml
.env
Use a separate random key for Gateway callers. You can generate one with python3 -c 'import secrets; print(secrets.token_hex(32))'. Keep these files outside Git. Upload them and set ownership for Hermes:
If restart reports State change in progress, inspect the box until its state settles. For a stopped box, run boxlite start hermes-agent; for a running box, retry boxlite restart hermes-agent. Then register the tunnel if the previous command did not reach that step.

Send a task

Replace <YOUR_TUNNEL_URL> with the returned URL. Run these commands on your workstation, in the directory containing the .env file you created above. The . ./.env command loads that file into the current shell so curl can use API_SERVER_KEY. This key authenticates Gateway callers; the real model-provider key stays in BoxLite Secret. Check readiness first:
Retry this health request after a few seconds while Gateway starts. Once it succeeds, send the task:
Wait for Gateway to become ready after the restart. A successful task has finish_reason: "stop" and the expected file content. Hermes is ready. Any client supporting its Gateway API can submit tasks. No example-specific request client is required.

Optional: wake on a request

Keep auto_stop=0 to leave Gateway running. To stop between requests, set auto_stop=120 in create.py and keep wake on access enabled. Choose an idle interval that fits your workload.

Restore Gateway when the box starts

The create script preserves the official image entrypoint and saves gateway run as its command. The configuration under /opt/data and registered port 8642 let the same HTTPS URL reach Gateway after a restart. Starting Gateway once through exec would not save a startup command for subsequent boots. Use the image entrypoint and command from this guide for request-triggered startup.

Check idle stop and request-triggered wake

Request-triggered startup and idle stop
  1. Complete the first task above, which creates /opt/data/proof.txt.
  2. Stop sending service requests. Use boxlite inspect hermes-agent until the state is stopped.
  3. Send the request below to the same URL, without calling start, exec, or cp first.
On your workstation, run this from the directory containing the same .env file. It loads the Gateway caller key, then sends the request that wakes the box:
The request starts the box, its saved command restores Gateway, and Hermes executes the task. After the response, independently verify both files:
The old file checks disk persistence; the new file checks that the awakened agent used its tools. The provider request also exercises the saved Secret substitution after restart. A chat reply alone does not establish either result. If Cloud returns 503 BOX_STARTING, wait for its Retry-After interval and retry. A timeout has an unknown outcome; inspect the task’s result before submitting it again.
Gateway starts as a new process after the box wakes. Do not poll its health endpoint while waiting for idle stop: service traffic can keep the box awake.
For lifecycle controls and background jobs, see Cloud lifecycle. Retained disks can still incur storage charges.

When you are finished