Quickstart

This guide walks you through evaluating your first policy with Maple.

Step 1: Start the Daemon

Maple uses a daemon process to manage policies and environments:

maple serve

The daemon starts on port 8000 by default. You can change this:

maple serve --port 9000 --device cuda:1

To run in the background:

maple serve --detach

Step 2: Pull a Policy

Download policy weights from Hugging Face and pull docker image:

maple pull policy openpi:pi05_libero

This downloads the OpenPI Libero model to ~/.maple/models/.

Step 3: Serve the Policy

Load the policy into a Docker container:

maple serve policy openpi:pi05_libero --device cuda:0 --mdl-kwargs '{"config_name": "pi05_libero"}'

Output:

✓ Serving policy: openpi:pi05_libero
  Policy ID: openpi-pi05_libero-95ac132c
  Port: http://localhost:50123
  Device: cuda:0

Note the Policy ID — you’ll need it for evaluation.

Step 4: Pull an Environment

Pull the environment Docker image:

maple pull env libero

Step 5: Serve the Environment

Start an environment container:

maple serve env libero

Output:

✓ Serving env: libero (1 instance(s))
  • libero-x1y2z3w4 → http://localhost:50124

Step 6: Run a Single Evaluation

Run the policy on a single task:

maple run openpi-pi05_libero-95ac132c libero-x1y2z3w4 \
    --task libero_10/0 \
    --max-steps 300

Output:

✓ Task completed successfully!

Results:
  Run ID: run-abc123
  Steps: 156
  Total Reward: 1.0000
  Terminated: True

Step 7: Batch Evaluation

Evaluate across multiple tasks and seeds:

maple eval openpi-pi05_libero-95ac132c libero-x1y2z3w4 libero \
    --tasks libero_10 \
    --seeds 0,1,2 \
    --output results/

Output:

Batch Evaluation Results: batch-20240131-123456
==================================================
Policy: openpi-pi05_libero-95ac132c
Environment: libero-x1y2z3w4
Tasks: 10 | Seeds: 3

Overall Results:
  Episodes: 30
  Success Rate: 72.0%
  Avg Reward: 0.847
  Avg Steps: 156.3

Per-Task Results:
  libero_10/0: 100.0% (3/3) reward=1.000
  libero_10/1: 66.7% (2/3) reward=0.756
  ...

✓ Results saved: results/batch-20240131-123456.json

Step 8: Check Status

View running policies and environments:

maple status

Output:

VLA daemon running
  Port: 8000
  Device: cuda:0

Pulled: 1 policies, 1 envs

Serving:
  Policies:
    • openpi-pi05_libero-95ac132c
  Environments:
    • libero-x1y2z3w4

Step 9: Cleanup Resources

Remove a policy when no longer needed:

maple remove policy openpi:pi05_libero

This stops containers, removes database entries, and deletes model weights.

Remove an environment:

maple remove env libero

If you manually deleted files, sync the database:

# After manual deletion: rm -rf ~/.maple/models/openpi/
maple sync policies

Step 10: Stop Everything

Stop a specific policy:

maple policy stop openpi-pi05_libero-95ac132c

Stop the daemon (cleans up all containers):

maple stop

Next Steps

  • Configuration — Customize defaults with config files

  • eval — Advanced evaluation options

  • remove — Clean resource management

  • sync — Database synchronization

  • Adding Policies — Add support for new policies