πŸ’» 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 (or uv add boon-deadlock) puts a boon executable 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

--limit <N> / -n <N>

Max rows to show (0 = all)

--tail

Show the last rows instead of the first

--json

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

--part <PART>

snapshots, last_hits, objectives, damage, or all (default: last_hits)

--limit <N> / -n <N>

Max rows to show (0 = all)

--json

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

--metric <M> / -m <M>

kill-participation, time-dead, or in-combat

--limit <N> / -n <N>

Max rows to show (0 = all)

--json

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

verify

Check that a file is a valid demo.

info

File header and game info (build, map, playback time, match ID, mode, winner, players).

messages

List every command/packet in the demo with metadata.

classes

The class-id β†’ network-name mapping.

send-tables

Serializer (send table) field schemas per entity class.

string-tables

String tables from demo initialization.

events

Decoded game events (user messages); --inspect for full payloads.

summary

Post-match summary from the last-tick event.

entities

Entity state at a specific --tick.

abilities

Important ability usage events.

ability-upgrades

Hero ability-point spending (tier 1–3).

ability-ticks

Ability cooldown / charge state changes (change-only).

shop-events

Item shop transactions (purchase, upgrade, sell, swap).

chat

In-game chat messages.

objectives

Per-tick objective health (walkers, barracks, shrines, patron, mid boss).

mid-boss

Mid boss lifecycle events (spawn, kill, rejuv pickup/use/expire).

troopers

Alive lane trooper position/state per tick.

neutrals

Neutral creep state changes (change-only).

stat-modifiers

Permanent stat-bonus change events (urn / breakable pickups).

active-modifiers

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