Metadata-Version: 2.5
Name: envloop-cli
Version: 0.1.1
Summary: Standalone el command-line client for EnvLoop
Project-URL: Repository, https://github.com/EnvLoop/envloop
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# envloop-cli

Independent Python 3.11+ project providing the existing `el` CLI, version 0.1.1.
It builds and installs without the envloop SDK checkout or any third-party runtime
dependencies. The distribution is `envloop-cli`; its private implementation package
is `el_cli`, so it does not overwrite the `envloop` SDK namespace.

After publication:

```bash
pip install envloop-cli==0.1.1
el --help
el train --help
el --api-url https://api.envloop.ai --workspace-id YOUR_WORKSPACE train job list
```

HTTP requests use system proxies by default (`HTTPS_PROXY` / `HTTP_PROXY`,
with `ALL_PROXY` as a fallback); lowercase equivalents and `NO_PROXY` are
honored. Without a configured proxy, requests connect directly.

Set `ENVLOOP_API_KEY` privately in your environment. Existing command names,
arguments, JSON output, error codes and `envloop/0.1` User-Agent are preserved.
Local Task/Profile commands still require a separately installed compatible
EnvPlatform, just as before; this package does not bundle an execution backend.
No Tinker SDK, GPU, Docker or EnvHub dependencies are needed for remote queries.

## Boundary and layout

```text
el-cli/
  pyproject.toml
  src/el_cli/
    __init__.py
    cli.py
    client.py
    http.py
    train.py
    utils/{__init__,logging}.py
  tests/
```

The actual source has `envloop/cli.py` and `envloop/train.py`, rather than the
`cli/commands/train.py` layout in the brief. `cli.py` imports Client and Train;
Client uses the logging helper and lazily loads HttpService and Train. All use
the standard library. Client also lazily imports EnvPlatform for local execution.
Retaining Client preserves existing task/job/profile behavior rather than shipping
a train-only CLI. These modules were extracted from the training-read CLI at
`b546830`, based on main `11a5803`. Shared SDK/transport fixes should be applied
to both packages while their copied implementations remain separate.

The SDK keeps its Python APIs and legacy `python -m envloop.cli` interface, but
no longer registers `el`; install this project for that executable.

## Build, verify and publish

From this directory:

```bash
uv sync --locked
uv run --locked pytest -q --ignore=tests/test_jobs_http.py
uv run --locked ruff check .
uv build
python -m venv /tmp/el-cli-clean
/tmp/el-cli-clean/bin/python -m pip install dist/envloop_cli-0.1.1-py3-none-any.whl
/tmp/el-cli-clean/bin/el --help
/tmp/el-cli-clean/bin/el train --help
```

The real JobMaster integration cases in `tests/test_jobs_http.py` also require
a separately installed EnvPlatform and its dependencies. Run the complete suite
with that backend installed; the other cases need only the dev group.

The workstation's Aliyun index is a download mirror, not an upload endpoint.
No existing private upload repository or publishing credentials were found on
2026-10-08. The intended public target is PyPI, upload endpoint
`https://upload.pypi.org/legacy/`. Release remains unpublished until an authorized
PyPI token (or configured Trusted Publisher) is available. Never put credentials
in this project. With a token supplied privately as `UV_PUBLISH_TOKEN`:

```bash
uv publish --publish-url https://upload.pypi.org/legacy/ dist/*
```

Building a wheel does not establish that the PyPI name is reserved or that a
release is available. Verify index installation after a successful upload.
