Skip to content

Releases: huggingface/OpenEnv

v0.3.1

02 Jun 08:47
7449c5d

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.3.0...v0.3.1

Release v0.3.0

11 May 11:37
83711aa

Choose a tag to compare

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 collect CLI 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, and coding_tools_env.
  • Add Gradio interfaces and lifecycle controls for the new coding environments.

Deployment and CLI

  • Extend openenv push with runtime variables and secrets via -e/--env-var, --secret, and optional variables: entries in openenv.yaml.
  • Add --hardware/-H to choose Hugging Face Space hardware at deploy time.
  • Add --count/-n to deploy multiple Space replicas with suffixed repo IDs.
  • Accept bare repository names in openenv push --repo-id.
  • Improve validation for default openenv init projects.

Web UI and environment fixes

  • Let environments control their Gradio tab layout.
  • Improve REPL environment onboarding and fix stale llm_model caching across resets.
  • Improve concurrent session behavior across BrowserGym, Echo, OpenSpiel, Reasoning Gym, and TextArena.
  • Fix CARLA done propagation 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 push workflow.
  • Add sync_env_docs.py checks 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

28 Mar 18:56

Choose a tag to compare

OpenEnv 0.2.3

Core web fixes

  • redirect GET / and GET /web to /web/ for Gradio-backed Spaces
  • return 409 from GET /web/state before reset instead of surfacing an internal error
  • accept optional reset kwargs on POST /web/reset

Hub rollout tooling

  • add the shared gradio_web probe and expand repl_web for 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

20 Mar 17:52
7fdccfa

Choose a tag to compare

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(), and state().
  • Rubric/evaluation support for RL and agentic evaluation, including delayed rewards, EvalHarness, Inspect/LightEval-style harnesses, and LLM-as-a-judge scoring via LLMJudge.
  • Auto-discovery API via AutoEnv and AutoAction, 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 /web for 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, and skills.
  • 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 / GenericAction for 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, and StepResult, including parameterized reset/step support.
  • 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-env

MCP-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/web

What's Changed

Read more

OpenEnv v0.2.1 Release

04 Feb 10:25

Choose a tag to compare

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 .gitignore for isolated development (#330)

Bug Fixes & Improvements

  • Fixed reward metadata handling in coding environment (#305)
  • Fixed openenv-core dependency 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 urllib3 to 2.6.3 in snake_env and textarena_env
  • Bumped filelock to 3.20.3 in textarena_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

New Contributors

Full Changelog: https://github.com/meta-pytorch/OpenEnv/commits/v0.2.1