Skip to content

Getting the ecpds CLI

The ecpds command-line client is a small native C binary that submits files and requests to the OpenECPDS Master Server. It is the primary way to push data into OpenECPDS programmatically.

For a detailed description of the submission workflows (synchronous, asynchronous, ECMWF retrieval mechanism), see ECPDS Command-line Tool.

Installation options

Option A — Download a pre-built binary

Pre-compiled binaries for amd64 (x86_64) and arm64 (aarch64) are published as assets on every GitHub Release.

# Linux amd64
curl -Lo /usr/local/bin/ecpds \
  https://github.com/ecmwf/open-ecpds/releases/latest/download/ecpds-amd64
chmod +x /usr/local/bin/ecpds

# Linux arm64
curl -Lo /usr/local/bin/ecpds \
  https://github.com/ecmwf/open-ecpds/releases/latest/download/ecpds-arm64
chmod +x /usr/local/bin/ecpds

The binary requires only libcrypto (OpenSSL) — no JVM, no other runtime dependency.

Option B — Pull the CLI Docker image

A minimal container image is published alongside the other OpenECPDS images:

docker pull ghcr.io/ecmwf/open-ecpds/cli:latest

Use it as a one-shot command (mount the files you want to submit):

docker run --rm \
  -v /path/to/data:/data \
  ghcr.io/ecmwf/open-ecpds/cli:latest \
  -echost master.example.com -ecport 9640 \
  -user mylogin -pass mypassword \
  -destination MY_DESTINATION \
  -source /data/myfile.dat

Option C — Extract from the standalone container

The ecpds binary is included in the standalone image and installed at /usr/local/bin/ecpds. You can copy it out of a running or stopped container:

docker cp standalone:/usr/local/bin/ecpds ./ecpds
chmod +x ./ecpds

Option D — Build from source

Inside the development container, the binary is compiled automatically by mvn package (via the native-build profile activated by IN_DEV_CONTAINER=true). The output is at ecpds-native/target/ecpds. To stage it as a named release binary:

make release-tools   # produces release/ecpds-amd64 or release/ecpds-arm64

Using the CLI against the standalone container

If you are running the standalone container, the Master Server listens on port 9640 for ecpds CLI connections. The default credentials are test / test2021 and a destination named TEST is pre-configured.

ecpds \
  -echost localhost -ecport 9640 \
  -user test -pass test2021 \
  -destination TEST \
  -source /path/to/myfile.dat

Or using the CLI Docker image:

docker run --rm \
  -v /path/to/myfile.dat:/myfile.dat \
  ghcr.io/ecmwf/open-ecpds/cli:latest \
  -echost host.docker.internal -ecport 9640 \
  -user test -pass test2021 \
  -destination TEST \
  -source /myfile.dat

Note

On Linux, use --network host instead of host.docker.internal to reach services on the host machine from within a Docker container.

Or directly inside the container (no network configuration needed):

docker exec standalone ecpds \
  -echost localhost -ecport 9640 \
  -user test -pass test2021 \
  -destination TEST \
  -source /path/to/myfile.dat