Fan-made educational re-implementation inspired by Marty the Robot® by Robotical Ltd. For the full hands-on experience with real hardware, please visit the official web app at codemarty.com.
Mini Marty is not affiliated with, endorsed by, or sponsored by Robotical Ltd. "Marty" and "Marty the Robot" are trademarks of Robotical Ltd, used here descriptively to identify the platform that inspired this educational project. See
docs/ATTRIBUTION.mdfor the full IP audit.
This project was inspired by my son. When he started showing a liking for coding, I went looking for the best way to engage him and meet him at his level on the journey. Marty the Robot — and the official web app at codemarty.com — was the closest thing I found to "real code, real motion, instant feedback". Mini Marty is my attempt to recreate that loop in a browser, for nights and weekends when the real robot isn't to hand and for other parents starting the same conversation with their own kids.
If you're on the same journey, please support the real Marty — it's better than this and your child will thank you.
A virtual programming environment for learning to code with Marty the Robot. No physical robot needed.
Write Python or drag Blockly blocks; a VirtualMarty instance enqueues commands; a React Three Fiber scene animates them at 60 fps.
npm install
npm run devOpen http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start the dev server |
npm run build |
Production build |
npm run lint |
ESLint |
npm run format:check |
Prettier check |
npm run typecheck |
TypeScript |
npm test |
Vitest unit + integration |
npm run test:coverage |
Coverage with 80% gate |
npm run test:e2e |
Playwright |
Next.js 16 (App Router) + TypeScript + Tailwind. Three.js / React Three Fiber for 3D. Pyodide for Python in the browser. Blockly for blocks. Monaco for code editing. Vitest + Playwright for tests. Vercel for hosting.
| Command | Effect |
|---|---|
walk(steps) |
Walk forward |
dance() |
Dance routine |
kick("left"|"right") |
Kick with leg |
slide("left"|"right") |
Slide sideways |
lean("left"|"right") |
Lean |
wiggle() |
Wiggle body |
circle_dance() |
Circular dance |
celebrate() |
Celebrate |
get_ready() / stand_straight() |
Pose |
eyes(expression) |
Set eye expression |
arms(left, right) |
Set arm angles |
foot_on_ground(side) |
Read foot sensor |
get_distance_sensor() |
Distance in cm |
get_accelerometer() |
{x, y, z} tilt |
stop() |
Stop all motion |
docs/— architecture, runbook, contributingdocs/architecture/overview.md— layered diagramdocs/runbook.md— incident responsedocs/contributing.md— branch model, code reviewTRAINING.md— parent-child learning guide
- Robotical Ltd — for designing and building Marty the Robot, the educational platform that inspired this project. If you enjoy Mini Marty, please support the real thing at codemarty.com or robotical.io.
robotical/martypy(Apache-2.0) — the Python API surface re-implemented here (walk,dance,kick,slide,lean,wiggle, etc.) follows the public method names of Robotical's officialmartypySDK so that Python written here is portable to the real robot.- Blockly (Apache-2.0) and Scratch 3.0 block color palette — for the visual programming foundation.
- Pyodide (Mozilla Public License 2.0) — for running Python in the browser.
- Three.js / React Three Fiber — for the 3D scene.
See docs/ATTRIBUTION.md for the full attribution and IP audit, and NOTICE for required redistribution notices.
Apache License 2.0 — see LICENSE.