Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Data & analysis
Train Robotic AI Models using Qualia
Try itFine-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
- Sign up at app.qualiastudios.dev
- Create an API key (Settings -> API Keys)
- 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 isqualia-skill. openclaw skills installplaces files in the workspaceskills/folder. Start a fresh agent turn/session after installing so skills are reloaded.- If the skill is installed but inactive, check
skills.entries.qualia.enabledis notfalseandQUALIA_API_KEYis 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
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Generic/unknown failure |
| 2 | Usage error (bad arguments, unknown command) |
| 3 | Auth error (HTTP 401/403 or missing QUALIA_API_KEY) |
| 4 | Insufficient credits (HTTP 402) |
| 5 | Validation error (bad camera mapping, hyperparams, or dataset; HTTP 400/422) |
| 6 | Not found (HTTP 404) |
| 7 | Connection/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:
- Dataset: ask for their HuggingFace dataset ID (e.g.
your-org/your-dataset) - Model type: if they don't specify, run
modelsand 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
- Training duration: if unspecified, suggest 2 to 4 hours for a first run
- Camera mapping: run
dataset-keyson their dataset, thenmodelsto 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
| Symptom | Likely cause | Fix |
|---|---|---|
Job stuck at credit_validation | Insufficient credits | Run credits, tell user to top up |
Fails at dataset_preprocessing | Bad camera mapping or invalid dataset | Re-check dataset-keys output, verify mapping |
Fails at instance_booting | GPU capacity issue | Try a different instance type or region |
| Job failed with no clear error | Check phase events | Run 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
modelsfirst to see which VLA types require--modeland which don't - Camera mappings map model slots (from
models) to dataset image keys (fromdataset-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_cameraorbase_0→cam_1;left_wrist≈left_arm→cam_2;right_wrist≈right_arm→cam_3
- π0.5 / π0:
- Omit
--modelfor types that don't support custom models - Estimate cost before launching: run
instancesto 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
| Flag | Description |
|---|---|
--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:
- LLM context: docs.qualiastudios.dev/llms.txt
- API reference: dev-docs.qualiastudios.dev/api/reference
- SDK: docs.qualiastudios.dev/sdk/overview
- Guides: docs.qualiastudios.dev/global/guides
Links
- Platform: https://app.qualiastudios.dev
- Docs: https://docs.qualiastudios.dev
- API: https://api.qualiastudios.dev (auth via
X-API-Keyheader)
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Run Git operations — commits, branches, merges, rebases, conflict resolution, and recovery — with safety rules enforced.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.