PHPackages                             internal/dload - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. internal/dload

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

internal/dload
==============

Downloads binaries.

1.10.0(1mo ago)98142.7k↓24.4%3[16 issues](https://github.com/php-internal/dload/issues)6BSD-3-ClausePHPPHP &gt;=8.1CI failing

Since Jul 18Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/php-internal/dload)[ Packagist](https://packagist.org/packages/internal/dload)[ Fund](https://boosty.to/roxblnfk)[ RSS](/packages/internal-dload/feed)WikiDiscussions 1.x Synced 1mo ago

READMEChangelog (10)Dependencies (36)Versions (38)Used By (6)

 [![logo](https://github.com/php-internal/dload/raw/1.x/resources/logo.svg?raw=true)](https://github.com/php-internal/dload/blob/1.x/resources/logo.svg?raw=true)

Download artifacts easily

[![Support](https://camo.githubusercontent.com/92a5c9c142a4b40702e8f5905faa1afae6cfc4f79c417502e83bce1e2c90cf5f/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f7374796c653d666c61742d737175617265266c6162656c3d537570706f7274266d6573736167653d254532253944254134266c6f676f3d47697448756226636f6c6f723d253233666530303836)](https://boosty.to/roxblnfk)

DLoad simplifies downloading and managing binary artifacts for your projects. Perfect for development environments that require specific tools like RoadRunner, Temporal, or custom binaries.

[![English readme](https://camo.githubusercontent.com/eb3477a60bb3e5b5f5cd97d8f0d611e707072ab75f4eba068632e9ff1ea2b2f3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f524541444d452d456e676c6973682532302546302539462538372542412546302539462538372542382d6d6f63636173696e3f7374796c653d666c61742d737175617265)](README.md)[![Chinese readme](https://camo.githubusercontent.com/9737edd7526c0e955f0d434c401e671c86cd120a2b06b8c4b50b1f7b11a917f5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f524541444d452d2545342542382541442545362539362538372532302546302539462538372541382546302539462538372542332d6d6f63636173696e3f7374796c653d666c61742d737175617265)](README-zh.md)[![Russian readme](https://camo.githubusercontent.com/499566b09018b07904261948964c15a0c86a016717d0d04dd604a57f389799cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f524541444d452d2544302541302544312538332544312538312544312538312544302542412544302542382544302542392532302546302539462538372542372546302539462538372542412d6d6f63636173696e3f7374796c653d666c61742d737175617265)](README-ru.md)[![Spanish readme](https://camo.githubusercontent.com/15358b1f4e7dca39e0a74b1ac023a48eb671fa82184730956da1f40771e0f082/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f524541444d452d457370612543332542316f6c2532302546302539462538372541412546302539462538372542382d6d6f63636173696e3f7374796c653d666c61742d737175617265)](README-es.md)

Why DLoad?
----------

[](#why-dload)

DLoad solves a common problem in PHP projects: how to distribute and install necessary binary tools and assets alongside your PHP code. With DLoad, you can:

- Automatically download required tools during project initialization
- Ensure all team members use the same versions of tools
- Simplify onboarding by automating environment setup
- Manage cross-platform compatibility without manual configuration
- Keep binaries and assets separate from your version control

### Table of Contents

[](#table-of-contents)

- [Installation](#installation)
- [Quick Start](#quick-start)
- [Command Line Usage](#command-line-usage)
    - [Initialize Configuration](#initialize-configuration)
    - [Download Software](#download-software)
    - [View Software](#view-software)
    - [Build Custom Software](#build-custom-software)
- [Configuration Guide](#configuration-guide)
    - [Interactive Configuration](#interactive-configuration)
    - [Manual Configuration](#manual-configuration)
    - [Download Types](#download-types)
    - [Version Constraints](#version-constraints)
    - [Advanced Configuration Options](#advanced-configuration-options)
- [Building Custom RoadRunner](#building-custom-roadrunner)
    - [Build Action Configuration](#build-action-configuration)
    - [Velox Action Attributes](#velox-action-attributes)
    - [Build Process](#build-process)
    - [Configuration File Generation](#configuration-file-generation)
    - [Using Downloaded Velox](#using-downloaded-velox)
    - [DLoad Configuration](#dload-configuration)
    - [Building RoadRunner](#building-roadrunner)
- [Custom Software Registry](#custom-software-registry)
    - [Defining Software](#defining-software)
    - [Software Elements](#software-elements)
- [Use Cases](#use-cases)
    - [Development Environment Setup](#development-environment-setup)
    - [New Project Setup](#new-project-setup)
    - [CI/CD Integration](#cicd-integration)
    - [Cross-Platform Teams](#cross-platform-teams)
    - [PHAR Tools Management](#phar-tools-management)
    - [Frontend Asset Distribution](#frontend-asset-distribution)
- [API Rate Limits](#api-rate-limits)
- [Gitlab CI configuration](#gitlab-ci-configuration)
- [Contributing](#contributing)

Installation
------------

[](#installation)

```
composer require internal/dload -W
```

[![PHP](https://camo.githubusercontent.com/8b36882a1453aa95ff5438828b1e00136d2d15d304c189d75f30ad1f7398ab54/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f696e7465726e616c2f646c6f61642e7376673f7374796c653d666c61742d737175617265266c6f676f3d706870)](https://packagist.org/packages/internal/dload)[![Latest Version on Packagist](https://camo.githubusercontent.com/c1e6c6e131bb5a16da1294f96c86207f6d203dad929f01e4118041f2df373133/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696e7465726e616c2f646c6f61642e7376673f7374796c653d666c61742d737175617265266c6f676f3d7061636b6167697374)](https://packagist.org/packages/internal/dload)[![License](https://camo.githubusercontent.com/4e9a05712229cff5b063a0fc8d721ca2caeb71c71e18a461a637a7bc57f19cfd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f696e7465726e616c2f646c6f61642e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Total DLoads](https://camo.githubusercontent.com/a7b2a2676e761fbe8188abdae88570b77d91764466e27d4c6ee5950daaa03334/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f696e7465726e616c2f646c6f61642e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/internal/dload/stats)

Quick Start
-----------

[](#quick-start)

1. **Install DLoad via Composer**:

    ```
    composer require internal/dload -W
    ```

Alternatively, you can download the latest release from [GitHub releases](https://github.com/php-internal/dload/releases).

2. **Create your configuration file interactively**:

    ```
    ./vendor/bin/dload init
    ```

    This command will guide you through selecting software packages and create a `dload.xml` configuration file. You can also create it manually:

    ```

    ```
3. **Download configured software**:

    ```
    ./vendor/bin/dload get
    ```
4. **Integrate with Composer** (optional):

    ```
    {
        "scripts": {
            "post-update-cmd": "dload get --no-interaction -v || \"echo can't dload binaries\""
        }
    }
    ```

Command Line Usage
------------------

[](#command-line-usage)

### Initialize Configuration

[](#initialize-configuration)

```
# Create configuration file interactively
./vendor/bin/dload init

# Create configuration in specific location
./vendor/bin/dload init --config=./custom-dload.xml

# Create minimal configuration without prompts
./vendor/bin/dload init --no-interaction

# Overwrite existing configuration without confirmation
./vendor/bin/dload init --overwrite
```

### Download Software

[](#download-software)

```
# Download from configuration file
./vendor/bin/dload get

# Download specific packages
./vendor/bin/dload get rr temporal

# Download with specific versions and minimum stability
./vendor/bin/dload get rr:2025.* dolt:1.44.1 mago:1.*@alpha

# Download with options
./vendor/bin/dload get rr --stability=beta --force
```

#### Download Options

[](#download-options)

OptionDescriptionDefault`--path`Directory to store binariesCurrent directory`--arch`Target architecture (amd64, arm64)System architecture`--os`Target OS (linux, darwin, windows)Current OS`--stability`Release stability (stable, beta)stable`--config`Path to configuration file./dload.xml`--force`, `-f`Force download even if binary existsfalse### View Software

[](#view-software)

```
# List available software packages
./vendor/bin/dload software

# Show downloaded software
./vendor/bin/dload show

# Show specific software details
./vendor/bin/dload show rr

# Show all software (downloaded and available)
./vendor/bin/dload show --all
```

### Build Custom Software

[](#build-custom-software)

```
# Build custom software using configuration file
./vendor/bin/dload build

# Build with specific configuration file
./vendor/bin/dload build --config=./custom-dload.xml
```

#### Build Options

[](#build-options)

OptionDescriptionDefault`--config`Path to configuration file./dload.xmlThe `build` command executes build actions defined in your configuration file, such as creating custom RoadRunner binaries with specific plugins. For detailed information about building custom RoadRunner, see the [Building Custom RoadRunner](#building-custom-roadrunner) section.

Configuration Guide
-------------------

[](#configuration-guide)

### Interactive Configuration

[](#interactive-configuration)

The easiest way to create a configuration file is using the interactive `init` command:

```
./vendor/bin/dload init
```

This will:

- Guide you through selecting software packages
- Show available software with descriptions and repositories
- Generate a properly formatted `dload.xml` file with schema validation
- Handle existing configuration files gracefully

### Manual Configuration

[](#manual-configuration)

Create `dload.xml` in your project root:

```

```

### Download Types

[](#download-types)

DLoad supports three download types that determine how assets are processed:

#### Type Attribute

[](#type-attribute)

```

```

#### Default Behavior (No Type Specified)

[](#default-behavior-no-type-specified)

When `type` is not specified, DLoad automatically uses all available handlers:

- **Binary processing**: If software has `` section, performs binary presence and version checking
- **Files processing**: If software has `` section and asset is downloaded, processes files during unpacking
- **Simple download**: If no sections exist, downloads asset without unpacking

```

```

#### Explicit Type Behaviors

[](#explicit-type-behaviors)

TypeBehaviorUse Case`binary`Binary checking, version validation, executable permissionsCLI tools, executables`phar`Downloads `.phar` files as executables **without unpacking**PHP tools like Psalm, PHPStan`archive`**Forces unpacking even for .phar files**When you need archive contentsNote

Use `type="phar"` for PHP tools that should remain as `.phar` files. Using `type="archive"` will unpack even `.phar` archives.

### Version Constraints

[](#version-constraints)

Use Composer-style version constraints:

```

```

### Advanced Configuration Options

[](#advanced-configuration-options)

```

```

Building Custom RoadRunner
--------------------------

[](#building-custom-roadrunner)

DLoad supports building custom RoadRunner binaries using the Velox build tool. This is useful when you need RoadRunner with custom plugin combinations that aren't available in pre-built releases.

### Build Action Configuration

[](#build-action-configuration)

```

```

### Velox Action Attributes

[](#velox-action-attributes)

AttributeDescription`velox-version`Version constraint for the Velox build tool to use`golang-version`Go version constraint required for building RoadRunner`roadrunner-ref`RoadRunner Git reference (tag, commit, or branch) to use as the base for building`config-file`Path to base configuration file that may be merged with remote API responses or other sources`binary-path`Output path for the built RoadRunner binary. File extension is automatically added based on OS (`.exe` for Windows). Defaults to current working directory`debug`Build RoadRunner with debug symbols to profile it with pprof (boolean, defaults to `false`)### Build Process

[](#build-process)

DLoad automatically handles the build process:

1. **Golang Check**: Verifies Go is installed globally (required dependency)
2. **Velox Preparation**: Uses Velox from global installation, local download, or downloads automatically if needed
3. **Configuration**: Copies your local velox.toml to build directory
4. **Building**: Executes `vx build` command with specified configuration
5. **Installation**: Moves built binary to target location and sets executable permissions
6. **Cleanup**: Removes temporary build files

Note

DLoad requires Go (Golang) to be installed globally on your system. It does not download or manage Go installations.

### Configuration File Generation

[](#configuration-file-generation)

You can generate a `velox.toml` configuration file using the online builder at

For detailed documentation on Velox configuration options and examples, visit

This web interface helps you select plugins and generates the appropriate configuration for your custom RoadRunner build.

### Using Downloaded Velox

[](#using-downloaded-velox)

You can download Velox as part of your build process instead of relying on a globally installed version:

```

```

This ensures consistent Velox versions across different environments and team members.

### DLoad Configuration

[](#dload-configuration)

```

```

### Building RoadRunner

[](#building-roadrunner)

```
# Build RoadRunner using velox.toml configuration
./vendor/bin/dload build

# Build with specific configuration file
./vendor/bin/dload build --config=custom-rr.xml
```

Custom Software Registry
------------------------

[](#custom-software-registry)

### Defining Software

[](#defining-software)

```

```

### Software Elements

[](#software-elements)

#### Repository Configuration

[](#repository-configuration)

- **type**: Currently supports "github"
- **uri**: Repository path (e.g., "username/repo")
- **asset-pattern**: Regex pattern to match release assets

#### Binary Elements

[](#binary-elements)

- **name**: Binary name for reference
- **pattern**: Regex pattern to match binary in assets
- Automatically handles OS/architecture filtering

#### File Elements

[](#file-elements)

- **pattern**: Regex pattern to match files
- **extract-path**: Optional extraction directory
- Works on any system (no OS/architecture filtering)

Use Cases
---------

[](#use-cases)

### Development Environment Setup

[](#development-environment-setup)

```
# One-time setup for new developers
composer install
./vendor/bin/dload init  # First time only
./vendor/bin/dload get
```

### New Project Setup

[](#new-project-setup)

```
# Start a new project with DLoad
composer init
composer require internal/dload -W
./vendor/bin/dload init
./vendor/bin/dload get
```

### CI/CD Integration

[](#cicd-integration)

```
# GitHub Actions
- name: Download tools
  run: GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} ./vendor/bin/dload get
```

### Cross-Platform Teams

[](#cross-platform-teams)

Each developer gets the correct binaries for their system:

```

```

### PHAR Tools Management

[](#phar-tools-management)

```

```

### Frontend Asset Distribution

[](#frontend-asset-distribution)

```

```

API Rate Limits
---------------

[](#api-rate-limits)

Use a personal access token to avoid rate limits:

```
GITHUB_TOKEN=your_token_here ./vendor/bin/dload get
GITLAB_TOKEN=your_token_here ./vendor/bin/dload get
```

Add to CI/CD environment variables for automated downloads.

Gitlab CI configuration
-----------------------

[](#gitlab-ci-configuration)

When you make a release in Gitlab, make sure to upload your assets to the release page via package manager. This can easily be done via Gitlab CLI and the `glab release upload --use-package-registry`command.

```
# .gitlab-ci.yml

Build artifacts:
  stage: push
  script:
    - mkdir bin
    - echo "Mock binary for darwin arm" > bin/cool-darwin-arm64
    - echo "Mock binary for darwin amd" > bin/cool-darwin-amd64
    - echo "Mock binary for linux arm" > bin/cool-linux-arm64
    - echo "Mock binary for linux amd" > bin/cool-linux-amd64
  artifacts:
    expire_in: 2 hours
    paths:
      - $CI_PROJECT_DIR/bin/cool-*
  rules:
    - if: $CI_COMMIT_TAG

Release artifacts:
    stage: deploy
    image: gitlab/glab:latest
    needs: [ "Build artifacts" ]
    script:
        - glab auth login --job-token $CI_JOB_TOKEN --hostname $CI_SERVER_HOST
        - glab release upload --use-package-registry "$CI_COMMIT_TAG" ./bin/*
    rules:
        - if: $CI_COMMIT_TAG
```

Contributing
------------

[](#contributing)

Contributions welcome! Submit Pull Requests to:

- Add new software to the predefined registry
- Improve DLoad functionality
- Enhance documentation and translate this [on other languages](docs/guidelines/how-to-translate-readme-docs.md)

###  Health Score

57

—

FairBetter than 98% of packages

Maintenance85

Actively maintained with recent releases

Popularity47

Moderate usage in the ecosystem

Community24

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 95.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~18 days

Recently: every ~24 days

Total

35

Last Release

58d ago

Major Versions

0.2.2 → 1.0.0-alpha2024-08-02

### Community

Maintainers

![](https://www.gravatar.com/avatar/110fa17dca123e71e4ef4132d1d6a66d20058a07fc6118e716dd67dd4316e886?d=identicon)[roxblnfk](/maintainers/roxblnfk)

---

Top Contributors

[![roxblnfk](https://avatars.githubusercontent.com/u/4152481?v=4)](https://github.com/roxblnfk "roxblnfk (274 commits)")[![DimaTiunov](https://avatars.githubusercontent.com/u/5381110?v=4)](https://github.com/DimaTiunov "DimaTiunov (10 commits)")[![Nyholm](https://avatars.githubusercontent.com/u/1275206?v=4)](https://github.com/Nyholm "Nyholm (2 commits)")[![ERuban](https://avatars.githubusercontent.com/u/13186130?v=4)](https://github.com/ERuban "ERuban (1 commits)")[![xepozz](https://avatars.githubusercontent.com/u/6815714?v=4)](https://github.com/xepozz "xepozz (1 commits)")

---

Tags

hacktoberfestdownloaderdownload binaries

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/internal-dload/health.svg)

```
[![Health](https://phpackages.com/badges/internal-dload/health.svg)](https://phpackages.com/packages/internal-dload)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6939.5M343](/packages/drupal-core-recommended)[kimai/kimai

Kimai - Time Tracking

4.6k7.4k1](/packages/kimai-kimai)[symfony/asset-mapper

Maps directories of assets &amp; makes them available in a public directory with versioned filenames.

1656.9M131](/packages/symfony-asset-mapper)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
