Skip to main content

Install and use el CLI with pip

Use Python 3.11 or later and install the PyPI package envloop-cli to run el, without cloning a repository, installing EnvPlatform, or configuring GPUs. This page was checked against released package 0.1.1 on 2026-10-08; source checkout capabilities may differ from the released package.

Install​

Install in an activated Python 3.11+ virtual environment:

python3 --version
python3 -m venv "$HOME/.venvs/envloop-cli"
source "$HOME/.venvs/envloop-cli/bin/activate"
pip install envloop-cli
el --help
el train --help

You can also use an existing uv installation to install the CLI as a standalone tool:

uv tool install --python 3.11 envloop-cli
# If the tool directory is not on PATH, run uv tool update-shell and reopen the terminal
el train --help

Upgrade with python -m pip install --upgrade envloop-cli; uv users can run uv tool upgrade envloop-cli. The commands below use el directly and do not need uv run.

Get a KEY from the Dashboard​

Sign in with a provisioned EnvLoop account. In Dashboard → CONFIGURE → API Keys, create a platform machine KEY for the target workspace. Its plaintext is shown only once. Confirm the workspace ID; both the KEY and account must be authorized to access that workspace.

Store the KEY in a private plain-text file outside the repository, containing only one line with the KEY, without export or a variable name. This macOS / Linux example contains only a placeholder:

mkdir -p "$HOME/.config/envloop"
chmod 700 "$HOME/.config/envloop"
# Create only once; do not overwrite an existing file
(umask 077; printf '%s\n' 'YOUR_ENVLOOP_API_KEY' > "$HOME/.config/envloop/platform.key")
chmod 600 "$HOME/.config/envloop/platform.key"

Replace the placeholder in the file with the Dashboard KEY using a trusted editor or secret manager; do not paste a real KEY into command arguments, shell history, logs, or Git. 0600 allows only the file owner to read and write. Load it into the current terminal:

export ENVLOOP_API_KEY="$(cat "$HOME/.config/envloop/platform.key")"

The CLI reads the KEY from the environment and does not automatically read this file. Reload it after opening a new terminal. This KEY is not a Clerk sk_ / pk_, Cloudflare token, or Tinker KEY.

Connect and query training​

--api-url points to the API origin provided by your deployment, usually https://api.envloop.ai in production; do not append /tinker or /v1/train. Use the Dashboard workspace ID for --workspace-id. Both are global options placed before train; there is no --base-url option.

The following examples specify all connection options. First obtain a train_job_id from the list, then replace TRAIN_JOB_ID:

el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train job list --limit 25
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train job list --status running --limit 25
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train job status TRAIN_JOB_ID
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train billing usage 2026-10-08 2026-10-09
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train checkpoint list --limit 25
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train checkpoint list --session-id SESSION_ID --limit 25
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train checkpoint list --run-id RUN_ID --limit 25

Output is JSON. Use Train Job train_job_id and Agent Job job_id separately; obtain session/run IDs from training details or training script records rather than substituting a Train Job ID. When the job list returns next_cursor, continue with train job list --cursor NEXT_CURSOR --limit 25. Checkpoints include only registered artifacts; an empty list does not mean training has stopped. The current checkpoint list is limited to 100 entries and has no cursor pagination.

Billing dates use YYYY-MM-DD, with positional arguments starting_on followed by ending_before. The platform currently validates dates but does not filter actual usage by the date range; estimate: true is an estimate, not a formal bill or settled amount for that range.

You can also configure a default connection and omit global options in later commands:

export ENVLOOP_BASE_URL=https://api.envloop.ai
export ENVLOOP_WORKSPACE_ID=YOUR_WORKSPACE_ID
el train job list
el train job status TRAIN_JOB_ID
el train billing usage 2026-10-08 2026-10-09
el train checkpoint list

Explicit --api-url / --workspace-id overrides the corresponding environment variable. Another user's KEY does not automatically gain access to the submitter's training resources, even in the same workspace.

Proxy networks​

The CLI respects system proxy environment variables HTTPS_PROXY, ALL_PROXY, and NO_PROXY (including lowercase forms). HTTPS requests prefer HTTPS_PROXY; ALL_PROXY is the fallback when no protocol proxy is set. Addresses in NO_PROXY connect directly.

# Replace the port with your HTTP proxy port; HTTPS targets can use an HTTP CONNECT proxy
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE_ID train job list

Proxy URLs use the HTTP proxy protocol; the current transport does not support SOCKS. Add api.envloop.ai to NO_PROXY to connect directly to the platform API. Check for conflicting uppercase and lowercase variables; do not put proxy passwords in shared scripts or logs.

FAQ​

Unsupported Python version, or pip installation rejected by the system? Check python3 --version and create the virtual environment above using Python 3.11+, or use uv tool install --python 3.11 envloop-cli. You do not need sudo to change system Python.

el: command not found, or no train subcommand? Activate the package's virtual environment; uv users should check the tool PATH. Use command -v el to ensure you are not invoking an old checkout entrypoint, confirm installation with python -m pip show envloop-cli (or uv tool list for uv users), then upgrade the released package. Avoid installing the differently named envloop package by mistake.

NETWORK_ERROR, timeout, or certificate error? Confirm the API origin, DNS, network, and proxy are available; check HTTPS_PROXY / ALL_PROXY / NO_PROXY. Add loopback addresses to NO_PROXY for local services. If your enterprise proxy uses a custom CA, configure trusted certificates following your organization's guidance; do not disable TLS verification.

401 / authentication failed? Confirm that the current terminal has loaded the correct platform machine KEY, the file has no placeholder or variable-name prefix, and the KEY is neither expired nor revoked. If needed, create a new KEY in the Dashboard, update the file securely, and reload it. Do not print the KEY for troubleshooting.

403 / permission denied? Check the KEY's owner, --workspace-id, active workspace membership, and role; contact the workspace administrator. Other users' training resources are not automatically visible in the same workspace.

Job not found, empty checkpoints, or 503? Confirm the training ID, resource owner and workspace, and whether checkpoints have been saved and registered. For 503, ask the platform administrator to check the training service; installing the CLI does not mean the GPU service is deployed.

Versions and verification scope​

Installation and command help were checked in an isolated environment with PyPI envloop-cli==0.1.1; proxy behavior was checked against that release's HTTP transport code. Platform billing limitations were checked against EnvPlatform 3926e98. Production training, billing, and checkpoint APIs were not called with a real KEY; real proxy connections and GPU training were not verified.

For more client commands, see CLI reference; for platform installation and permissions, see the EnvPlatform el CLI guide.