π» CLIΒΆ
Boon ships a boon command-line tool for inspecting demo files without writing
any code. It comes in two flavors:
Bundled with the Python package β
pip install boon-deadlock(oruv add boon-deadlock) puts aboonexecutable on your PATH. It is a Typer app that runs the same parser as the library and prints Polars DataFrames β the quickest way to poke at a demo. Documented in Python CLI below.boon-dev(in-repo debugging tool) β a low-level Rust CLI with a broader set of format-inspection commands (entities, send tables, string tables, raw messages, β¦). It is not shipped as a binary; build it from source. Documented under boon-dev below.
The bundled command is invoked as boon, the debugging tool as boon-dev; both
support --help on any command.
Python CLIΒΆ
Installed with the boon-deadlock Python package:
pip install boon-deadlock # or: uv add boon-deadlock
Run boon --help for the full list, or boon <command> --help for one command.
Pass --json (where available) for machine-readable output.
infoΒΆ
Match metadata: map, mode, build, duration, and result.
boon info match.dem
boon info match.dem --json
playersΒΆ
The player roster (name, Steam ID, hero, team, start lane), with hero names resolved.
boon players match.dem
datasetsΒΆ
List every dataset that show can display.
boon datasets
showΒΆ
Load and print any dataset as a table (or JSON). Dataset names come from
boon datasets (they mirror the Demo properties).
boon show match.dem kills --limit 20
boon show match.dem player_ticks --tail --limit 5
boon show match.dem objectives --json
Options:
Flag |
Description |
|---|---|
|
Max rows to show ( |
|
Show the last rows instead of the first |
|
Emit row-oriented JSON |
summaryΒΆ
The post-match summary. Choose a part with --part.
boon summary match.dem
boon summary match.dem --part objectives
Options:
Flag |
Description |
|---|---|
|
|
|
Max rows to show ( |
|
Emit JSON |
statsΒΆ
Derived metrics from boon.stats.
boon stats match.dem --metric kill-participation
boon stats match.dem -m time-dead
Options:
Flag |
Description |
|---|---|
|
|
|
Max rows to show ( |
|
Emit JSON |
verifyΒΆ
Check that a file is a valid Deadlock demo.
boon verify match.dem
boon-devΒΆ
boon-dev is a low-level debugging CLI, built from the boon-dev crate. It is
not shipped β there are no release binaries and no crates.io package. Build
it from source when you need it:
cargo build --release -p boon-dev
# Binary is at target/release/boon-dev
Run boon-dev --help for the full list, or boon-dev <command> --help for the
flags on any command (most take --filter, --summary, --limit, and
--min-tick / --max-tick, plus the global --json).
CommandsΒΆ
Command |
Description |
|---|---|
|
Check that a file is a valid demo. |
|
File header and game info (build, map, playback time, match ID, mode, winner, players). |
|
List every command/packet in the demo with metadata. |
|
The class-id β network-name mapping. |
|
Serializer (send table) field schemas per entity class. |
|
String tables from demo initialization. |
|
Decoded game events (user messages); |
|
Post-match summary from the last-tick event. |
|
Entity state at a specific |
|
Important ability usage events. |
|
Hero ability-point spending (tier 1β3). |
|
Ability cooldown / charge state changes (change-only). |
|
Item shop transactions (purchase, upgrade, sell, swap). |
|
In-game chat messages. |
|
Per-tick objective health (walkers, barracks, shrines, patron, mid boss). |
|
Mid boss lifecycle events (spawn, kill, rejuv pickup/use/expire). |
|
Alive lane trooper position/state per tick. |
|
Neutral creep state changes (change-only). |
|
Permanent stat-bonus change events (urn / breakable pickups). |
|
Active buff/debuff modifier events (applied/removed). |
Example:
# All player controllers at tick 10000, with up to 50 fields each
boon-dev entities match.dem --tick 10000 --filter CCitadelPlayerController --fields 50
# Count event types
boon-dev events match.dem --summary