Introduction
DPM (Dumb Packet Manager) is a reproducible tool installer for lab and development environments. One command installs your full toolkit, the same result every time, on every machine.
What is DPM?
DPM sits above your system package manager. It doesn't replace apt, Homebrew, or pip, it orchestrates them. A single profile applies a curated set of tools using whichever install method works best for each one: apt, Homebrew, pip, cargo, or direct binary download.
Tools are pinned to catalog-defined versions. Profiles are shareable by course code. HTTP downloads are verified with SHA-256 when hashes are defined in the catalog. You can inspect a community profile before it touches your system.
Two interfaces, one backend
DPM ships as two programs that share the same engine:
- dpm, the CLI. Every operation is a flag or subcommand. Scriptable, composable, fast.
- dpm-tui, the terminal UI. A full Ratatui interface for browsing the catalog, managing profiles and dotfiles, and running operations with visual feedback.
Most features exist in both. Where a feature is available in only one interface, the relevant doc page notes it.
What DPM manages
- Tools, individual packages from the catalog, installed via the best available method for your platform.
- Profiles, curated sets of tools bundled for a specific use case (e.g. a course, a lab role). Identified by a short course code.
- Dotfiles, config files from a Git repo, mapped to the right locations alongside your installs.
- Bubbles, ephemeral isolated sessions with a temporary HOME directory. All changes vanish on exit.
How these docs are organised
- Getting Started, installation and a quick-start walkthrough.
- Commands, one page per CLI command, with the equivalent TUI flow alongside it.
- Catalog, how the tool catalog works and how install methods are resolved.
- Community, finding, inspecting, and sharing community profiles.
- Reference, full flag table, aliases, exit codes, and system requirements.