Data & analysis

Train Robotic AI Models using Qualia

Try it

Fine-tune robotics VLA models on cloud GPUs from a CLI, with stable JSON output and exit codes.

What it does

Fine-tunes vision-language-action (VLA) robotics models on cloud GPUs from a CLI. Supports ACT, π0, π0.5, GR00T N1.5, SmolVLA, and SARM reward models, training on LeRobot-format HuggingFace datasets. Every command accepts `--json` for machine parsing, with exit codes distinguishing success, usage, auth, credit, validation, not-found, and network errors. Includes a `doctor` self-test, model/instance discovery, dataset key inspection, project/job lifecycle commands, and hyperparameter validation.

When to use it

  • Fine-tuning ACT, π0, π0.5, or GR00T N1.5 on a LeRobot-format dataset
  • Picking the right VLA base model for a humanoid or production setup
  • Running Reward-Aware Behavior Cloning with a SARM reward model
  • Estimating GPU cost and tracking job phases from the CLI

The skill document

Qualia

Fine-tune Vision-Language-Action (VLA) models for robotics on cloud GPUs.

Install and setup

Install from ClawHub / OpenClaw

Use the short slug:

openclaw skills install qualia-skill

If @fabbe1999/qualia-skill or fabbe1999/qualia-skill fails, retry with qualia-skill. Some OpenClaw installer versions only resolve the short slug even though the public ClawHub URL is https://clawhub.ai/fabbe1999/qualia-skill.

Configure API key

  1. Sign up at app.qualiastudios.dev
  2. Create an API key (Settings -> API Keys)
  3. Set the env var for local shell use:
    export QUALIA_API_KEY="your-api-key"
    

For OpenClaw, prefer configuring the key in ~/.openclaw/openclaw.json so agent runs receive it:

{
  skills: {
    entries: {
      qualia: {
        enabled: true,
        env: {
          QUALIA_API_KEY: "your-api-key"
        }
      }
    }
  }
}

Notes for agents:

  • The skill name is qualia, even though the ClawHub install slug is qualia-skill.
  • openclaw skills install places files in the workspace skills/ folder. Start a fresh agent turn/session after installing so skills are reloaded.
  • If the skill is installed but inactive, check skills.entries.qualia.enabled is not false and QUALIA_API_KEY is available.

Verify your install

First thing after setup, run the self-test:

python3 {baseDir}/scripts/qualia.py doctor

It checks the API key, auth/connectivity (/v1/credits), and the models endpoint. Exit 0 means everything works. Add --json for machine-readable results.

Machine-readable output

Every command accepts a global --json flag. In JSON mode, stdout carries exactly one JSON object or array and nothing else. Errors are emitted on stdout as {"error": {"code": , "message": "...", "details": ...}} with the matching exit code.

python3 {baseDir}/scripts/qualia.py --json credits
# {"balance": 90784}

Prefer --json when driving the CLI programmatically; parse stdout, branch on exit code.

Exit codes

CodeMeaning
0Success
1Generic/unknown failure
2Usage error (bad arguments, unknown command)
3Auth error (HTTP 401/403 or missing QUALIA_API_KEY)
4Insufficient credits (HTTP 402)
5Validation error (bad camera mapping, hyperparams, or dataset; HTTP 400/422)
6Not found (HTTP 404)
7Connection/network error

When Someone Asks to Train a Model

They probably won't give you everything upfront. Here's what you need and how to get it:

  1. Dataset: ask for their HuggingFace dataset ID (e.g. your-org/your-dataset)
  2. Model type: if they don't specify, run models and help them choose:
    • Quick prototyping → suggest ACT (fast, no base model needed)
    • Production quality → suggest π0.5 or π0
    • Humanoid robots → suggest GR00T N1.5
    • Resource-conscious → suggest SmolVLA
  3. Training duration: if unspecified, suggest 2 to 4 hours for a first run
  4. Camera mapping: run dataset-keys on their dataset, then models to see required slots, and map them automatically. Confirm with the user before launching.

If the user already has a project, use it. Otherwise create one.

When Things Go Wrong

SymptomLikely causeFix
Job stuck at credit_validationInsufficient creditsRun credits, tell user to top up
Fails at dataset_preprocessingBad camera mapping or invalid datasetRe-check dataset-keys output, verify mapping
Fails at instance_bootingGPU capacity issueTry a different instance type or region
Job failed with no clear errorCheck phase eventsRun status and read the event messages

Always run status and share the full phase history with the user when debugging.

Quick Start

# See what models are available (always check, new ones are added regularly)
python3 {baseDir}/scripts/qualia.py models

# Check GPU options and pricing
python3 {baseDir}/scripts/qualia.py instances

# Check your credit balance
python3 {baseDir}/scripts/qualia.py credits

Train a Model

# 1. Discover image keys in your dataset
python3 {baseDir}/scripts/qualia.py dataset-keys your-org/your-dataset

# 2. Create a project
python3 {baseDir}/scripts/qualia.py project-create "My Robot"

# 3. Launch training
python3 {baseDir}/scripts/qualia.py finetune   your-org/your-dataset 4 \
  '{"cam_1": "observation.images.top"}' \
  --model  \
  --name "My run"

# 4. Monitor
python3 {baseDir}/scripts/qualia.py status 

Notes:

  • Run models first to see which VLA types require --model and which don't
  • Camera mappings map model slots (from models) to dataset image keys (from dataset-keys)
  • Smart camera mapping: The API returns generic slot names (cam_1, cam_2, cam_3) but the underlying models have a specific input order. Map semantically using these known orders:
    • π0.5 / π0: cam_1 = base/overview camera, cam_2 = left wrist/arm, cam_3 = right wrist/arm
    • GR00T N1.5: cam_1 = base/overview camera, cam_2 = left wrist/arm, cam_3 = right wrist/arm
    • ACT / SmolVLA: cam_1 = primary camera, cam_2/cam_3 = secondary views
    • Fuzzy-match dataset keys to these roles: context_camera or base_0cam_1; left_wristleft_armcam_2; right_wristright_armcam_3
  • Omit --model for types that don't support custom models
  • Estimate cost before launching: run instances to get credits/hr, multiply by hours. Tell the user the estimated cost before confirming.
  • Dataset IDs on HuggingFace are case-sensitive, double-check the exact ID

Manage Jobs & Projects

python3 {baseDir}/scripts/qualia.py projects                     # List projects and jobs
python3 {baseDir}/scripts/qualia.py status               # Job status and phase history
python3 {baseDir}/scripts/qualia.py cancel               # Cancel a running job
python3 {baseDir}/scripts/qualia.py project-delete   # Delete a project

Custom Hyperparameters

# Get defaults
python3 {baseDir}/scripts/qualia.py hyperparams  [model_id]

# Validate overrides
python3 {baseDir}/scripts/qualia.py hyperparams-validate  '{"learning_rate": 1e-4}'

# Use in training
python3 {baseDir}/scripts/qualia.py finetune ... --hyper-spec '{"learning_rate": 1e-4, "num_epochs": 50}'

Finetune Flags

FlagDescription
--model Base model ID (required for some VLA types)
--name Job display name
--instance GPU instance type
--region Cloud region
--batch-size Batch size (1-512, default 32)
--hyper-spec ''Custom hyperparameters
--rabc Enable RA-BC with SARM reward model (HF path)
--rabc-image-key Image key for reward annotations
--rabc-head-mode RA-BC head mode (e.g. sparse)

RA-BC (Reward-Aware Behavior Cloning)

Use a trained SARM reward model to weight training samples. Supported on smolvla, pi0, pi05.

python3 {baseDir}/scripts/qualia.py finetune \
   pi0 your-org/your-dataset 4 \
  '{"cam_1": "observation.images.top"}' \
  --model lerobot/pi0 \
  --rabc your-org/sarm-reward-model \
  --rabc-image-key observation.images.top \
  --rabc-head-mode sparse

Job Phases

queuing → credit_validation → instance_booting → instance_activation → instance_setup → dataset_preprocessing → training_running → model_uploading → completed

Terminal: completed, failed, cancelled

Live Docs

For the latest models, endpoints, and capabilities, always check the live documentation:

Related skills

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Read and write Excel workbooks, worksheets, ranges, tables, and charts in OneDrive through Microsoft Graph with managed OAuth.

by byungkyu800 installs42 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván854 installs69 stars