Simulator Management

Create New Simulator

# Create basic simulator
composabl sim new \
  --name reactor-sim \
  --description "Chemical reactor simulator" \
  --location ./simulators/

# Create Docker-ready simulator
composabl sim new \
  --name reactor-sim \
  --description "Chemical reactor simulator" \
  --location ./simulators/ \
  --docker

Generated Simulator Structure

Basic simulator:

reactor-sim/
├── pyproject.toml
├── README.md
└── reactor_sim/
    ├── __init__.py
    ├── sim.py       # Environment implementation
    └── sim_impl.py  # Composabl interface

Docker simulator adds:

reactor-sim/
├── Dockerfile
├── main.py
├── docker/
│   └── sim-start.sh
└── module/
    └── reactor_sim/
        └── ...

Run Simulator

# Run from current directory
composabl sim run

# Run specific simulator
composabl sim run ./simulators/reactor-sim/

# Run with options
composabl sim run \
  --path ./simulators/reactor-sim/ \
  --host 0.0.0.0 \
  --port 8080 \
  --protocol grpc \
  --env-init '{"difficulty": "medium", "seed": 42}'

Validate Simulator

# Validate simulator in current directory
composabl sim validate

# Validate specific path
composabl sim validate ./simulators/reactor-sim/

# Validate running simulator
composabl sim validate --address localhost:1337 --protocol grpc

Validation checks:

  • Proper interface implementation

  • Space definitions

  • Reset/step functionality

  • Scenario handling

  • Rendering capabilities

Benchmark Simulator

# Benchmark current directory
composabl sim benchmark

# Benchmark with options
composabl sim benchmark \
  --samples 5000 \
  --address localhost:1337

# Output: Samples per second: 15243.7

Docker Simulator Management

Start Simulator Container

# Start simulator
composabl sim start sim-cartpole

# Start with historian
composabl sim start sim-cartpole --enable-historian

# Stream logs
composabl sim start sim-cartpole --stream

# Get container name only
composabl sim start sim-cartpole --show-name

List Running Simulators

# Show all running simulators
composabl sim status

# Example output:
Name          Image                    Address         Ports          Historian  Version
sim-cartpole  composabl/sim-cartpole  localhost:32768  32768->1337   True       latest
sim-reactor   composabl/sim-reactor   localhost:32769  32769->1337   False      v2.1.0

Get Simulator Status

# Specific simulator status
composabl sim status sim-cartpole

# Get connection string only
composabl sim status sim-cartpole --moniker
# Output: localhost:32768

View Logs

# View logs
composabl sim logs sim-cartpole

# Stream logs
composabl sim logs sim-cartpole --stream

Stop Simulators

# Stop specific simulator
composabl sim stop sim-cartpole

# Stop all simulators
composabl sim stop

Get Simulator Information

# Get info from running simulator
composabl sim info --address localhost:1337

# Get info from Docker image
composabl sim info --name sim-cartpole

# Output:
Simulator Info
- Address: localhost:1337
- Env ID: CartPole-v1
- Is Port Open? True
- Is Channel Available? True

Space Info
- Sensor Space: Box([-4.8, -inf, -0.418, -inf], [4.8, inf, 0.418, inf])
- Action Space: Discrete(2)

Sensors
  Sensor("cart_position", "")
  Sensor("cart_velocity", "")
  Sensor("pole_angle", "")
  Sensor("pole_angular_velocity", "")

Get Space Mappings

# From running simulator
composabl sim mappings --address localhost:1337

# From Docker image
composabl sim mappings --image composabl/sim-demo

# Output (JSON):
{
  "action_space": {
    "space": "Discrete(2)",
    "mappings": [
      {"name": "action", "type": "discrete", "values": [0, 1]}
    ]
  },
  "sensor_space": {
    "space": "Box(...)",
    "mappings": [
      {"name": "cart_pos", "type": "continuous", "low": -4.8, "high": 4.8},
      {"name": "cart_vel", "type": "continuous", "low": -inf, "high": inf},
      {"name": "pole_angle", "type": "continuous", "low": -0.418, "high": 0.418},
      {"name": "pole_vel", "type": "continuous", "low": -inf, "high": inf}
    ]
  }
}

List Available Simulators

# List local Docker images
composabl sim list --local

# List from platform
composabl sim list

# Output:
Name              Version  Description                  Status      UUID
reactor-sim       2        Chemical reactor simulator   READY       abc123
navigation-sim    1        Robot navigation simulator   BUILDING    def456

Publish Simulator

# Publish to platform
composabl sim publish ./simulators/reactor-sim/

Delete Simulator

# Interactive deletion
composabl sim delete

Last updated