Install
Install DispatchAtlas — Python 3.12+ with uv for reproducible local setups, plus the installer scripts for cloning, updating, and uninstalling the workspace.
DispatchAtlas targets Python 3.12 or newer and uses uv for reproducible local
development.
⚡ Scripted Install
Installer commands require an explicit DISPATCHATLAS_REF so the fetched
script is pinned to a stable source revision. A full 40-character commit SHA
is the strongest pin: it is immutable, names one exact tree, and is verified
by construction, so prefer it whenever the installed revision must be
verifiable. A release tag is also accepted as a convenience pin — a tag can
move, and the installer does not verify a tag signature — so a SHA is the pin
to use for an unattended install. The cosign signatures and build provenance
the release workflow emits cover the published distribution artifacts, a
separate verification surface for anyone installing those assets rather than
this from-source checkout. Download the script, review it, then run it. The
final piped command in each block is the one-shot alternative: it executes the
stream without the review step, so reserve it for a ref you have already
vetted.
export DISPATCHATLAS_REF="<full-40-character-commit-sha>" # a release tag also works
curl -fsSL -o install.sh "https://raw.githubusercontent.com/ahmed-g-gad/dispatchatlas/${DISPATCHATLAS_REF}/scripts/installer/install.sh"
sh install.sh # run after reviewing install.sh
curl -fsSL "https://raw.githubusercontent.com/ahmed-g-gad/dispatchatlas/${DISPATCHATLAS_REF}/scripts/installer/install.sh" | sh # one-shot alternative$env:DISPATCHATLAS_REF = "<full-40-character-commit-sha>" # a release tag also works
iwr -OutFile install.ps1 "https://raw.githubusercontent.com/ahmed-g-gad/dispatchatlas/$($env:DISPATCHATLAS_REF)/scripts/installer/install.ps1"
.\install.ps1 # run after reviewing install.ps1
irm "https://raw.githubusercontent.com/ahmed-g-gad/dispatchatlas/$($env:DISPATCHATLAS_REF)/scripts/installer/install.ps1" | iex # one-shot alternativeThe installer checks for git and uv, clones or updates the checkout, and
runs uv sync --all-extras --group dev. Set DISPATCHATLAS_SKIP_SYNC=1 when
you only want to materialize the checkout.
🧱 Workspace Install
uv sync --all-extras --group devThe workspace installs the root namespace plus focused distributions:
| Distribution | Import namespace |
|---|---|
dispatchatlas | dispatchatlas |
dispatchatlas-core | dispatchatlas.core |
dispatchatlas-bench | dispatchatlas.bench |
dispatchatlas-solve | dispatchatlas.solve |
dispatchatlas-lab | dispatchatlas.lab |
dispatchatlas-analytica | dispatchatlas.analytica |
✅ Verification
uv run python -c "import dispatchatlas, dispatchatlas.core"
uv run dispatchatlas --help
uv run pytest
npm --prefix site run build
npm --prefix site run checkOptional heavyweight solver integrations stay behind extras. The baseline workspace remains import-light when those backends are absent.
⚙️ Configuration
| Variable | Default | Purpose |
|---|---|---|
DISPATCHATLAS_HOME | $HOME/.local/share/dispatchatlas on POSIX, %LOCALAPPDATA%\DispatchAtlas on Windows | Installed checkout path. |
DISPATCHATLAS_REPO_URL | https://github.com/ahmed-g-gad/dispatchatlas.git | Git remote used by the installer. |
DISPATCHATLAS_REF | required | Release tag or full 40-character commit SHA to install or update. |
DISPATCHATLAS_SKIP_SYNC | 0 | Set to 1 to skip dependency sync after checkout. |
🔄 Updating
The update scripts are read-only unless you pass the apply flag. Set
DISPATCHATLAS_REF to a release tag or full 40-character commit SHA before
checking or applying an update; as at install time, a SHA is the immutable,
verified-by-construction pin, while a tag is a moving convenience pin the
updater does not verify by signature:
$env:DISPATCHATLAS_REF = "<release-tag>"
.\scripts\installer\update.ps1
.\scripts\installer\update.ps1 -Applyexport DISPATCHATLAS_REF="<release-tag>"
scripts/installer/update.sh
scripts/installer/update.sh --apply🗑️ Uninstalling
The uninstall scripts confirm before removal, refuse unsafe targets, and move the checkout to a timestamped backup by default:
.\scripts\installer\uninstall.ps1 -Yesscripts/installer/uninstall.sh --yesUse -Permanent or --permanent only when the backup path is not needed.