--- license: apache-2.0 sdk: static --- # OpenEnv: Agentic Execution Environments An e2e framework for creating, deploying and using isolated execution environments for agentic RL training, built using Gymnasium style simple APIs.
--- ## Quick Start Install the OpenEnv package: ```bash pip install openenv ``` Install an environment client (e.g., Echo): ```bash pip install git+https://huggingface.co/spaces/openenv/echo_env ``` Then use the environment: ```python import asyncio from echo_env import CallToolAction, EchoEnv async def main(): # Connect to a running Space (async context manager) async with EchoEnv(base_url="https://openenv-echo-env.hf.space") as client: # Reset the environment result = await client.reset() print(result.observation.echoed_message) # "Echo environment ready!" # Send messages result = await client.step( CallToolAction( tool_name="echo_message", arguments={"message": "Hello, World!"}, ) ) print(result.observation.result) # "Hello, World!" print(result.reward) asyncio.run(main()) ``` **Synchronous usage** is also supported via the `.sync()` wrapper: ```python from echo_env import CallToolAction, EchoEnv # Use .sync() for synchronous context manager with EchoEnv(base_url="https://openenv-echo-env.hf.space").sync() as client: result = client.reset() result = client.step( CallToolAction( tool_name="echo_message", arguments={"message": "Hello, World!"}, ) ) print(result.observation.result) ``` For a detailed quick start, check out the [docs page](https://huggingface.co/docs/openenv/getting-started). ## Overview OpenEnv provides a standard for interacting with agentic execution environments via simple Gymnasium style APIs - `step()`, `reset()`, `state()`. Users of agentic execution environments can interact with the environment during RL training loops using these simple APIs. In addition to making it easier for researchers and RL framework writers, we also provide tools for environment creators making it easier for them to create richer environments and make them available over familiar protocols like HTTP and packaged using canonical technologies like docker. Environment creators can use the OpenEnv framework to create environments that are isolated, secure, and easy to deploy and use. The OpenEnv CLI (`openenv`) provides commands to initialize new environments and deploy them to Hugging Face Spaces. > ⚠️ **Early Development Warning** OpenEnv is currently in an experimental > stage. You should expect bugs, incomplete features, and APIs that may change > in future versions. The project welcomes bugfixes, but significant changes > should be discussed before implementation so the technical committee and > community can coordinate scope, compatibility, and release timing. It's > recommended that you signal your intention to contribute in the issue tracker, > either by filing a new issue or by claiming an existing one. ### RFCs Below is a list of active and historical RFCs for OpenEnv. RFCs are proposals for major changes or features. Please review and contribute! - [RFC 001: Baseline API and Interface Specifications](https://github.com/huggingface/OpenEnv/pull/26) - [RFC 002: Discoverability of environment tools by agents](https://github.com/huggingface/OpenEnv/pull/32) - [RFC 003: Add MCP (Model Context Protocol) support](https://github.com/huggingface/OpenEnv/pull/224) - [RFC 004: Add delayed rewards support for trajectory-based scoring](https://github.com/huggingface/OpenEnv/pull/337) - [RFC 005: Agentic Harness Integration](https://github.com/huggingface/OpenEnv/pull/387) ## CLI Commands The OpenEnv CLI provides commands to manage environments: - **`openenv init