💻 CLI

Boon includes two CLI tools.

  • Python CLI: Install boon-deadlock with pip or uv. The package adds boon to your PATH. This command uses the library parser and prints Polars DataFrames. See Python CLI.

  • boon-dev: This low-level Rust tool inspects entities, send tables, string tables, and raw messages. Build it from the repository. See boon-dev.

The two tools support --help for each 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 JSON 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
boon show match.dem item_purchases --limit 10

Options:

Flag

Description

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

Maximum rows to show (0 = all)

--tail

Show the last rows instead of the first

--json

Return JSON rows

Item purchases include catalog-based upgraded_from_ability_ids. The CLI uses the newest installed catalog, or downloads latest if none is installed. Use Python get_item_purchases(data_version=...) to select a catalog explicitly.

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, healing, gold_sources, or all (default: last_hits)

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

Maximum rows to show (0 = all)

--json

Return JSON

stats

Derived metrics from boon.stats. Use the Python stat query methods for hero values and ability bonuses; this command does not calculate them.

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>

Maximum rows to show (0 = all)

--json

Return JSON

verify

Make sure the file has the correct Deadlock demo format.

boon verify match.dem

get, versions, and remove

Download boon-data JSON catalogs and list client versions with source build dates, build times, and local installation status:

boon get                         # latest client version in versions.json
boon versions                    # client version, build date/time, installed status
boon get 6712                     # a specific Deadlock client version
boon versions --local             # offline installation listing
boon remove 6712                  # remove a local version offline

All three commands support --json. Files are stored under ~/.boon/<client-version>/. get --force replaces an installation only after integrity checks of the new download. Set a version for remove VERSION. It also removes corrupt caches. See Game data downloads for the Python API, integrity checks, cache configuration, and how client versions differ from replay build numbers.

boon-dev

boon-dev reads raw demo data. Build it from the repository:

cargo build --release -p boon-dev
# Binary is at target/release/boon-dev

Run boon-dev --help for the command list. Run boon-dev <command> --help for the options on a command. Most commands support --filter, --summary, --limit, --min-tick, and --max-tick. The global --json option selects JSON output.

Commands

Command

Description

verify

Make sure the file has the correct demo format.

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 for each 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

Objective health for each tick (walkers, barracks, shrines, patron, mid boss).

mid-boss

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

troopers

Alive lane trooper position/state for each 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