name: run-talon-smoke description: Run Talon local runtime smoke tests by booting talond with disposable ignored configs, validating Node/better-sqlite3, exercising the terminal channel with talonctl chat, and optionally using the live authenticated codex-cli provider. Use when the user asks for a real-life Talon smoke test, terminal client sanity check, daemon boot/connect verification, local runtime validation, or proof that Talon can receive and answer a terminal message.
Run Talon Smoke
Use this skill to prove that Talon runs locally and the terminal client can
communicate with the daemon. Prefer the live codex-cli path when the user asks
for a real-life smoke test. Use the fake provider path when the user asks for a
no-cost or deterministic smoke test.
Quick Decision
- Real-life smoke: use
live. - No-cost smoke: use
fake. - Broad validation: use
both, then still do a manualtalonctl chatcheck forliveif the user specifically asked for terminal client proof.
Workflow
- Confirm the current branch and working directory.
rtk git status --short --branch
- Prepare the selected smoke harness and run
doctor.
rtk bash .agents/skills/run-talon-smoke/scripts/run-talon-smoke.sh live --prepare
For the no-cost path, replace live with fake.
- Start the selected daemon as a foreground long-running process in its own exec session. Keep that session open while testing.
rtk npm run talond -- --config .codex/talon-smoke/talond-live-codex.yaml --env-file .codex/talon-smoke/empty.env
For fake mode:
rtk npm run talond -- --config .codex/talon-smoke/talond-smoke.yaml --env-file .codex/talon-smoke/empty.env
- Connect with the real terminal client in a PTY.
rtk proxy npm run talonctl -- chat --host 127.0.0.1 --port 17701 --token live-terminal-token --client-id codex-live-smoke --persona live
For fake mode:
rtk proxy npm run talonctl -- chat --host 127.0.0.1 --port 17700 --token smoke-terminal-token --client-id codex-smoke --persona smoke
- Send the smoke prompt through the interactive terminal session.
Live prompt:
Reply exactly: TALON LIVE OK
Expected live response:
TALON LIVE OK
Fake prompt can be any short message. Expected fake response:
Talon smoke OK: terminal round-trip reached fake codex provider.
- Collect evidence before stopping the daemon.
rtk bash .agents/skills/run-talon-smoke/scripts/run-talon-smoke.sh live --status
Use fake --status for the fake path.
- Stop the terminal client with Ctrl+C, then stop the foreground daemon session with Ctrl+C. If a smoke daemon is still running, stop it with:
rtk bash .agents/skills/run-talon-smoke/scripts/run-talon-smoke.sh live --stop
- Verify no listeners remain.
rtk lsof -nP -iTCP:17700 -sTCP:LISTEN
rtk lsof -nP -iTCP:17701 -sTCP:LISTEN
No output and exit code 1 from lsof means the port is clear.
Helper Script
The helper script recreates ignored smoke files under .codex/talon-smoke if
they are missing, creates disposable data directories, runs npm run build,
runs talonctl doctor, and retries doctor after npm run rebuild:sqlite when
the failure looks like a missing Node 24 better-sqlite3 binding.
Useful commands:
# Prepare files, build, run doctor, and print the foreground daemon/chat commands.
rtk bash .agents/skills/run-talon-smoke/scripts/run-talon-smoke.sh live --prepare
# Run an automated direct WebSocket check. This proves daemon/channel/provider,
# but it does not exercise the talonctl chat client.
rtk bash .agents/skills/run-talon-smoke/scripts/run-talon-smoke.sh live
# Stop any smoke daemon for a mode.
rtk bash .agents/skills/run-talon-smoke/scripts/run-talon-smoke.sh live --stop
Reporting
Report these facts:
- branch and working directory
- mode used:
fake,live, orboth - whether
npm run rebuild:sqlitewas needed talonctl doctorresult- terminal client auth result
- exact prompt and response
- DB evidence: thread/message/queue/run counts and last outbound body
- whether the daemon and chat client were stopped
- any remaining gaps, especially if the automated WebSocket fallback was used
instead of
talonctl chat