Pixel Pets runs on five build targets. Setup difficulty varies a lot — pick the per-pet guide that matches the hardware you have:
| Pet | Hardware | Difficulty | Setup guide |
|---|---|---|---|
| Goo-Goo | M5Stack Core2 | 🟢 Easiest — plug, flash, run | setup-goo-goo.md |
| Visu | M5Stack CoreS3 | 🟢 Easy — same idea on CoreS3 | setup-visu.md |
| Pip | M5StickC PLUS2 | 🟡 Medium — S3 revision needs a manual download-mode procedure | setup-pip.md |
| Muffin | M5Stack CoreS3 + Module-LLM | 🔴 Advanced — extra hardware + ADB / Linux setup on the LLM module | setup-muffin.md |
The README's Fastest start has the same overview with shop links. If you're new, start with Goo-Goo (if you have a Core2) or Visu (if you have a CoreS3) — both are ~1 hour from unbox to running pet. Muffin adds another evening for the Module-LLM setup.
| Target | Board | SoC | LLM | Camera | Hard buttons | Display | Audio | Branding |
|---|---|---|---|---|---|---|---|---|
cores3 |
M5Stack CoreS3 + Module-LLM | ESP32-S3 | ✅ | ✅ | ❌ Touch strip | 320×240 | WAV | Muffin |
visu |
M5Stack CoreS3 without module | ESP32-S3 | ❌ | ✅ | ❌ Touch strip | 320×240 | WAV | Visu |
core2 |
M5Stack Core2 | ESP32 | ❌ | ❌ | ✅ BtnA/B/C | 320×240 | WAV | Goo-Goo |
pip |
M5StickC PLUS2 (ESP32 PICO) | ESP32 | ❌ | ❌ | ✅ BtnA/B | 135×240 | Buzzer | Pip |
pip-s3 |
M5StickC PLUS2 (S3 revision) | ESP32-S3 | ❌ | ❌ | ✅ BtnA/B | 135×240 | Buzzer | Pip |
Default env: cores3. Build everything in the matrix:
pio run -e cores3 -e visu -e core2 -e pip -e pip-s3Per-target capabilities are derived in ../src/target_caps.h from the TARGET_* build flags:
TARGET_HAS_LLM→ voice pipeline (KWS / VAD / Whisper / Qwen3)TARGET_HAS_CAMERA→ front camera + face detectionTARGET_HAS_HARD_BUTTONS→ physical BtnA/B/CTARGET_HAS_TOUCH→ touchscreenTARGET_HAS_WAV_AUDIO→ WAV speaker (otherwise PWM buzzer)TARGET_HAS_WIFI→ active WiFi (NTP, ip-api, web radio, ESP-NOW friends, captive portal)TARGET_DISPLAY_W/TARGET_DISPLAY_H→ display dimensionsTARGET_NAME/TARGET_AP_NAME/TARGET_MDNS_NAME→ branding
#if TARGET_HAS_LLM and similar gates wrap target-specific code so the same source tree builds for all five envs.
Justus and Marcel — see also the in-app credits screen, and ../CREDITS.md.