Skip to content
DispatchAtlas
Search

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 alternative

The 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 dev

The workspace installs the root namespace plus focused distributions:

DistributionImport namespace
dispatchatlasdispatchatlas
dispatchatlas-coredispatchatlas.core
dispatchatlas-benchdispatchatlas.bench
dispatchatlas-solvedispatchatlas.solve
dispatchatlas-labdispatchatlas.lab
dispatchatlas-analyticadispatchatlas.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 check

Optional heavyweight solver integrations stay behind extras. The baseline workspace remains import-light when those backends are absent.

⚙️ Configuration

VariableDefaultPurpose
DISPATCHATLAS_HOME$HOME/.local/share/dispatchatlas on POSIX, %LOCALAPPDATA%\DispatchAtlas on WindowsInstalled checkout path.
DISPATCHATLAS_REPO_URLhttps://github.com/ahmed-g-gad/dispatchatlas.gitGit remote used by the installer.
DISPATCHATLAS_REFrequiredRelease tag or full 40-character commit SHA to install or update.
DISPATCHATLAS_SKIP_SYNC0Set 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 -Apply
export 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 -Yes
scripts/installer/uninstall.sh --yes

Use -Permanent or --permanent only when the backup path is not needed.