See CLAUDE.md for the full agentic workflow, skills, and standard build/test/lint commands. This file adds cloud-environment specifics on top of that.
OpenEnv is a Python (uv) monorepo: a core library + openenv CLI in src/openenv/, and ~35 self-contained RL "environments" under envs/ (each its own pyproject.toml/Dockerfile/openenv.yaml). There is no Node/JS, no shared database, and no single always-on backend. The product is the framework plus per-environment FastAPI servers; envs/echo_env/ is the canonical reference env.
- The startup update script installs
uv(if missing) and runsuv sync --all-extras, which creates.venv/with all core + CLI + provider extras. You do not need to reinstall on a fresh session. uvlives at~/.local/binand is already onPATHin login shells (added to.bashrc/.profile).- Core deps are enough to run/test the core library and
echo_env. Most other envs have optional, heavy deps (torch, simulators, etc.); their tests auto-skip when deps are absent. Install per-env extras only when working on that env, e.g.uv pip install -e "envs/coding_env[dev]".
- Tests need
PYTHONPATH=src:envs, e.g.PYTHONPATH=src:envs uv run pytest tests/ -q. Full suite is ~80s; ~129 tests skip without optional env deps (expected). - Lint:
uv run usort check src/ tests/,uv run ruff format src/ tests/ --check,uv run ruff check src/ tests/. Note:usort checkcurrently flags two pre-existing files (tests/envs/test_grid_world.py,tests/envs/test_julia_env.py) on a clean tree — not introduced by your change.
- Start a server (echo_env example):
PYTHONPATH=src:envs uv run python -m echo_env.server.app(listens on0.0.0.0:8000; health at/health). import echo_envresolves only whenenvs/is onPYTHONPATH.openenv serveis a stub that just prints instructions; run the server module (oruvicorn echo_env.server.app:app) directly instead.- Interact via the client:
EchoEnv(base_url="http://localhost:8000").sync()then.reset()/.list_tools()/.step(CallToolAction(...)).
- The debug web UI is off by default; enable with
ENABLE_WEB_INTERFACE=trueand open/web/.
- Docker is not required for local dev/test of the core library or pure-Python envs, and is not installed by the update script. Tests marked
@pytest.mark.docker/networkare skipped without it. Only set Docker up if you specifically work on container build/run flows.