# hermes-box-lite configuration. Sourced by ./box. Edit freely.# Base OCI image each instance is built from. `ubuntu:24.04` is multi-arch — on# Apple Silicon smolvm pulls the native arm64 variant (no emulation).BASE_IMAGE="ubuntu:24.04"# Runtime sizing is per box and managed by `tx9 resources`, not baked into# the image. Existing defaults remain agent=4 CPU/8 GiB and executor=2 CPU/# 2 GiB. Docker local volumes are host-backed and unbounded; tx9 can attach# advisory storage budgets without pretending they are filesystem quotas.# Durable process logs rotate at 20 MiB per file, keeping five generations.# Native Codex, Claude, and Hermes histories retain their own upstream layout.TX9_LOG_MAX_BYTES="20971520"TX9_LOG_MAX_FILES="5"# Node.js is managed by Vite+ (https://viteplus.dev), defaulted to the# current LTS at provision time (`vp env default lts`). claude and codex use# their native (non-Node) installers.CLAUDE_CODE_CHANNEL="" # native-installer release channel or version: # "stable" (default), "latest", or e.g. "2.1.202"CODEX_VERSION="" # native-installer release, e.g. "0.142.5"; empty = latestEXECUTOR_VERSION="" # e.g. "1.5.26" — the github.com/RhysSullivan/executor npm # package installed via `vp install -g`; "executor" is a # generic name, so double-check # `npm view executor repository.url` if pinning a version# --- Hermes Agent (Nous Research) -------------------------------------------# Installed headless via the official script (the normal curl | bash setup,# always latest). Code -> /usr/local/lib (root-mode FHS layout); state -># $HERMES_HOME on /data.INSTALL_HERMES=1HERMES_INSTALL_ARGS="--skip-browser" # headless box: skip Playwright/Chromium depsHERMES_API_PORT="8642"EXPOSE_HERMES_API=0HERMES_API_PORT_LO=8650HERMES_API_PORT_HI=8850# Applied only to active imported config/env/cron/hook/script files. Empty by# default — this is operator/machine-specific (e.g. your old macOS username),# not something to commit. Set it here for your own deployment, or pass# --map OLD=NEW per invocation (see docs/nexus-operations.md's migration# runbook for a worked example); import-hermes applies both if both are set.HERMES_IMPORT_PATH_MAP=""# --- Executor (github.com/RhysSullivan/executor) ----------------------------# vp global (Vite+); daemon + web UI + MCP. Data lives under $HOME (=/data)# via XDG. Update in place with `vp install -g executor@latest`.INSTALL_EXECUTOR=1EXECUTOR_PORT="4788" # executor's port INSIDE the box (always 4788)EXPOSE_EXECUTOR_WEB=1 # forward each box's executor UI to a unique host portEXECUTOR_PORT_LO=4790 # host-port range; `box new` picks a free random port inEXECUTOR_PORT_HI=4999 # [LO,HI] per box, so many boxes don't collideWIRE_EXECUTOR_MCP=1 # register daemon's authenticated HTTP MCP for claude, codex + Hermes
# hermes-box-lite configuration. Sourced by ./box. Edit freely.
# Base OCI image each instance is built from. `ubuntu:24.04` is multi-arch — on
# Apple Silicon smolvm pulls the native arm64 variant (no emulation).
BASE_IMAGE="ubuntu:24.04"
# Runtime sizing is per box and managed by `tx9 resources`, not baked into
# the image. Existing defaults remain agent=4 CPU/8 GiB and executor=2 CPU/
# 2 GiB. Docker local volumes are host-backed and unbounded; tx9 can attach
# advisory storage budgets without pretending they are filesystem quotas.
# Durable process logs rotate at 20 MiB per file, keeping five generations.
# Native Codex, Claude, and Hermes histories retain their own upstream layout.
TX9_LOG_MAX_BYTES="20971520"
TX9_LOG_MAX_FILES="5"
# Node.js is managed by Vite+ (https://viteplus.dev), defaulted to the
# current LTS at provision time (`vp env default lts`). claude and codex use
# their native (non-Node) installers.
CLAUDE_CODE_CHANNEL="" # native-installer release channel or version:
# "stable" (default), "latest", or e.g. "2.1.202"
CODEX_VERSION="" # native-installer release, e.g. "0.142.5"; empty = latest
EXECUTOR_VERSION="" # e.g. "1.5.26" — the github.com/RhysSullivan/executor npm
# package installed via `vp install -g`; "executor" is a
# generic name, so double-check
# `npm view executor repository.url` if pinning a version
# --- Hermes Agent (Nous Research) -------------------------------------------
# Installed headless via the official script (the normal curl | bash setup,
# always latest). Code -> /usr/local/lib (root-mode FHS layout); state ->
# $HERMES_HOME on /data.
INSTALL_HERMES=1
HERMES_INSTALL_ARGS="--skip-browser" # headless box: skip Playwright/Chromium deps
HERMES_API_PORT="8642"
EXPOSE_HERMES_API=0
HERMES_API_PORT_LO=8650
HERMES_API_PORT_HI=8850
# Applied only to active imported config/env/cron/hook/script files. Empty by
# default — this is operator/machine-specific (e.g. your old macOS username),
# not something to commit. Set it here for your own deployment, or pass
# --map OLD=NEW per invocation (see docs/nexus-operations.md's migration
# runbook for a worked example); import-hermes applies both if both are set.
HERMES_IMPORT_PATH_MAP=""
# --- Executor (github.com/RhysSullivan/executor) ----------------------------
# vp global (Vite+); daemon + web UI + MCP. Data lives under $HOME (=/data)
# via XDG. Update in place with `vp install -g executor@latest`.
INSTALL_EXECUTOR=1
EXECUTOR_PORT="4788" # executor's port INSIDE the box (always 4788)
EXPOSE_EXECUTOR_WEB=1 # forward each box's executor UI to a unique host port
EXECUTOR_PORT_LO=4790 # host-port range; `box new` picks a free random port in
EXECUTOR_PORT_HI=4999 # [LO,HI] per box, so many boxes don't collide
WIRE_EXECUTOR_MCP=1 # register daemon's authenticated HTTP MCP for claude, codex + Hermes