# QUICKSTART.md — execution transcript *Every step id referenced by `QUICKSTART.md`, with the exact command that was run, its exit code, and its raw output. Measured 2026-10-30 on the host that runs `hermes` v0.22.5, from `/tmp` unless stated. Profile names `q110demo`, `q110demo2`, `q110demo3` are throwaway probes: each was deleted afterwards and no `q110demo*` profile remains (`ls -d ~/.hermes/profiles/q110demo*` → no such file, rc 2).* Format read by `wizard-work/volt/q110_check.py`: a `### S — title` heading, then `cmd:`, `rc:`, `status:` lines. `status` is one of `TESTED` (rc must be 0), `EXPECTED-FAIL` (rc must be nonzero), `UNTESTED` (rc is the observed failure). ### S1 — toolchain versions cmd: bash --version | head -1; python3 -V; git --version; hermes --version rc: 0 status: TESTED out: GNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu) Python 3.14.9 git version 2.43.0 Hermes Agent v0.22.5 (2026.9.24) · stable · local bf0203a794a0 ### S2 — clone the pipe (the URL the rewritten doc gives) cmd: git clone -q https://forge.alexanderwhitestone.com/git/stackchain/troupe-standup.git lib rc: 0 status: TESTED out: real 0m31.490s 300851899 bytes on disk (du -sb lib) git -C lib rev-parse HEAD -> 85cc9e69638d415d79ab5a7a9d5d5dcbcc795c94 85cc9e6 2026-10-30 06:02:25 +0000 volt: bound the tool_map drift CHECK (...) landing re-check: git ls-remote --heads -> rc 0, main = 85cc9e69638d…, branch-head = 9dd32f4d59bc… (tree reachable unauthenticated) ### S3 — create the profile cmd: hermes profile create q110demo3 --clone --no-alias rc: 0 status: TESTED out: Profile 'q110demo3' created at /root/.hermes/profiles/q110demo3 Cloned config, .env, SOUL.md, and skills from volt. (an earlier run of the same command, timed: real 0m13.351s) landing re-check (no --clone): rc 0, real 0m16.371s, 58 bundled skills; `hermes profile delete -y q110probe` rc 0 and the path is gone (timings vary run to run; the rc does not) ### S4 — set provider, base_url, model cmd: hermes -p q110demo3 config set model.provider deepseek; hermes -p q110demo3 config set model.base_url https://api.deepseek.com/v1; hermes -p q110demo3 config set model.default deepseek-flash rc: 0 status: TESTED out: ✓ Set model.provider = deepseek in /root/.hermes/profiles/q110demo3/config.yaml ✓ Set model.base_url = https://api.deepseek.com/v1 in /root/.hermes/profiles/q110demo3/config.yaml ✓ Set model.default = deepseek-flash in /root/.hermes/profiles/q110demo3/config.yaml ### S5 — read the model back cmd: hermes -p q110demo3 config get model.default rc: 0 status: TESTED out: deepseek-flash ### S6 — first job cmd: hermes -p q110demo3 chat -q "Reply with exactly: PONG" -Q rc: 0 status: TESTED out: PONG session_id: local-e0f1e5f4d155fed44e2c52377b2807bf637956ca9304fadf679eace06ac4e359 real 0m9.964s landing re-check on the `volt` profile: PONG, rc 0, real 0m13.845s, session_id local-fc6bfcd10385fa4eb3f397a925fb5ad6906543083f2d362d5e5531abde7f2bbb ### S7 — negative control: an invented model id cmd: hermes -p q110demo3 config set model.default deepseek-nonexistent-probe; hermes -p q110demo3 chat -q "Reply with exactly: PONG" -Q rc: 1 status: EXPECTED-FAIL out: DeepSeek rejected this request as malformed, so the model didn't answer. ... Provider said: HTTP 400: The supported API model names are deepseek-flash, deepseek-v4-pro, but you passed deepseek-nonexistent-probe. (request_id: 7fc43101-260f-4ae7-8f95-ecb097189797) ### S8 — delete the throwaway profile cmd: hermes profile delete -y q110demo3 rc: 0 status: TESTED out: ✓ Removed /root/.hermes/profiles/q110demo3 Profile 'q110demo3' deleted. ls -d /root/.hermes/profiles/q110demo3 -> No such file or directory ls /root/.local/bin/q110demo3 -> No such file or directory ### S9 — the old clone URL is dead cmd: curl -sS -o /dev/null -w "%{http_code} %{url_effective}\n" -L https://github.com/stackchain/library.git rc: 0 status: TESTED out: 404 https://github.com/stackchain/library api.github.com/repos/stackchain/library -> also 404 landing re-check 2026-10-30: 404 https://github.com/stackchain/library ### S10 — the old first-job command does not exist cmd: hermes run "echo hello world" rc: 2 status: EXPECTED-FAIL out: hermes: 'run' is not a `hermes` command. Run `hermes --help` to see all commands. landing re-check: rc 2, same two lines ### S11 — a bare HERMES_HOME directory is not a profile cmd: HERMES_HOME=/h2 hermes chat -q "Reply with exactly: PONG" -Q rc: 1 status: EXPECTED-FAIL out: Hermes couldn't start the model connection: Gateway could not start: the gateway exited with status 0 before it could serve:. Your message was not sent. real 0m10.666s (repeated 0m11.746s with the parent's session env stripped, and 0m12.812s from /tmp on the live profile home: same reading) ### S12 — HERMES_HOME exported hides a freshly created profile cmd: HERMES_HOME=/h2 hermes -p q110demo2 chat -q "Reply with exactly: PONG" -Q rc: 1 status: EXPECTED-FAIL out: Error: Profile 'q110demo2' does not exist. Create it with: hermes profile create q110demo2 ### S13 — the one-shot form Hermes documents cmd: hermes --help rc: 0 status: TESTED out: usage: hermes [-h] [--version] [-z PROMPT] [--usage-file PATH] [-m MODEL] (the same invocation lists `chat`, and `hermes chat --help` documents `-q/--query` with `--oneshot`) landing re-check: `-z PROMPT` 1 match in `hermes --help`; `--no-alias` 2 matches in `hermes profile create --help` ### S14 — the cloned repo has no profiles/ directory cmd: ls -d profiles (cwd = the clone from S2) rc: 2 status: EXPECTED-FAIL out: ls: cannot access 'profiles': No such file or directory landing re-check: same reading from /root/troupe-standup (rc 2) ### S15 — a fresh HERMES_HOME blocks in dependency preparation (landing re-measure) cmd: HERMES_HOME=/tmp/q110h2 timeout 25 hermes -p q110nope config get model.default; HERMES_HOME=/tmp/q110h2 timeout 100 hermes chat -q "PONG" -Q rc: 124 status: UNTESTED out: hermes: preparing dependencies for this data root (the checkout's updates belong to /root/.hermes)... → Installing Python dependencies… (both commands, plus `-p volt config get`, printed that first line and did not finish: 25 s, 25 s, 100 s, each killed by `timeout` → rc 124) Not a pass and not a refusal: the lookup message S11/S12 record was never reached at landing, so this step is recorded as unreachable, not as measured.