Getting started

Baudflow is a Phoenix LiveView app backed by PostgreSQL and Oban. Run the prebuilt container image (the Ookla CLI is bundled in) or boot it from source.

The image is multi-arch (linux/amd64, linux/arm64) and bundles the Ookla Speedtest CLI, so there’s nothing extra to install:

docker run -d \
  --name baudflow \
  -p 4000:4000 \
  -e DATABASE_URL="ecto://user:pass@host/baudflow" \
  -e SECRET_KEY_BASE="replace-with-a-long-random-value" \
  ghcr.io/v1nvn/baudflow:0.11.8

On first boot the release runs migrations automatically. Open localhost:4000 and trigger a manual run, or wait for the scheduler. Only DATABASE_URL and SECRET_KEY_BASE are required; see Environment variables for the full list.

For a single-command stack that brings up Postgres alongside Baudflow, use the docker-compose.yml in the repo:

git clone https://github.com/v1nvn/baudflow && cd baudflow
docker compose up

The :0.11.8 tag is the latest release. :latest follows the main branch, where new features (like the live ping diagnostics page) land before they’re cut into a tagged release.

See Deployment for production hardening.

Option B: from source

Prerequisites:

  • Elixir 1.20+ and Erlang/OTP 29+ (the Dockerfile pins 1.20 / 29.0.1)
  • PostgreSQL
  • The Ookla Speedtest CLI on your $PATH (only needed for speed tests, since the TCP-connect ping runner needs no binary)

The Ookla Speedtest CLI is a third-party binary; by using it you accept Ookla’s license terms. The image bundles it for convenience. baudflow itself is AGPL-3.0.

git clone https://github.com/v1nvn/baudflow && cd baudflow
mix setup      # install deps, create the database, run migrations
mix phx.server

Or inside an IEx session: iex -S mix phx.server.

What you’ll see

  • Dashboard (/): hero readout, a speed-history chart with threshold lines, an SLA-compliance card, a monthly health heatmap, and a manual Run button.
  • Ping (/ping): a dedicated ping console with a live, per-sample diagnostics panel and ping-only history.
  • History (/history): every measurement, filterable and sortable.
  • Schedules (/schedules): multiple cron schedules, each with its own thresholds and escalation.
  • Settings (/settings): thresholds, servers, retention, notifications.

The baudflow dashboard

Next steps