Install
openclaw skills install holocube-emotesControl a GeekMagic holocube display as an AI emote system. Generate holographic sprite kits with Gemini, upload to device, and swap expressions based on agent state (idle, working, error, etc.). Use when the user has a GeekMagic holocube (HelloCubic-Lite or similar) and wants their AI assistant to have a physical face that reacts to conversation context.
openclaw skills install holocube-emotesTurn a GeekMagic holocube into your AI's face. Generate holographic character sprites, upload them to the device, then swap expressions in real-time based on agent/session state.
Auto-discover holocubes on your network:
python3 scripts/holocube.py --discover
Output: FOUND: 192.168.0.245 — HelloCubic-Lite V7.0.22
If discovery fails, find the IP on the device's screen or your router's client list.
Create a full emote sprite kit (requires nano-banana-pro skill with GEMINI_API_KEY):
python3 scripts/generate_sprites.py --output-dir ./sprites
Custom character:
python3 scripts/generate_sprites.py --output-dir ./sprites \
--character "A glowing holographic cat floating in pure black void. Neon purple wireframe style."
This generates 7 emotes (neutral, happy, thinking, surprised, concerned, laughing, sleeping) as both static JPG and animated GIF, sized for the 240x240 display.
python3 scripts/setup_device.py --sprites-dir ./sprites --clear --backup-dir ./backup
Flags:
--clear removes existing images (recommended — device has ~3MB storage)--backup-dir saves existing files before clearing--ip auto-discovers if not provided, or specify manuallyAdd the holocube IP and emote mappings to your workspace TOOLS.md for reference. See references/tools-example.md.
python3 scripts/holocube.py happy
python3 scripts/holocube.py thinking --static # Use JPG instead of GIF
python3 scripts/holocube.py working # → thinking
python3 scripts/holocube.py complete # → happy
python3 scripts/holocube.py error # → concerned
python3 scripts/holocube.py opus # → thinking (heavy model)
python3 scripts/holocube.py haiku # → neutral (light model)
python3 scripts/holocube.py --auto
python3 scripts/holocube.py --status
python3 scripts/holocube.py --list
Add to HEARTBEAT.md to auto-manage the emote:
## Holocube Emote Check
- Run `python3 scripts/holocube.py --auto` to set time-appropriate emote
Use these during normal agent operations:
| Context | Command | Emote |
|---|---|---|
| Idle, waiting for input | neutral | 🤖 |
| Processing, running tools | thinking or working | 🔧 |
| Task completed | happy or complete | 😊 |
| Error occurred | error (→ surprised) | 😮 |
| Funny moment | laughing or funny | 😂 |
| Unexpected input | surprised or unexpected | 😮 |
| Night/inactive | sleeping or night | 😴 |
| Spawning sub-agent | spawning (→ thinking) | 🔧 |
| On-demand custom | custom | ✨ |
A reserved file adam-custom.gif on the device can be overwritten at any time for on-demand or one-off animations. Generate a GIF, upload as adam-custom.gif, then python3 holocube.py custom. Switch back to a standard emote when done.
/set?reset=1 — that's factory reset, wipes WiFi config.pip install Pillow)GEMINI_API_KEY (for sprite generation only)uv (brew install uv) (for sprite generation only)