Buckets:
CLI
The openenv CLI provides a set of commands for building, validating, and pushing environments to Hugging Face Spaces or a custom Docker registry. For an end-to-end tutorial on building environments with OpenEnv, see the building an environment guide.
openenv init[[openenv.cli.commands.init]]
openenv.cli.commands.init[[openenv.cli.commands.init]]
Initialize a new OpenEnv environment.
Creates a new directory with the environment name and generates all necessary files based on the OpenEnv template structure.
Example: $ openenv init my_game_env $ openenv init my_env --output-dir /path/to/projects
openenv build[[openenv.cli.commands.build]]
openenv.cli.commands.build[[openenv.cli.commands.build]]
Build Docker images for OpenEnv environments.
This command builds Docker images using the environment's pyproject.toml and uv for dependency management. Run from the environment root directory.
Examples:
Build from environment root (recommended)
$ cd my_env $ openenv build
Build with custom tag
$ openenv build -t my-custom-tag
Build without cache
$ openenv build --no-cache
Build with custom build arguments
$ openenv build --build-arg VERSION=1.0 --build-arg ENV=prod
Build from different directory
$ openenv build envs/echo_env
openenv validate[[openenv.cli.commands.validate]]
openenv.cli.commands.validate[[openenv.cli.commands.validate]]
Validate local environments and running OpenEnv servers.
Local validation checks if an environment is properly configured with:
- Required files (pyproject.toml, openenv.yaml, server/app.py, etc.)
- Docker deployment support
- uv run server capability
- python -m module execution
Runtime validation checks if a live OpenEnv server conforms to the versioned runtime API contract and returns a criteria-based JSON report.
Examples:
Validate current directory (recommended)
$ cd my_env $ openenv validate
Validate a running environment and return JSON criteria
$ openenv validate --url http://localhost:8000 $ openenv validate https://my-env.hf.space
Validate with detailed output
$ openenv validate --verbose
Validate specific environment
$ openenv validate envs/echo_env
openenv push[[openenv.cli.commands.push]]
openenv.cli.commands.push[[openenv.cli.commands.push]]
Push an OpenEnv environment to Hugging Face Spaces or a custom Docker registry.
This command:
- Validates that the directory is an OpenEnv environment (openenv.yaml present)
- Builds and pushes to Hugging Face Spaces or custom Docker registry
- Optionally enables web interface for deployment
The web interface is enabled by default when pushing to HuggingFace Spaces, but disabled by default when pushing to a custom Docker registry.
Examples:
Push to HuggingFace Spaces from current directory (web interface enabled)
$ cd my_env $ openenv push
Push to HuggingFace repo and open a Pull Request
$ openenv push my-org/my-env --create-pr $ openenv push --repo-id my-org/my-env --create-pr
Push to HuggingFace without web interface
$ openenv push --no-interface
Push to Docker Hub
$ openenv push --registry docker.io/myuser
Push to GitHub Container Registry
$ openenv push --registry ghcr.io/myorg
Push to custom registry with web interface
$ openenv push --registry myregistry.io/path1/path2 --interface
Push to specific HuggingFace repo
$ openenv push --repo-id my-org/my-env
Push privately with custom base image
$ openenv push --private --base-image ghcr.io/meta-pytorch/openenv-base:latest
Push with GPU hardware
$ openenv push --hardware t4-medium
Set a public Space variable (overrides openenv.yaml variables:)
$ openenv push -e OPENSPIEL_GAME=tic_tac_toe -e MAX_STEPS=100
Set a private Space secret (value never logged)
$ openenv push --secret OPENAI_API_KEY=sk-...
openenv serve[[openenv.cli.commands.serve]]
openenv.cli.commands.serve[[openenv.cli.commands.serve]]
Serve an OpenEnv environment locally.
TODO: This command is currently not implemented and has been deferred for later.
Planned functionality:
- Run environment server locally without Docker
- Support multiple deployment modes (local, notebook, cluster)
- Auto-reload for development
- Integration with environment's [project.scripts] entry point
For now, use Docker-based serving:
- Build the environment: openenv build
- Run the container: docker run -p 8000:8000
Or use uv directly: uv run --project . server --port 8000
openenv fork[[openenv.cli.commands.fork]]
openenv.cli.commands.fork[[openenv.cli.commands.fork]]
Fork (duplicate) a Hugging Face Space to your account using the Hub API.
Uses the Hugging Face duplicate_space API. You can set environment variables and secrets, and request hardware/storage/sleep time at creation time.
Examples: $ openenv fork owner/source-space $ openenv fork owner/source-space --private $ openenv fork owner/source-space --repo-id myuser/my-fork $ openenv fork owner/source-space --set-env MODEL_ID=user/model --set-secret HF_TOKEN=hf_xxx $ openenv fork owner/source-space --hardware t4-medium
openenv skills[[openenv.cli.commands.skills.skills_add]]
Installs an openenv-cli skill into your AI assistant's skills directory so
it knows the openenv CLI is available and what each command does. Supports
Claude Code, Cursor, Codex, and OpenCode.
Install for a single assistant (project-local):
openenv skills add --claude # → .claude/skills/openenv-cli/
openenv skills add --cursor # → .cursor/skills/openenv-cli/
openenv skills add --codex # → .codex/skills/openenv-cli/
openenv skills add --opencode # → .opencode/skills/openenv-cli/
Multiple flags can be combined — openenv skills add --claude --cursor installs
for both at once. The skill file is written to a central location
(.agents/skills/openenv-cli/) and each agent directory gets a symlink, so
there is only one copy to update.
Install globally (user-level, across all projects):
openenv skills add --claude --global # → ~/.claude/skills/openenv-cli/
Overwrite an existing installation (e.g. after upgrading openenv):
openenv skills add --claude --force
Preview the skill content without installing:
openenv skills preview
Install to a custom path (for non-standard agent setups):
openenv skills add --dest /path/to/my-agent/skills/
openenv.cli.commands.skills.skills_add[[openenv.cli.commands.skills.skills_add]]
Install OpenEnv CLI skill for AI assistants.
openenv.cli.commands.skills.skills_preview[[openenv.cli.commands.skills.skills_preview]]
Print generated SKILL.md content.
API Reference
Entry point[[openenv.cli.main.main]]
openenv.cli.main.main[[openenv.cli.main.main]]
Main entry point for the CLI.
CLI helpers[[openenv.cli._cli_utils.validate_env_structure]]
openenv.cli._cli_utils.validate_env_structure[[openenv.cli._cli_utils.validate_env_structure]]
Validate that the directory follows OpenEnv environment structure.
Parameters:
env_dir : Path to environment directory
strict : If True, enforce all optional requirements
Returns:
List of validation warnings (empty if all checks pass)
Validation utilities[[openenv.cli._validation.validate_running_environment]]
openenv.cli._validation.validate_running_environment[[openenv.cli._validation.validate_running_environment]]
Validate a running OpenEnv server against runtime API standards.
The returned JSON report contains an overall pass/fail result and per-criterion outcomes that can be consumed in CI.
openenv.cli._validation.validate_multi_mode_deployment[[openenv.cli._validation.validate_multi_mode_deployment]]
Validate that an environment is ready for multi-mode deployment.
Checks:
- pyproject.toml exists
- uv.lock exists
- pyproject.toml has [project.scripts] with server entry point
- server/app.py has a main() function
- Required dependencies are present
Returns:
Tuple of (is_valid, list of issues found)
openenv.cli._validation.get_deployment_modes[[openenv.cli._validation.get_deployment_modes]]
Check which deployment modes are supported by the environment.
Returns:
Dictionary with deployment mode names and whether they're supported
openenv.cli._validation.format_validation_report[[openenv.cli._validation.format_validation_report]]
Format a validation report for display.
Returns:
Formatted report string
openenv.cli._validation.build_local_validation_json_report[[openenv.cli._validation.build_local_validation_json_report]]
Build a JSON report for local environment validation.
Xet Storage Details
- Size:
- 10.1 kB
- Xet hash:
- 75f2d8d2f78dd26a9e186702e1621fdc1d0f1b3ee82829bbb5e7e78181b940c5
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.