Declared, not documented
Bun, Git, the database engine, the mail server, Redis: whatever config/deps.ts names is installed at the version range it names, instead of a README step someone skips.
config/deps.ts declares the system tools a project needs, the way package.json declares its JavaScript. Pantry installs them into the project rather than globally, so two apps on one laptop can want different versions of the same database, and CI gets exactly what development had.
All of it in the same install, with nothing to wire together first.
Bun, Git, the database engine, the mail server, Redis: whatever config/deps.ts names is installed at the version range it names, instead of a README step someone skips.
Tools install into the project, not system-wide, so one app on one Postgres and another on the next major coexist on the same machine.
Pantry provisions the database the app is configured for, starts it, then runs buddy migrate and buddy seed, so a fresh clone opens with data in it.
buddy setup rewrites the dependency list for the database DB_CONNECTION names, so only the engine you actually use gets installed.
pantry.lock pins every tool and CI installs from it, failing the build if the lock no longer describes the tree, so version drift is caught before a deploy.
Around 3,500 packages, from databases and search engines to compilers and CLIs, through one installer and one lockfile.
Buddy scaffolds, runs, and ships this the same way it does the rest of the app.
These share the same models, config, and types, so using them together costs nothing extra.