English | 中文
OpenToys is the local-first platform version of ElatoAI. No cloud required, no subscription lock-in, and your data stays private on-device with inference running locally with a websocket transport to connect to your ESP32-S3.
Apple Silicon · Rust + React · ESP32-S3 · Whisper ASR · Qwen3-TTS · MLX LLMs
The New Wild West of AI Kids Toys
Read the WIRED article →
AI kids' toys roundup
Read the ArsTechnica article →
The Easy Way to Build Interactive AI Toys for Your Kids
Read the Hackster article →
- 2026-03-14: OpenToys launched🎉 And it's Pi Day! If you're looking to run realtime AI models like OpenAI Realtime, Gemini, Eleven Labs and more on your ESP32 device, check it out here.
- Fully Local: NO cloud, NO subscriptions, NO data leaving your home, FREE AI forever.
- Multilingual: OpenToys supports multiple languages and accents: English 🇺🇸/🇬🇧, Chinese 🇨🇳, Spanish 🇪🇸, French 🇫🇷, Japanese 🇯🇵, Korean 🇰🇷, Portuguese 🇵🇹, German 🇩🇪, Italian 🇮🇹 and more!
- Voice Cloning: Clone your own voice or your favorite characters with <10s of audio.
- Customizable: Build your own toys, companions, robots and more with an ESP32.
- Open-source: The community is open-source and free to use and contribute to.
- Direct DMG: OpenToys_0.1.0_aarch64.dmg
- All releases: GitHub Releases
- Clone the repository with
git clone https://github.com/akdeb/open-toys.git - Install Rust and Tauri with
curl https://sh.rustup.rs -sSf | sh - Install Node from here
- Run
cd app - Run
npm install - Run
npm run tauri dev
Create experiences with personalities that can play games, tell stories, engage in educational conversations. Here are some of the default characters with more prompt details in personalities.json.
- STT: Whisper Turbo ASR
- TTS: Qwen3-TTS and Chatterbox-turbo
- LLMs: any LLM from
mlx-community(Gemma 4, Qwen3.8, Muse Glimmer, Qwen3, Llama, Mistral3, etc.) - App: Tauri, React, Tailwind CSS, TypeScript, Rust
- Platform focus: Apple Silicon (M1/2/3/4/5)
- Hardware device: ESP32-S3
- Connect your ESP32-S3 to your Apple Silicon Mac with a USB cable.
- In OpenToys, go to
Settings→Connect your ESP32 Here, pick your serial port and clickFlash. - OpenToys flashes the bundled firmware images (
bootloader,partitions,firmware) directly. - Unplug the toy once flashing finishes. You only need to do this again to update the firmware.
The toy hosts its own WiFi network and your Mac joins it, so there is no router setup, no captive portal, and no home network involved.
- Power on the toy. On boot it starts an open access point called
ELATO(no password) at192.168.4.1. Its LED glows pink while it waits. - Join
ELATOfrom your Mac. It appears in the macOS WiFi menu like any other network. macOS will warn that the network has no internet — that is expected, the toy is not a router. - Wait a moment for the handshake. The toy detects your Mac, finds the OpenToys
server on it, and opens a websocket. The LED turns white and the status row in
the app switches to
Ready on device. - Press the green
Playbutton. It is disabled until the toy is connected (it reads "Connect your Mac to ELATO first" on hover) and enables itself the moment the handshake lands. Press it and the toy is live — start talking.
Leave OpenToys running while you play; it is doing the speech-to-text, the LLM, and
the text-to-speech on your Mac. To finish, press End in the app — it drops the session
and takes you to the transcript — or just power off the toy.
Tip
While your Mac is joined to ELATO it has no internet access. Download your models
and voices before joining, or hop back onto your normal WiFi to fetch them and
then rejoin ELATO.
ELATOisn't in the WiFi list — the toy isn't powered, or the firmware didn't flash. Reflash and watch for the pink LED on boot.- Joined
ELATObut nothing happens — make sure OpenToys is actually running on the Mac. The toy probes ports49320and8000on whichever machine joins it, and waits for one of them to answer. - The button says
Download voice— the selected character's voice isn't on disk yet. Click it to fetch the voice, then come back.
AI systems (local or cloud) are not perfect. This project is built with data privacy and safety in mind, but there are still important limitations:
- Hallucinations: LLM and TTS models can give incorrect or misleading answers. This should not be treated as a source of truth.
- Inappropriate outputs: Adversarial or ambiguous prompts can sometimes produce unsafe responses.
- Emotional impact: AI should not replace real human interaction, especially for children.
When using with children, use with parental awareness and treat this as a tool for exploration, not authority.
- M1 Pro 2021 Macbook Pro
- M3 2024 Macbook Air
- M4 Pro 2024 Macbook Pro
open-toys/
├── app/
├── arduino/
├── resources/
├────────── python-backend/
├────────── firmware/
└── README.md
Python 3.11 runtime binary, packages and HF models are downloaded on first app setup into the app data directory.
MIT
If you like this project, consider supporting us with a star ⭐️ on GitHub!






