Environment Registry

The Environment Registry provides a centralized system for registering, discovering, and instantiating AI environments within the synth-ai ecosystem.

Overview

The registry system enables:
  • Environment Discovery: Find available environments by name or type
  • Dynamic Loading: Load environments at runtime
  • Configuration Management: Handle environment-specific configurations
  • Version Management: Support multiple versions of environments
  • Plugin System: Register custom environments

Basic Usage

Registering Environments

from synth_ai.environments.registry import EnvironmentRegistry

# Get the global registry
registry = EnvironmentRegistry.get_instance()

# Register a custom environment
@registry.register("my-custom-env", version="1.0")
class MyCustomEnvironment:
    def __init__(self, config):
        self.config = config
    
    def reset(self):
        return {"state": "initial"}

Loading Environments

# Load environment by name
env = registry.create("my-custom-env", config={"param": "value"})

# Load with specific version
env = registry.create("my-custom-env", version="1.0")

# List available environments
available = registry.list_environments()
print(available)  # ["my-custom-env", "crafter", "text-env", ...]

Built-in Environments

The registry comes pre-loaded with standard environments:

Crafter Environment

env = registry.create("crafter", config={
    "world_size": (64, 64),
    "max_steps": 1000,
    "render_mode": "rgb_array"
})

Text Environments

env = registry.create("text-qa", config={
    "dataset": "squad",
    "max_context_length": 2048
})

Environment Metadata

Registry maintains metadata for each environment:
# Get environment info
info = registry.get_info("crafter")
print(info)
# {
#     "name": "crafter",
#     "version": "2.0",
#     "description": "Minecraft-like crafting environment",
#     "observation_space": {...},
#     "action_space": {...},
#     "tags": ["gaming", "crafting", "multimodal"]
# }

# Search by tags
gaming_envs = registry.find_by_tags(["gaming"])