Installation
Dashdown is published to PyPI as dashdown-md, and the CLI it installs is the
command dashdown. So you pip install dashdown-md (or uv tool install dashdown-md) but you run dashdown. It needs Python 3.10+.
Note
dashdown-md is the package, dashdown is the command. Everywhere you install
or add a dependency, use the hyphenated dashdown-md; everywhere you run something,
use dashdown. (dashdown on its own is not the right package name.)
Install the CLI globally — use it anywhere #
If you want dashdown on your PATH so you can scaffold and serve projects from
any directory, install it as a uv tool. This is the
"create a project anywhere on my machine" path:
uv tool install dashdown-md
Now dashdown works from any folder, in its own isolated environment (it won't
clash with your projects' dependencies):
cd ~/anywhere
dashdown new my-dashboard # scaffold a project here
dashdown serve my-dashboard # → http://127.0.0.1:8000
Verify it's installed and on your PATH:
dashdown --version # prints the installed version
uv tool list # shows dashdown-md and the `dashdown` executable
dashdown --help # lists every command
Tip
If your shell can't find dashdown after installing, uv's tool bin directory isn't
on your PATH yet. Run uv tool update-shell once and restart your terminal (it
adds ~/.local/bin, where uv places tool executables, to your shell profile).
The same global install with pipx instead of uv:
pipx install dashdown-md
Run it once, without installing #
To try Dashdown without installing anything, uvx runs the CLI in a throwaway
environment:
uvx --from dashdown-md dashdown new my-dashboard
uvx --from dashdown-md dashdown serve my-dashboard
--from dashdown-md is required because the package and command names differ — it
tells uvx which package provides the dashdown command.
Add it to a single project (pinned & reproducible) #
When you want everyone on a team to run the same Dashdown version, add it as a dependency of that project instead of installing globally — the version is pinned in the project's lockfile:
# uv
uv add dashdown-md
uv run dashdown serve . # runs the project's pinned version
# pip (into an active virtualenv)
pip install dashdown-md
dashdown serve .
Tip
uv tool install (global) and uv add (per-project) solve different problems. Use
the global install for a CLI you reach for from anywhere; use uv add when a
specific dashboard should ship with a known, locked Dashdown version.
Connectors & features are optional extras #
The core install is deliberately lean. Each data connector and heavy feature pulls its dependencies only when you ask for it, via a pip extra:
uv tool install 'dashdown-md[postgres]' # Postgres connector
uv tool install 'dashdown-md[postgres,excel,pdf]' # several at once
The same extras work with every install method:
uvx --from 'dashdown-md[postgres]' dashdown serve . # one-off
uv add 'dashdown-md[postgres]' # per-project
pip install 'dashdown-md[postgres]' # pip
A few common ones — see Connectors for the full list, or run
dashdown components --connectors to print every connector with its install extra:
| Extra | Brings |
|---|---|
postgres, mysql, mssql, snowflake, bigquery |
SQL database connectors |
excel, sheets |
Spreadsheet connectors |
dax |
Microsoft Fabric / Power BI |
pdf |
Presentation PDF export (dashdown pdf) |
semantic |
The semantic metric layer (Ibis backend) |
Note
With a global (uv tool install) install, extras are baked in at install time.
To add one later, re-run the install with the full list and --force to replace the
existing install:
uv tool install --force 'dashdown-md[postgres,pdf]'
Tip
The pdf extra also needs a one-time browser download after installing:
playwright install chromium. See Exporting for details.
Upgrade & uninstall #
# global (uv tool)
uv tool upgrade dashdown-md
uv tool uninstall dashdown-md
# per-project (uv)
uv add dashdown-md@latest
uv remove dashdown-md
# pip
pip install --upgrade dashdown-md
pip uninstall dashdown-md
Which method should I use? #
| You want to… | Use |
|---|---|
| Scaffold & serve projects from anywhere | uv tool install dashdown-md |
| Try it once without installing | uvx --from dashdown-md dashdown … |
| Pin a version for one dashboard / a team | uv add dashdown-md + uv run dashdown … |
| Install into an existing virtualenv | pip install dashdown-md |
| Hack on Dashdown itself | clone the repo, then uv sync |
Next steps #
You have the dashdown command. Head to Getting started to
scaffold a project, understand the project layout, and serve your first dashboard.