Jojo Bot
Execution rule: use the
exectool to run the shell wrapper inscripts/jojo.sh. Do not usesessions_spawnor ACP for routine Jojo commands.
This skill turns a Roborock vacuum into a conversational device companion.
It is designed for:
- OpenClaw chat
- Telegram bots
- room-aware vacuum control
- a lightweight Jojo-style persona on top of real device actions
It is not a replacement for low-level Roborock tooling. It is the higher-level layer that makes a vacuum feel like its own agent.
Use it for:
clean the kitchenclean the living areaclean the housepausego homestatuswhich rooms do you know
Required local config
Create jojo.env in this skill folder from jojo.env.example.
Minimum required value:
JOJO_DEVICE_ID
Optional:
JOJO_DEVICE_NAMEROOM_<ALIAS>mappings such asROOM_KITCHEN="17"
Wrapper
Resolve the skill directory, then call:
bash <skill_dir>/scripts/jojo.sh status
bash <skill_dir>/scripts/jojo.sh start
bash <skill_dir>/scripts/jojo.sh pause
bash <skill_dir>/scripts/jojo.sh stop
bash <skill_dir>/scripts/jojo.sh home
bash <skill_dir>/scripts/jojo.sh rooms
bash <skill_dir>/scripts/jojo.sh room kitchen
bash <skill_dir>/scripts/jojo.sh room "master bedroom"
Intent mapping
status,what are you doing,battery,where are you->statusclean the house,start cleaning,go clean->startpause,wait,hold on->pausestop cleaning->stopgo home,dock,charge,return to dock->homewhich rooms,what rooms,rooms->roomsclean the <room>->room "<room>"
If room intent is ambiguous, ask one short follow-up.
Room aliases
The wrapper supports user-defined aliases through env vars:
ROOM_KITCHEN="17"
ROOM_MASTER_BEDROOM="19"
ROOM_LIVING_AREA="21"
To bootstrap aliases from the live Roborock map:
bash <skill_dir>/scripts/refresh_room_aliases.sh
Positioning
- Use
robo-rockor the rawroborockCLI when you only want direct device control. - Use
jojo-botwhen you want a conversational robot companion with room aliases, short replies, and a dedicated device identity.
Notes
- Current
python-roborockbuilds useroborock login --email ... - Verified command verbs are
app_start,app_pause,app_stop,app_charge, andapp_segment_clean - Keep this skill device-scoped. If the user wants a dedicated Telegram bot, bind a dedicated OpenClaw agent to a separate Telegram account.