OpenEnv documentation

Your First Environment

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.4.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Your First Environment

This page is a condensed preview. For the end-to-end walk-through — including Docker packaging, openenv.yaml, and Hugging Face Space deployment — see the full environment builder guide.

Overview

Building an OpenEnv environment involves:

  1. Define your models - Action, Observation, and State types
  2. Implement the environment - Core logic in a Python class
  3. Create the server - FastAPI wrapper for HTTP access
  4. Package for deployment - Docker container and manifest

Quick Example

Here’s a minimal environment that echoes back messages. Reward and done are fields on the Observationstep returns an observation, not a tuple.

from openenv.core.env_server.interfaces import Environment
from openenv.core.env_server.types import Action, Observation, State


class EchoAction(Action):
    message: str


class EchoObservation(Observation):
    echo: str


class EchoState(State):
    last_message: str = ""


class EchoEnvironment(Environment[EchoAction, EchoObservation, EchoState]):
    def reset(self, seed=None, episode_id=None, **kwargs) -> EchoObservation:
        self._state = EchoState()
        return EchoObservation(echo="Ready!")

    def step(self, action: EchoAction, timeout_s=None, **kwargs) -> EchoObservation:
        self._state.last_message = action.message
        return EchoObservation(echo=action.message, reward=0.0, done=False)

    @property
    def state(self) -> EchoState:
        return self._state

Next Steps

Update on GitHub