OpenEnv documentation
Getting Started
Get Started
Guides
Tutorials
Environments
EnvironmentsEchoCodingJupyterTerminusCoding ToolsChatAtariOpenSpielSUMO-RLFinRLTextArenaGitDIPG SafetySnakeWeb SearchBrowserGymREPLCalendarCARLAChessConnect4DM ControlFinQAGrid WorldJuliaKernRLMazeOpenAppReasoning GymTBench2UnityWildfireAgent World ModelOpenCode
API Reference
Project
Getting Started
Install OpenEnv, load an environment, and run your first step.
Install OpenEnv
pip install openenv
This installs the
openenvCLI and theopenenv.coreruntime. Environment projects can depend onopenenv[core]when they only need the server and client libraries.
Try an Environment
Use AutoEnv and AutoAction when you want OpenEnv to find the matching client
and action classes for an installed or discoverable environment.
from openenv import AutoAction, AutoEnv
env = AutoEnv.from_env("echo")
EchoAction = AutoAction.from_env("echo")
with env.sync() as client:
result = client.reset()
print(result.observation.echoed_message) # "Echo environment ready!"
result = client.step(EchoAction(message="Hello, OpenEnv!"))
print(result.observation.echoed_message) # "Hello, OpenEnv!"AutoEnv.from_env() accepts the common name forms:
AutoEnv.from_env("echo")
AutoEnv.from_env("echo-env")
AutoEnv.from_env("echo_env")Connect to a Running Environment
OpenEnv clients are async by default. Use the async client for production code, parallel environment runs, and integrations with async frameworks.
import asyncio
from echo_env import EchoAction, EchoEnv
async def main():
async with EchoEnv(base_url="https://openenv-echo-env.hf.space") as client:
result = await client.reset()
print(result.observation.echoed_message)
result = await client.step(EchoAction(message="Hello, World!"))
print(result.reward)
asyncio.run(main())For scripts and notebooks, use .sync():
from echo_env import EchoAction, EchoEnv
with EchoEnv(base_url="https://openenv-echo-env.hf.space").sync() as client:
result = client.reset()
result = client.step(EchoAction(message="Hello, World!"))
print(result.observation.echoed_message)Use Containers or Local Servers
You can run an environment from a Docker image:
import asyncio
from echo_env import EchoEnv
async def main():
client = await EchoEnv.from_docker_image(
"registry.hf.space/openenv-echo-env:latest"
)
async with client:
result = await client.reset()
print(result.observation)
asyncio.run(main())Or connect to a local server:
cd path/to/echo-env
uv venv
source .venv/bin/activate
uv pip install -e .
uv run server --host 0.0.0.0 --port 8000from echo_env import EchoEnv
with EchoEnv(base_url="http://localhost:8000").sync() as client:
result = client.reset()