Catalog / Overview

Tool Catalog

The DPM catalog is a curated set of tool definitions embedded directly into the binary at build time. Every tool DPM knows how to install lives here as a YAML file in the repository.

What it is

Each tool in the catalog is a YAML file that describes the tool and all the ways it can be installed, across package managers, platforms, and versions. DPM reads this catalog when you run dpm install or dpm search.

Because the catalog is compiled into the binary, installs work completely offline. No network call is needed to know how to install a tool, only to download it.

Browsing the catalog

The fastest way to browse is from the command line:

sh
dpm -s nmap nmap 7.95 Network mapper — port scanner, service detection, NSE scripts

Search matches tool IDs, names, descriptions, and tags. Without a query it lists everything:

sh
dpm -s binwalk 3.1.0 Firmware analysis tool — binary extraction and reverse engineering exiftool Read, write and edit metadata in images, audio and video files gdb GNU debugger — step through and inspect native binaries ghidra NSA reverse engineering framework hashcat GPU-accelerated password and hash recovery john Password cracker — supports many hash and cipher formats nmap 7.95 Network mapper — port scanner, service detection, NSE scripts pwntools CTF framework and exploit dev library for Python radare2 Reverse engineering framework — disassembler, debugger, hex editor tshark Wireshark's CLI — pcap analysis, packet capture, protocol decoding

Tool definitions

Each catalog entry is a YAML file in catalog/ in the DPM repository. Here is a minimal example:

catalog/nmap.yaml
id: nmap name: Nmap description: Network mapper, port scanner and service detection versions: - version: "7.95" major_version: 7 is_latest: true release_date: "2024-04-23" install_methods: - type: apt package: nmap platforms: [linux-amd64, linux-arm64] bubble_compatible: false - type: brew package: nmap platforms: [darwin-arm64, darwin-amd64] bubble_compatible: false

A tool can have multiple versions with independent install methods. DPM picks the one marked is_latest: true by default. You can pin a specific version with the --version flag.

Multiple versions

Some tools maintain two active versions simultaneously, for example, Binwalk ships a Rust v3 and a legacy Python v2 that can coexist side by side. DPM installs the latest by default and symlinks it accordingly:

sh
dpm -i binwalk ✓ installed binwalk 3.1.0 → /usr/local/bin/binwalk dpm -i binwalk@2 ✓ installed binwalk 2.4.3 → /usr/local/bin/binwalk2

Contributing tools

The catalog lives at github.com/ilpakka/dpm/tree/main/catalog ↗. To add a tool, open a pull request with a new YAML file following the schema above.

Keep tool IDs lowercase, hyphenated, and unique. The ID is what users type, dpm -i my-tool, so it should be short and obvious.
See Install Methods for a full breakdown of all supported install method types, their required fields, and which platforms each supports.