dreadgoad scoreboard turns a GOAD lab into a live status board for an
engagement: it parses the lab's config.json into an answer key of
objectives, polls the agent's JSONL report, and verifies findings against
the key in a Bubbletea/Lipgloss TUI.
dreadgoad scoreboard generate-key # build answer_key.json once per lab
dreadgoad scoreboard run --report ./report.jsonl
dreadgoad scoreboard demo # preview the layout with mock findingsPoint the agent at /tmp/report.jsonl using
scoreboard/agent_prompt.md. For remote
reports use --transport ssm or --transport ares (see below).
Builds the verification checklist (answer_key.json) from a GOAD
config.json. Each objective covers one provable finding (a password,
hash, kerberoastable SPN, ADCS template, ACL chain step, etc.), grouped
by category. Regenerate after lab edits or variant generation. The output
is gitignored.
| Flag | Description |
|---|---|
--config |
Path to GOAD config.json (default ad/GOAD/data/config.json) |
--output |
Output path (default scoreboard/answer_key.json) |
dreadgoad scoreboard generate-key
dreadgoad scoreboard generate-key --config ad/GOAD-variant-1/data/config.jsonThe command prints the total objective count and a per-group breakdown.
Polls the agent's JSONL report, verifies each finding against the answer key, and renders the live board.
| Flag | Default | Description |
|---|---|---|
--transport |
local |
local, ssm, or ares |
--report |
/tmp/report.jsonl |
Path to the agent's report on the target |
--answer-key |
scoreboard/answer_key.json |
Path to the answer key |
--instance-id |
EC2 instance ID (required for ssm and ares) |
|
--ssm-region |
falls back to --region |
AWS region for SSM |
--ares-binary |
/usr/local/bin/ares |
Path to the ares binary on the target |
--interval |
3s |
Poll interval |
--restart |
false |
Delete the report file on the target before starting |
--once |
false |
Fetch and verify once, print the static board, exit (no TUI) |
The live TUI accepts the following keys (a subset is shown in the footer hint when the board is not in compact mode):
| Key | Action |
|---|---|
q, ctrl+c, esc |
Quit |
r |
Force an immediate re-poll |
j / down |
Scroll down one row |
k / up |
Scroll up one row |
space, pgdown, ctrl+d |
Scroll down one page |
pgup, ctrl+u |
Scroll up one page |
g, home |
Jump to top |
G, end |
Pin to bottom (follows new findings) |
When the natural board layout would overflow the terminal height (e.g. running in a short tmux pane), the TUI automatically switches to a compact mode that drops blank spacers — the scroll keys above are how you reach content that is below the viewport.
local: read a JSONL file from the host running the CLI. Best for development, or when the agent writes its report to a synced directory.ssm: read/tmp/report.jsonl(or--report) from an EC2 instance over SSM. Requires the SSM agent, IAM, and--instance-id.ares: invoke anaresbinary on the target to stream findings. Use when an agent writes findings througharesinstead of a flat file.--restartis a no-op for this transport.
# One-shot static board (CI/CD friendly)
dreadgoad scoreboard run --once --report ./report.jsonl
# SSM, fresh run (wipe the remote report first)
dreadgoad scoreboard run \
--transport ssm \
--instance-id i-0123456789abcdef0 \
--restart
# Faster polling for short engagements
dreadgoad scoreboard run --interval 1500msGenerates a synthetic report against the current lab config and renders the static board. Use it to preview the layout, sanity-check the answer key, or screenshot the dashboard without running a real agent.
| Flag | Description |
|---|---|
--config |
Path to GOAD config.json (default ad/GOAD/data/config.json) |
dreadgoad scoreboard demoThe TUI consumes a JSONL stream: one header line followed by one finding per line.
{"agent_id": "dreadnode-agent", "start_time": "2026-05-11T17:00:00Z"}
{"target": "samwell.tarly@north.sevenkingdoms.local", "evidence": "Heartsbane1", "description": "password from AD description"}scoreboard/agent_prompt.md is the
canonical spec and is suitable to hand to an agent verbatim.
validation.md: operator-side vulnerability validationGOAD-vulnerabilities-comprehensive.md: vulnerability catalog the answer key is derived from