Main

Composabl Main API Documentation

Overview

The Composabl Main API is the primary interface for the Composabl SDK. It provides a unified wrapper that combines functionality from composabl-core, composabl-train, and composabl-cli into a single, convenient package.

Installation

pip install composabl

This single installation provides access to all Composabl SDK components.

Package Structure

The main package re-exports all public APIs from:

  • composabl_core: Core components and building blocks

  • composabl_train: Training infrastructure

  • composabl_cli: Command-line interface (available via composabl command)

Basic Usage

Importing

All functionality is available through the main composabl import:

from composabl import (
    # Core Components
    Agent, Skill, Sensor, Scenario, Perceptor,
    
    # Skill Types
    SkillTeacher, SkillController, SkillSelector,
    SkillCoordinatedSet, SkillCoordinatedPopulation,
    
    # Goals
    MaintainGoal, ApproachGoal, AvoidGoal, 
    MaximizeGoal, MinimizeGoal,
    
    # Training
    Trainer,
)

Environment Setup

Before using Composabl, configure your environment:

import os

# Required: Set your license key
os.environ["COMPOSABL_LICENSE"] = "your-license-key"

# Required: Accept the EULA
os.environ["COMPOSABL_EULA_AGREED"] = "1"

# Optional: Set log level
os.environ["LOGLEVEL"] = "INFO"  # DEBUG, INFO, WARNING, ERROR

Goal Types

# Maintain a value
MaintainGoal(sensor_name, description, target, stop_distance)

# Approach a target
ApproachGoal(sensor_name, description, target)

# Avoid a value
AvoidGoal(sensor_name, description, target, stop_distance)

# Maximize a metric
MaximizeGoal(sensor_name, description)

# Minimize a metric
MinimizeGoal(sensor_name, description)

Configuration Options

config = {
    "license": "key",
    "target": {
        # Choose one:
        "local": {"address": "host:port"},
        "docker": {"image": "name:tag"}
    },
    "env": {
        "name": "environment-id",
        "init": {}  # Environment parameters
    },
    "resources": {
        "sim_count": 4,
        "num_workers": 2,
        "num_gpus": 0
    }
}

Core Classes

# Agent - Main orchestrator
agent = Agent()
agent.add_sensor(sensor)
agent.add_sensors([sensor1, sensor2])
agent.add_skill(skill)
agent.add_skills([skill1, skill2])
agent.add_perceptor(perceptor)
agent.export(path)
agent.draw()  # Visualize structure

# Skill - Behavior module
skill = Skill(name, implementation)

# Sensor - Data transformer
sensor = Sensor(name, description, extractor_fn)

# Scenario - Initial conditions
scenario = Scenario(variable_dict)

# Trainer - Training orchestrator
trainer = Trainer(config)
trainer.train(agent, train_cycles)
trainer.evaluate(agent, num_episodes)
trainer.package(agent)
trainer.close()

Migration Guide

If migrating from separate imports:

# Old way
from composabl_core import Agent, Skill
from composabl_train import Trainer

# New way (recommended)
from composabl import Agent, Skill, Trainer

Debug Mode

Enable detailed logging:

import logging
logging.basicConfig(level=logging.DEBUG)

# Or via environment
os.environ["LOGLEVEL"] = "DEBUG"

Last updated