Agent Management

Create New Agent

# Interactive mode
composabl agent new

# With all options
composabl agent new \
  --name my-agent \
  --type local \
  --location ./agents/

# Agent types:
# - local: For local development
# - docker: For Docker deployment
# - composabl: For cloud deployment

Generated Agent Structure

# agent.py
import os
from composabl import Agent, Skill, Trainer, MaintainGoal, Sensor

# Accept EULA and set license
os.environ["COMPOSABL_EULA_AGREED"] = "1"
# os.environ["COMPOSABL_LICENSE"] = "YOUR_LICENSE_KEY"

class BalanceTeacher(MaintainGoal):
    def __init__(self, *args, **kwargs):
        super().__init__(
            "pole_theta", 
            "Maintain pole upright", 
            target=0, 
            stop_distance=0.418
        )
    
    async def compute_action_mask(self, transformed_sensors, action):
        return None
    
    async def transform_sensors(self, sensors, action):
        return sensors
    
    async def transform_action(self, transformed_sensors, action):
        return action
    
    async def filtered_sensor_space(self):
        return ["cart_pos", "cart_vel", "pole_theta", "pole_alpha"]

def main():
    # Create agent
    a = Agent()
    
    # Add sensors
    a.add_sensors([
        Sensor("cart_pos", "Cart Position", lambda obs: obs[0]),
        Sensor("cart_vel", "Cart Velocity", lambda obs: obs[1]),
        Sensor("pole_theta", "Pole Angle", lambda obs: obs[2]),
        Sensor("pole_alpha", "Pole Angular Velocity", lambda obs: obs[3])
    ])
    
    # Add skill
    skill = Skill("pole-balance", BalanceTeacher)
    a.add_skill(skill)
    
    # Configure trainer
    r = Trainer({
        "target": {"local": {"address": "localhost:1337"}},
        "post_processing": {
            "record": {
                "is_enabled": True,
                "file_path": "/tmp/composabl/recordings"
            }
        }
    })
    
    # Train
    r.train(a, train_cycles=5)
    r.close()

if __name__ == "__main__":
    main()

Train Agent

# Train Python agent file
composabl agent train ./agents/my-agent/agent.py

# Train with JSON configuration
composabl agent train --agent-json ./configs/agent.json

Visualize Agent

# Visualize agent structure from JSON
composabl agent visualize ./agent.json

Last updated