Actions that fit your character
Create an original mascot and its animations in Masko Studio. Give “working,” “waiting” and “done” a performance that fits its world.
For ESP32 builders · Coming soon
Give your physical AI agent, desk companion or little robot a character of its own. A wave when it needs you. A celebration when the work is done. Coming to ESP32.
ESP32-S3 first. Your hardware. Your character.
ESP32-S3 display concept. Animated browser preview; hardware testing is next.
The Masko Desktop idea, on your desk
Masko for Mac already turns agent activity into character reactions. Here’s the idea for a physical companion: your computer runs the agent, and the little screen gives it a face.
› Refactor the sign-in flow
my-app / src / auth
Reading files and updating the sign-in flow…
behavior::workingThe agent is doing the work. Ko stays focused until the next event.
More than a face on a screen
A blacksmith works at an anvil. A robot perks up when you tap. A desk companion cheers when your focus timer ends. The same event can have a personality of its own.
Create an original mascot and its animations in Masko Studio. Give “working,” “waiting” and “done” a performance that fits its world.
Show progress while an agent works, greet a tap, or mark a finished task. The prototype maps commands to animations; your app decides when to send them.
We’re working on export settings for resolution, frame rate, quality and background, with a size estimate. Start with local playback and test the fit on your screen.
How the character reaches the screen
The animations and the events are two different things. A character can live on an SD card while a connected agent tells it when to react.
Copy the converted character pack to a microSD card. The player reads the state graph and animation frames from the card, without fetching every frame from the internet.
What triggers a reaction?
Computer or device event → USB command → local character reaction
The prototype accepts USB commands. Animation playback is local; a cloud-based agent can still need internet on the computer.
/masko/ko/
mascot.json # states, transitions and rules
clips/
idle.mjpk # JPEG animation frames
working.mjpk
idle-working.mjpkIllustrative filenames. The converter writes clip IDs into the real pack.
JSON state graph + .mjpk clips containing JPEG frames. Example settings: 233 × 233 px, 12 fps, black background.
JPEG is opaque. Black gives the floating-character effect on OLED. An alpha-preserving export such as RGB565A8 + LZ4 is experimental and needs a compatible player.
The device prototype has been tested on a computer and compiled for ESP32-S3. Playback on physical hardware is the next test. Studio device-export controls, Wi-Fi sync and streaming are planned or exploratory.
Let’s build this together
Building a desk companion, robot or physical AI agent? Get early-access news, or help us test character playback on your own board.
Looking for ESP32 builders
Tell us your board, screen and idea. Paul will follow up as testing spots become available.
The device SDK is in development. There is no public release date yet.
For the build you have in mind
The SDK is in development. Join the waitlist for early-access updates, or apply to help test character playback on your own hardware. There is no public release date yet.
The first firmware target is the Waveshare ESP32-S3-Touch-AMOLED-1.75 with a microSD slot. The prototype has computer tests and a successful firmware build; playback on a physical board is the next step. Other boards need the right display driver and pin configuration. Tell us your exact board and screen when applying to test.
Yes. Masko Studio lets you create an original mascot and its animations. Working could mean typing for one character and hammering at an anvil for another. Device export is in development, so creating the artwork and running it on an ESP32 are separate steps today.
The prototype follows a character’s state graph, including loops, transition clips and rules. A loop can hold “working,” and a short authored clip can lead into “done.” A 2–3 second transition is an example, not a requirement. The number of states and transitions depends on your character and storage budget; this page’s demo switches directly between existing clips.
The prototype accepts behavior commands over USB and includes a touch reaction in the firmware. Your application can map events such as task started, waiting or task complete to those commands, without asking an AI model to choose every reaction. Sensor, timer, MQTT and Home Assistant events are possible integration ideas, not ready-made adapters today.
The device prototype handles character playback. Your application supplies the agent, event logic and any speech service. Listening, thinking and speaking are useful animation ideas, but the prototype does not include speech recognition, audio playback or automatic lip sync. Testing animation alongside audio and networking is part of the hardware work ahead.
A local converter turns Masko clips into JPEG frames inside custom .mjpk files, with a JSON graph describing states and transitions. It currently runs on a developer’s computer with Node and ffmpeg. A guided Studio export is planned. The device player does not directly play arbitrary MP4, WebM or GIF files.
The current JPEG export is opaque, with the character placed on black. On an OLED, black can make it look like the character floats on the screen, but it is not transparency. A selectable background color is planned. True alpha options such as RGB565A8 with LZ4 compression remain experimental and need a compatible player.
It depends on resolution, frame rate, clip length, visual detail and the number of states and transitions. One measured Ko export was about 44 MB at 233 × 233 pixels and 12 fps. That is a pack-size example, not a RAM requirement or a size promise for every character. Planned export controls will help compare quality and total size before downloading.
The prototype reads converted animation packs from a microSD card and accepts events over USB. The animations play locally; a cloud-based agent can still need internet on the computer. Download-and-cache over Wi-Fi is a proposed next step. Continuous frame streaming is exploratory, with no implementation or performance benchmark yet.
That needs an integration with the firmware’s events, display and media player. Masko packs are not a drop-in format for every gadget. Muse compatibility and other ready-made integrations have not been validated. Include your firmware or agent stack in the tester application so we can understand what you want to connect.
Device SDK pricing and licensing have not been announced. Local playback in the prototype uses files stored on the card rather than a continuous animation stream. Creating assets in Masko and using any external AI or voice services have their own costs. Joining this waitlist does not start a paid plan.
The ESP32-style board is a concept illustration showing the character on a screen. This is early access to software and an SDK. You bring your own hardware.
Share your exact board, screen, firmware and project idea. Selected testers will try playback and event reactions, check frame rate, storage and setup, and report what gets in the way. We also want to learn how animation behaves alongside audio and network activity. Paul will contact selected testers with next steps; no SDK download is promised immediately after signup.