OpenClaw Talk live validation (2026-07-08)¶
Status: captured for
voice-latency-model-ab:T006. This is live evidence from Companion Node as the OpenClaw gateway / Anvil Voice host and Primary Node as the router host.
Topology Observed¶
- OpenClaw Gateway is listening on Companion Node at
127.0.0.1:18789. - Anvil Voice is running on Mini as
anvil-serving voice run --config examples/voice/openclaw-anvil-voice.toml --profile mini-audio. - Mini-local STT/TTS are native MLX Audio processes on
127.0.0.1:30010and127.0.0.1:30011. - The intended Dark audio boundary may be a Mini-local proxy that forwards
127.0.0.1:30110and127.0.0.1:30111from Mini to Primary Node. Those conventional proxy ports were not listening during this validation. - Dark router
http://100.64.0.10:8000/v1was reachable. Direct Dark audio ports100.64.0.10:30110and100.64.0.10:30111were not reachable from this operator host during the check.
Interpretation: Mini-local loopback and Mini-local proxy loopback are valid
runtime targets only when the command runs on Mini. A non-gateway checkout
cannot benchmark either path by calling its own 127.0.0.1.
Post-validation correction: this run proved the optional Mini-local audio path, not the reference path for ongoing Talk validation. Companion Node's 16 GB RAM is reserved for OpenClaw Gateway, Anvil Voice Realtime/proxy, Claude Code, and Codex. Future reference validation should keep Mini model-free and use Dark-host audio or a Mini proxy to Dark.
Validation Commands¶
python examples/openclaw/colo_smoke.py --live --run-interaction-benchmark
python -m pytest tests/voice/test_realtime_service.py tests/voice/test_pipeline_spine.py -q
python -m pytest tests/voice/test_voice_cli.py tests/voice/test_voice_config.py tests/fixtures/operator_workflows/test_voice_latency_model_ab_matrix.py -q
python -m pytest tests/test_openclaw_colo_smoke.py -q
python -m ruff check anvil_serving/voice/cli.py tests/voice/test_voice_cli.py tests/voice/test_voice_config.py tests/fixtures/operator_workflows/test_voice_latency_model_ab_matrix.py examples/openclaw/colo_smoke.py
Results¶
The live COLO smoke exited 0 and wrote
.anvil/evidence/openclaw-colo-smoke.json. Verdict was warn only because
the required command did not include --run-generations; route and interaction
proofs passed:
- Authenticated router models probe:
200. - Route probes:
6. - Interaction benchmark requests:
10. - Interaction status counts:
10HTTP200. - Finish reasons:
10stop. - Latency p50 / p95:
568.6 ms/1259.9 ms. - Exact-generation throughput p50 / p95:
82.77/171.82tokens/sec.
The focused voice tests passed: 25 passed.
Talk Session Evidence¶
OpenClaw active main session:
The session contains visible spoken-turn transcript delivery and tool use:
- User transcript: "So what's the weather like in San Leandro right now?"
- Tool call:
execwithwttr.in/San+Leandro. - Tool result: San Leandro weather text.
- Assistant response: a concise weather summary.
Hidden control-text scan of that session returned:
This confirms the prior forced-consult control text is not being written into the visible session history for the checked session.
Duplicate Message Check¶
The Mini decision log still contains the earlier historical burst around
2026-07-07T14:28Z to 2026-07-07T14:29Z with repeated
talk-forced-consult rows. After cleanup, later Talk entries did not show the
same sustained burst pattern:
2026-07-07T15:23Zand2026-07-07T15:24Z: two normal Talk turns, including a weather tool call and a greeting.2026-07-07T17:36Z: three short Talk entries with prompt sizes7,4, and2characters.
There was no new dense minute-long repeat sequence like the earlier 19-row burst.
Follow-Up Notes¶
Mini TTS logs retain an older Kokoro broadcast-shape error, but the
realtime-chunk-56.log proof for the active mini-audio chunk size shows TTS
stage rows with error=false. That instability is separate from the
Mini-vs-Dark endpoint selection issue and should be tracked as TTS backend
stability if it recurs.
T006 also corrected the operational path for future A/B runs:
voice runnow accepts--candidate-overlay, matchingvoice benchmark.- Audio topology stays in
--profile. - Candidate LLM choice stays in
--candidate-overlay. - Reference A/B keeps Mini model-free and uses
dark-audioormini-dark-audio-proxy;mini-audiois optional local-audio validation only. mini-dark-audio-proxyis available only for a verified Mini-side proxy on127.0.0.1:30110and127.0.0.1:30111.