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.metadata["message"]) # "Echo environment ready!"
Synchronous usage is also supported via the .sync() wrapper:
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.
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!
OpenEnv includes a built-in web interface for interactive environment exploration and debugging. The web interface provides:
Two-Pane Layout: HumanAgent interaction on the left, state observation on the right
Real-time Updates: WebSocket-based live updates without page refresh
Dynamic Forms: Automatically generated action forms based on environment Action types
Action History: Complete log of all actions taken and their results
The web interface is conditionally enabled based on environment variables:
Local Development: Disabled by default for lightweight development
Manual Override: Enable with ENABLE_WEB_INTERFACE=true
To use the web interface:
from openenv.core.env_server import create_web_interface_app
from your_env.models import YourAction, YourObservation
from your_env.server.your_environment import YourEnvironment
Deploy to Hugging Face (will prompt for login if needed)
cd my_game_env
openenv push
For detailed options run any command with --help.
Development
Installation
# Clone the repository
git clone https://github.com/huggingface/OpenEnv.git
cd OpenEnv
Install core package in editable mode
pip install -e .
Or using uv (faster)
uv pip install -e .
Running Tests
OpenEnv uses a modular dependency structure: the core package is minimal, and each environment has its own dependencies. This means some tests require environment-specific packages.
OpenEnv is governed by a technical committee that coordinates project direction, major technical decisions, RFCs, and release planning through the public issue tracker, pull requests, and RFC process. Current committee members: Meta-PyTorch, Reflection, Unsloth, Modal, Prime Intellect, Nvidia, Mercor, Fleet AI, Microsoft, Hugging Face, RadixArk, and Nebius.
The project is also supported by a broader community of organizations. If you would like to add your project or organization here, please open a pull request for maintainer review.
And we'd also like to acknowledge the team at Farama Foundation as the OpenEnv API was heavily inspired by the work you all have done on Gymnasium. Cheers!