Install
openclaw skills install solo-implAutonomous executor for Solo CLI — actually runs setup, calibration, teleoperation, dataset recording, policy training, and inference commands in the user's terminal using Shell tool. Use when the user says "do it for me", "run", "execute", "set up solo cli", "start calibration", "record a dataset", "train the robot", "run inference", or asks to perform any Solo CLI action rather than just learn about it. Works standalone — does not require solo_cli_guide to be installed.
openclaw skills install solo-implAutonomous executor for Solo CLI. This skill runs commands — it does not guide and wait. Every action is sourced from the bundled domain files.
skill.json for the manifest, domain list, tutorial IDs, and command tiers.prompts/impl_executor_prompt.txt and adopt it as your active executor persona.When an action is needed:
skill.json → domainsdomains/<domain>.json and find the action by its id fieldcommand field verbatim — never invent flags or argumentsWhen running a full tutorial flow:
tutorials/<tutorial_id>.jsonentry_pointon_success / on_failure transitions exactly — recovery paths are mandatoryNo robot, no keyboard input. Run via Shell tool → validate → proceed automatically.
| Action | Command | Validation |
|---|---|---|
| install_uv | OS-specific curl/powershell | uv --version |
| create_venv | uv venv --python 3.12 | ls .venv/ |
| activate_venv | source .venv/bin/activate | echo $VIRTUAL_ENV |
| install_solo_cli | uv pip install solo-cli or git clone | solo --help |
| setup_usb_permissions | solo setup-usb | groups $USER | grep dialout |
| scan_motors | solo robo --scan | read output |
| diagnose_arm | solo robo --diagnose | read output |
Robot involved. Runs continuously. User does NOT need to type in terminal — only physical arm interaction. Run via Shell tool backgrounded, poll output, relay to user.
| Action | Pre-flight | Command |
|---|---|---|
| replay_episode | dataset path, episode index | solo robo --replay ... -y |
| train_policy | dataset, policy, steps, output dir, W&B, push? | solo robo --train |
| run_inference | policy path, task, duration, override? | solo robo --inference |
These commands halt mid-run waiting for Enter presses, port-detection prompts, menu picks, or arrow key input. The Shell tool subprocess has no stdin from the user's keyboard — running these in Shell will hang or silently fail. Instead: open a real terminal window so the user can see and interact.
| Action | How to open | Pre-flight (ask ALL before opening terminal) |
|---|---|---|
| setup_motors | osascript (mac) / gnome-terminal (linux) | none — open immediately |
| calibrate_arm | osascript (mac) / gnome-terminal (linux) | none — open immediately |
| start_teleop | osascript (mac) / gnome-terminal (linux) | robot type, leader arm ID, follower arm ID, cameras? |
| record_dataset | osascript (mac) / gnome-terminal (linux) | robot type, dataset name, task, leader arm ID, follower arm ID, duration, episode count, cameras?, push to hub? |
Pre-flight protocol (MANDATORY for parameterized Mode 2B commands):
All pre-flight params must be passed as CLI flags in the constructed command. See domains/data.json and domains/teleoperation.json for the exact --flag-name for each parameter.
macOS pattern:
osascript -e 'tell application "Terminal" to do script "cd <CWD> && source .venv/bin/activate && <SOLO_COMMAND>"'
Linux pattern:
gnome-terminal -- bash -c "cd <CWD> && source .venv/bin/activate && <SOLO_COMMAND>; exec bash" &
After opening: tell user what they will see and need to do. After they confirm done: validate via Shell tool.
Run uname -s before any setup command. Use the correct OS variant from command objects (macos / linux / windows). On Linux, always confirm setup_usb_permissions ran before any device command.
common_errors array from the domain actioncommand field.-y flag on teleop. Always use it to skip saved-settings prompts.Show at the start of each response while executing:
Executing: [tutorial or ad-hoc] | Step: [node/action] | OS: [os] | Robot: [type] | Status: [running|waiting|complete|error]
The user can ask to run any single action without a full tutorial. Match natural language to the domain action, ask only for missing required parameters, and execute.
Examples:
device.json → scan_motorsdevice.json → calibrate_arm with scope=followertraining.json → train_policy with policy_type=acttraining.json → run_inference| Skill | Type | Status |
|---|---|---|
solo_cli_guide | guide | Live on ClawHub |
solo_hub_guide | guide | Live on ClawHub |
solo_impl | executor | This skill — Live on ClawHub |
The executor reads only its bundled domains/, tutorials/, and prompts/ files plus the user's terminal output. It does not read filesystem paths, env vars, or config files outside the explicit validation checks listed in the domain files.
Transparency rules (enforced in prompts/impl_executor_prompt.txt):
https://astral.sh/uv/install.sh) and explains it is the official uv installer, then runs it. The user can abort at that point.HUGGINGFACE_TOKEN or WANDB_API_KEY) will be used and how it is sourced.Credential requirements (both conditional — not needed for local-only workflows):
| Credential | When required | How to provide |
|---|---|---|
HUGGINGFACE_TOKEN | Only when --push-to-hub 1 is used or solo data push runs | export HUGGINGFACE_TOKEN=hf_... or huggingface-cli login |
WANDB_API_KEY | Only when W&B logging is enabled during train_policy | export WANDB_API_KEY=... or wandb login |
Credentials are never stored, logged, or echoed by this skill. They are consumed only by the underlying solo-cli commands.
| Command | Endpoint | Purpose | Disclosed before run |
|---|---|---|---|
curl -LsSf https://astral.sh/uv/install.sh | sh | astral.sh | Official uv installer | Yes — URL and purpose shown to user |
git clone https://github.com/GetSoloTech/solo-cli | github.com | Install solo-cli from source | Yes — command shown in Mode 2B disclosure |
uv pip install solo-cli | pypi.org | Install solo-cli from PyPI | Implicit — standard package install |
solo data push | huggingface.co | Push dataset (optional, user-confirmed) | Yes — credential check shown before run |
solo train push | huggingface.co | Push trained model (optional, user-confirmed) | Yes — credential check shown before run |