Documentation

Quickstart

Install dbpod, start your first instance, run SQL, stop and clean up.

Install

One command, no root, no system services:

curl -fsSL https://dbpod.io/install.sh | sh

On Windows (PowerShell):

irm https://dbpod.io/install.ps1 | iex

Or plain cmd, no PowerShell needed (curl and tar are bundled with Windows 10+):

curl -fsSL https://dbpod.io/install.bat -o "%TEMP%\dbpod-install.bat" && call "%TEMP%\dbpod-install.bat"

The script detects your platform (macOS, Linux, or Windows) and downloads the matching single binary from GitHub Releases, verifying it against the published checksums. Verify it:

dbpod version

GitHub not reachable?

On networks where github.com cannot be reached, the installers automatically fall back to the https://dl.dbpod.io mirror. To pin a different source yourself (for example a release proxy), set DBPOD_DOWNLOAD_BASE — it takes the GitHub Releases URL of any mirror that serves the same layout:

curl -fsSL https://dbpod.io/install.sh | DBPOD_DOWNLOAD_BASE="https://mirror.ghproxy.com/https://github.com/dbpod-io/dbpod/releases" sh

The built-in fallback (https://dl.dbpod.io, a CI-synced mirror of the GitHub releases) can be pinned the same way and needs no third-party proxy.

A plain proxy also works, without changing the source: export HTTPS_PROXY=http://127.0.0.1:7890 (or set HTTPS_PROXY=... on Windows). The same env vars are honored by install.ps1 and install.bat.

Re-running an installer upgrades in place — an existing binary is simply replaced, on Windows even while an older dbpod process is still running.

One-shot install with a database

To install the CLI and a database engine in a single command, pass --engine:

curl -fsSL https://dbpod.io/install.sh | sh -s -- --engine mysql@8.0

This installs dbpod, then immediately runs dbpod engine install mysql@8.0 for you — the engine is cached and ready before you type anything else. Repeat --engine (or use DBPOD_ENGINES="mysql@8.0 postgres@17") for multiple engines:

curl -fsSL https://dbpod.io/install.sh | sh -s -- --engine mysql@8.0 --engine postgres@17

The same works from cmd:

curl -fsSL https://dbpod.io/install.bat -o "%TEMP%\dbpod-install.bat" && call "%TEMP%\dbpod-install.bat" --engine mysql@8.0

Other options: --version vX.Y.Z pins the CLI version, --install-dir overrides the install location (default ~/.local/bin). See all of them with sh -s -- --help. Prefer a guided setup? The install builder generates the one-shot command for your platform and engines.

Install an engine

Engines are handled like Docker images — you pick a series, dbpod resolves the exact version:

dbpod engine install mysql@8.0
✓ resolved mysql@8.0 → 8.0.46
✓ installed → ~/.dbpod/versions/mysql/8.0.46

The series notation mysql@8.0 resolves to the latest known patch release (here 8.0.46). The engine binaries are cached under DBPOD_HOME/versions and reused across projects.

Run your first instance

dbpod run --name dev --engine mysql@8.0
✓ dev is ready → 127.0.0.1:3306 · datadir ./.dbpod/dev

The command returns as soon as the server is ready to accept connections — the instance keeps running in the background, detached. All state (data, logs, socket, pid) lives inside the project’s ./.dbpod/ directory. Nothing leaks into system paths.

Run some SQL

exec drops you into the engine’s SQL shell with the instance target pre-connected:

dbpod exec dev
SELECT VERSION();

Or run a one-shot statement without opening a shell:

dbpod exec dev -e "SELECT 1"

Inspect, stop, clean up

dbpod ps          # instances in this project
dbpod stop dev    # graceful shutdown
dbpod rm dev      # remove the instance

Because the datadir is project-local, deleting ./.dbpod/ removes the database completely. That is the whole story: the host stays clean, and every project owns its data.

Next steps

  • Engines — series resolution, LTS/innovation, engine ls views
  • Instances — lifecycle, ports, monitors
  • Exec — the distribution as a toolbox