distman logo

distman is a file distribution manager for safe, versioned software rollouts to filesystem locations.

It is designed for production pipelines where deterministic deployments, environment-aware paths, quick version switching, and rollback matter more than building and installing packages.

It also fits revision-controlled configuration repositories well. distman can publish independently owned configuration into filesystem locations such as /studio/prod/env or /studio/project/foo/env, while a runtime tool can decide which deployed directories participate later.

deploy/
└── bin/
    ├── tool -> versions/tool.2.a1b2c3d
    └── versions/
        ├── tool.1.91c8a77
        └── tool.2.a1b2c3d

Why distman

Deploy safely

Configure once

Deploy directly

Prepare and cache

Install

pip install -U distman

Quickstart

Deploy a file or directory directly:

dist --source path/to/tool --dest /deploy/bin/tool --dryrun
dist --source path/to/tool --dest /deploy/bin/tool --yes

For repeatable project deployments, create dist.json at the root of a Git repository:

{
  "author": "pipeline@example.com",
  "targets": {
    "tools": {
      "source": "tools",
      "destination": "{DEPLOY_ROOT}/tools"
    }
  }
}

Preview and then deploy:

dist --dryrun
dist --yes

The same operation is available through the suite command:

distman dist --dryrun

Learn More