Releases: huggingface/OpenEnv
Releases · huggingface/OpenEnv
v0.3.1
What's Changed
- envs/opencode_env: OpenCode coding-agent harness environment by @adithya-s-k in #656
- Validate env Hub deployment by @burtenshaw in #655
- chore(deps): bump idna from 3.14 to 3.15 in /envs/finqa_env by @dependabot[bot] in #721
- chore(deps): bump idna from 3.11 to 3.15 in /envs/textarena_env by @dependabot[bot] in #697
- chore(deps): roll up env Dependabot updates by @burtenshaw in #723
- chore(deps): roll up core Dependabot updates by @burtenshaw in #724
- [codex] remove meta cla check by @burtenshaw in #728
- [pypi] publish openenv package by @burtenshaw in #732
- fix(repl_env): handle nested parens in FINAL(...) extraction by @kashif in #653
- chore(deps): bump idna from 3.14 to 3.15 in /envs/julia_env by @dependabot[bot] in #725
- Add missing tutorials to web index by @sergiopaniego in #679
- fix: stop logging access tokens in user_manager error path by @kar137 in #722
- fix(textarena): use relative import in rewards.py by @miniMaddy in #470
- Improve PyPI release automation by @burtenshaw in #735
- [codex] governance docs by @burtenshaw in #734
- fix: update pyproject.toml path in base Dockerfile by @targeted-DK in #327
- chore: release 0.3.1 by @burtenshaw in #737
New Contributors
- @kar137 made their first contribution in #722
- @miniMaddy made their first contribution in #470
- @targeted-DK made their first contribution in #327
Full Changelog: v0.3.0...v0.3.1
Release v0.3.0
OpenEnv 0.3.0
Core harness runtime
- Add the new session harness runtime and collection pipeline for OpenEnv environments.
- Add harness adapters and examples for BrowserGym, OpenSpiel, and Reasoning Gym workflows.
- Add the
openenv collectCLI path, shared collection helpers, and tests for rollout collection.
New environments
- Add Agent World Model (AWM-1K), a synthetic agentic environment suite with MCP tools, SQLite-backed state, verification logic, and concurrent isolated sessions.
- Add E2B-backed coding environments:
jupyter_env,terminus_env, andcoding_tools_env. - Add Gradio interfaces and lifecycle controls for the new coding environments.
Deployment and CLI
- Extend
openenv pushwith runtime variables and secrets via-e/--env-var,--secret, and optionalvariables:entries inopenenv.yaml. - Add
--hardware/-Hto choose Hugging Face Space hardware at deploy time. - Add
--count/-nto deploy multiple Space replicas with suffixed repo IDs. - Accept bare repository names in
openenv push --repo-id. - Improve validation for default
openenv initprojects.
Web UI and environment fixes
- Let environments control their Gradio tab layout.
- Improve REPL environment onboarding and fix stale
llm_modelcaching across resets. - Improve concurrent session behavior across BrowserGym, Echo, OpenSpiel, Reasoning Gym, and TextArena.
- Fix CARLA
donepropagation and Docker environment-variable leakage. - Fix TBench2 reward evaluation behavior.
- Standardize and harden Hugging Face canonical Gradio deployment tooling.
Documentation and examples
- Restructure the docs navigation after the Sphinx migration and remove legacy MkDocs artifacts.
- Add tutorials for BrowserGym harness usage, SFT warmup, MCP environments, Rubrics, Inspect AI evaluation, and end-to-end workflows.
- Add deployment and environment-builder guide updates for the current
openenv pushworkflow. - Add
sync_env_docs.pychecks to keep environment documentation aligned.
Maintenance
- Update CI workflow actions and dependency groups.
- Consolidate Dependabot behavior around root-level updates.
- Refresh dependencies across environment lockfiles, including FastMCP, Python multipart, Authlib, Cryptography, Pillow, Pytest, and related environment-specific packages.
Full changelog: v0.2.3...v0.3.0
Release v0.2.3
OpenEnv 0.2.3
Core web fixes
- redirect
GET /andGET /webto/web/for Gradio-backed Spaces - return
409fromGET /web/statebefore reset instead of surfacing an internal error - accept optional reset kwargs on
POST /web/reset
Hub rollout tooling
- add the shared
gradio_webprobe and expandrepl_webfor root-path validation - default canonical collection discovery to first-party unsuffixed spaces
- keep repo-id override / reconcile support for canonical promotion and collection cleanup
REPL UI
- keep the REPL-specific Gradio control panel and related server compatibility fixes for Hub deployment
OpenEnv v0.2.2 Release
Core Features
- Async-first environment clients with persistent WebSocket sessions, plus a sync wrapper for non-async code. The core loop is standardized around
reset(),step(), andstate(). - Rubric/evaluation support for RL and agentic evaluation, including delayed rewards,
EvalHarness, Inspect/LightEval-style harnesses, and LLM-as-a-judge scoring viaLLMJudge. - Auto-discovery API via
AutoEnvandAutoAction, so callers can load envs by short name, package-name variant, or Hub repo ID instead of hardcoding imports. - MCP-native environments via
MCPEnvironment, including tool discovery, tool calls through the env API, FastMCP 2.x/3.x compatibility, reserved-name validation, persistent MCP sessions, production vs simulation modes, and code mode support. - Built-in web UI at
/webfor interactive env inspection, with dynamic forms, action history, and live state updates. - Creator CLI bundled in
openenv-core:openenv init,build,validate,push,fork,serve, andskills. - One-command Hugging Face publishing flow for env authors, plus fork/duplicate support for existing Spaces and custom registry pushes.
More Features
- Generic client support via
GenericEnvClient/GenericActionfor raw-dict access when you do not want to install env-specific code or trust remote code locally. - Typed environment contracts built on Pydantic models for
Action,Observation,State, andStepResult, including parameterizedreset/stepsupport. - Multiple connection modes for the same env client: connect to a live URL, launch from a Docker image, or run a Hugging Face Space locally with
uv. - Runtime/provider abstraction for local execution:
LocalDockerProvider,UVProvider,DockerSwarmProvider, Daytona support, and a Kubernetes-shaped extension point. - Multi-mode deployment validation in the CLI, including local structure checks and live endpoint/runtime checks for deployed envs.
- One-command Hugging Face publishing flow for env authors, plus fork/duplicate support for existing Spaces and custom registry pushes.
- Release/deploy infrastructure for env fleets, including versioned Hub tags, collection management, per-env deployment scripts, and endpoint verification tooling.
- The package is now a real distributable core runtime,
openenv-core, with the CLI included rather than a loose repo-only developer tool. - The framework is explicitly agent-facing, with Hub-hosted envs, MCP tools, sync/async client ergonomics, evaluation hooks, and RL-platform integration docs for TRL, Torchforge, Oumi, ART, and others.
Example Snippets
Async env usage plus sync wrapper
import asyncio
from echo_env import EchoAction, EchoEnv
async def main():
async with EchoEnv(base_url="https://openenv-echo-env.hf.space") as env:
await env.reset()
result = await env.step(EchoAction(message="Hello, OpenEnv!"))
print(result.observation.echoed_message)
asyncio.run(main())
with EchoEnv(base_url="https://openenv-echo-env.hf.space").sync() as env:
env.reset()
print(env.step(EchoAction(message="sync call")).observation.echoed_message)Auto-discovery instead of manual imports
from openenv import AutoEnv, AutoAction
env = AutoEnv.from_env("coding-env")
CodeAction = AutoAction.from_env("coding-env")
with env.sync() as client:
client.reset()
result = client.step(CodeAction(code="print('Hello from AutoEnv')"))
print(result.observation)Run from Hub Docker or locally with uv
from echo_env import EchoEnv
env = await EchoEnv.from_env("openenv/echo_env") # pull HF Docker image
local = await EchoEnv.from_env(
"openenv/echo_env",
use_docker=False,
project_path="/path/to/local/echo_env",
)CLI for creation, validation, publishing, and forking
openenv init my_env
cd my_env
openenv validate --verbose
openenv push --repo-id my-org/my-env --private
openenv fork openenv/echo_env --repo-id myuser/echo-envMCP-style tool environments
from openenv.core.env_server import ListToolsAction, CallToolAction
obs = env.step(ListToolsAction())
print([tool.name for tool in obs.tools])
obs = env.step(CallToolAction(tool_name="echo", arguments={"message": "hi"}))
print(obs.result)LLM-based rubric scoring
from openenv.core.rubrics import LLMJudge
judge = LLMJudge(
prompt_template="Rate this action:\n{action}\n\nGiven observation:\n{observation}\nScore 0-1:",
client=client,
)
score = await judge(action, observation)Built-in web UI for local envs
from openenv.core.env_server import create_web_interface_app
app = create_web_interface_app(env, YourAction, YourObservation)
# browse http://localhost:8000/webWhat's Changed
- Remove envtorch dir nesting and add base env code by @pankit-eng in #2
- Add boiler plate code for CodingEnv by @pankit-eng in #3
- Initial skeleton by @Darktex in #1
- Add BaseHTTPClient to talk to Envs via JSON over RPC. by @pankit-eng in #4
- Env code by @pankit-eng in #5
- restructure env server and client code for coding env by @pankit-eng in #6
- fix imports by @pankit-eng in #7
- basic skeleton for creating a client from docker image'd server by @pankit-eng in #8
- add http server wrapper for gymnasium APIs: step, reset, state by @pankit-eng in #9
- move echo server README to top by @pankit-eng in #10
- change README title for echo environment by @pankit-eng in #11
- Add docker files for base image and echo env by @pankit-eng in #12
- Make echo env work e2e by @pankit-eng in #13
- rename echo env client and update documentation by @pankit-eng in #14
- Fix README by @pankit-eng in #15
- fix READMe by @pankit-eng in #16
- Add pyexecutor abd relevant coding env by @pankit-eng in #17
- Fix python executor by @pankit-eng in #18
- Move coding env client to main coding env dir to follow same conventi… by @pankit-eng in #19
- Update documentation and remove dead code by @pankit-eng in #20
- merge env code and main by @pankit-eng in #21
- Env code by @pankit-eng in #22
- remove flake by @pankit-eng in #23
- Fix space on README by @pankit-eng in #24
- Update README.md by @jspisak in #27
- Add basic ChatEnv by @Darktex in #25
- Update local_coding_env.py by @jspisak in #29
- Add project structure for easier maneuvering in the repo by @pankit-eng in #31
- Added RFC 001 to README by @zkwentz in #30
- Update README.md by @jspisak in #34
- More community support by @danielhanchen in #36
- [Openspiel Integration] Adding 6 games from Openspiel along with Env interface by @init27 in #33
- Build docker images using github actions by @pankit-eng in #35
- Atari env by @init27 in #39
- [RFC 001] - Baseline API and Interface Specifications by @pankit-eng in #26
- [RFC 002] Discoverability of environment tools by agents by @pankit-eng in #32
- Add supported RL tools section to README by @jspisak in #45
- Enhance community support and acknowledgments section by @jspisak in #50
- Add Surge AI to supporters list in README by @NickHeiner in #53
- Add CI to build and deploy example environments to OpenEnv Hugging Face spaces with optional web interfaces by @zkwentz in #49
- add FinRL Env by @init27 in #38
- Sumo rl: Traffic Simulation Environment by @init27 in #41
- Rename project from 'envtorch' to 'openenv' by @lewtun in #60
- fix: training loop example for sumo rl by @k223kim in #61
- Add RFC 000 by @Darktex in #44
- Remake RFC directory, add new RFCs by @Darktex in #57
- Add Axolotl AI to supporters/ack list by @winglian in #64
- [WIP] Intro Colab example by @init27 in #46
- fix logo in Colab nb by @init27 in htt...
OpenEnv v0.2.1 Release
OpenEnv v0.2.1 Release Notes
Release Commit: c2997e8f78588a6f0657950457c57725d1750fe8
Date: January 31, 2026
Highlights
This release introduces MCP (Model Context Protocol) support and significant improvements to the development workflow with TDD tooling.
New Features
MCP Support (Phase 1)
- Added Model Context Protocol support for agent-environment communication (#224)
- Refactored EchoEnv to use inline FastMCP tool pattern (#321)
- Addressed review feedback for MCP implementation (#312)
RFC 004: Rubrics & Delayed Rewards
- Added RFC 004 defining the Rubrics specification (#237)
- Implemented delayed rewards support for trajectory-based scoring (#337)
TDD Workflow & Developer Tooling
- Added comprehensive TDD workflow with git hooks, agents, and skills (#311)
- Added
.worktrees/to.gitignorefor isolated development (#330)
Bug Fixes & Improvements
- Fixed reward metadata handling in coding environment (#305)
- Fixed
openenv-coredependency issues in build process - Fixed deprecation warnings during package builds
- Fixed flat copy of TOML file in build process
- Updated EchoEnv hub reference in quickstart guide (#317)
Documentation
- Updated T2Bench documentation and deployment instructions
Dependencies
- Bumped
urllib3to 2.6.3 insnake_envandtextarena_env - Bumped
filelockto 3.20.3 intextarena_env
Repository Maintenance
- Unified line endings to LF across the repository (#350)
- Added Scaler AI Labs to supporter list in README
Upgrading
pip install --upgrade openenv-core==0.2.1
What's Changed
- Fix URL to
trlexample inREADME.mdby @alvarobartt in #277 - Fixing dataclass pydantic issue by @Vidit-Ostwal in #279
- Fix TypeError: PythonCodeActEnv.step() missing 1 required positional argument: 'action' by @wukaixingxp in #278
- [TextArena] environment updates by @kashif in #281
- [ENHANCEMENT] Upgrade textarena env to new cli and websockets by @burtenshaw in #280
- [FIX] Update-echo-env to 0.2.0 by @burtenshaw in #283
- Fix tomli compatibility issue for older Python version by @AlirezaShamsoshoara in #286
- Bump requests from 2.25.0 to 2.32.4 in /envs/dipg_safety_env/server by @dependabot[bot] in #261
- [Envs] Repl env for RLM by @kashif in #282
- Update REPL deployed Space url AND update REPL tests by @sergiopaniego in #291
- Add agentic-first workflow infrastructure for Claude Code by @Darktex in #287
- Add Python-based PR review bot with time-based filtering by @Darktex in #295
- Gpu mode presentation by @burtenshaw in #298
- add HuggingFace-style AutoEnv and AutoAction classes by @wukaixingxp in #222
- [Enhancement] - Add new environment - Support Unity ML-Agents-Envs by @AlirezaShamsoshoara in #285
- [Enhancement] - Adding new environments - OpenApps Env from FAIR by @AlirezaShamsoshoara in #276
- [Fix] Complete HTTPEnvClient to EnvClient migration by @Darktex in #301
- Fix some issues in docs by @sergiopaniego in #304
- [FIX] Update Openspiel env to 0.2.0 by @sergiopaniego in #302
- Update README to 0.2.0 based on quick start docs by @sergiopaniego in #303
- [Envs] added terminal bench-2 Env by @kashif in #307
- Fix README.md by @richardprobe in #306
- Fixing oolang simple example by @Vidit-Ostwal in #299
- Bump urllib3 from 2.6.2 to 2.6.3 in /envs/textarena_env by @dependabot[bot] in #309
- [RFC 003] Add MCP (Model Context Protocol) support - Phase 1 by @Darktex in #224
- fix: Address PR 224 review comments for MCP support by @Darktex in #312
- feat: Add TDD workflow with hooks, agents, and skills by @Darktex in #311
- Update T2Bench docs and deployment by @sergiopaniego in #314
- Fix reward metadata coding env by @albertodepaola in #305
- Bump urllib3 from 2.5.0 to 2.6.3 in /envs/snake_env by @dependabot[bot] in #300
- Bump filelock from 3.20.2 to 3.20.3 in /envs/textarena_env by @dependabot[bot] in #294
- Update EchoEnv hub reference in quickstart guide by @wukaixingxp in #317
- Refactor EchoEnv to use inline FastMCP tool pattern by @Darktex in #321
- Add Scaler AI Labs to supporter list in README.md by @suryateja-7 in #323
- Add .worktrees/ to .gitignore by @Darktex in #330
- [RFC] Add RFC 004: Rubrics by @Darktex in #237
- Envs/0.2.0 by @Jiya126 in #320
- RFC 004: Add delayed rewards support for trajectory-based scoring by @Darktex in #337
- Adding chess environment by @luccabb in #324
- Fix chess tests to skip when moonfish/python-chess not installed by @Darktex in #345
- Unify line endings to LF across the repository by @Darktex in #350
New Contributors
- @rycerzes made their first contribution in #160
- @Jatkingmodern made their first contribution in #136
- @sergiopaniego made their first contribution in #178
- @Laurent2916 made their first contribution in #190
- @stefanwebb made their first contribution in #195
- @wyatt-halluminate made their first contribution in #220
- @AlirezaShamsoshoara made their first contribution in #202
- @maneetbansal made their first contribution in #223
- @wukaixingxp made their first contribution in #229
- @Lawhy made their first contribution in #181
- @Zhiyuan-Zeng made their first contribution in #241
- @santoshsahturing made their first contribution in #242
- @andrewpark-scaleai made their first contribution in #264
- @alvarobartt made their first contribution in #277
- @dependabot[bot] made their first contribution in #261
- @richardprobe made their first contribution in #306
- @albertodepaola made their first contribution in #305
- @suryateja-7 made their first contribution in #323
- @Jiya126 made their first contribution in #320
- @luccabb made their first contribution in #324
Full Changelog: https://github.com/meta-pytorch/OpenEnv/commits/v0.2.1