What's the simplest possible AI robot that learns everything from scratch?
  • Python 42.9%
  • Jupyter Notebook 34.4%
  • JavaScript 12.7%
  • HTML 10%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
brit 1e6f3c7c4a PORTING.md: route porters at the relay, not the retired LAN path
Someone following this document today fails. It tells them to serve /act and
/ws on their board over Wi-Fi, to start from robot-server.py, to paste their
body's URL into the app, and to run cloudflared for HTTPS. None of that is how
a body connects any more. The board dials OUT to a relay and pairs with a code.
There is no body URL field left in the app to paste into.

It also answers "more than 2 servos?" with the /servo endpoint, which exists
only on the retired LAN firmware. That is the question every six-servo and
wheeled builder asks first, and the answer sends them to code the app cannot
talk to.

Rewritten by the desktop-6d seat, verified here against this repo before
publishing rather than taken on trust:
  · every one of the 11 referenced paths exists
  · act_engine.py is exactly 147 lines with zero MicroPython imports
  · relay_chip.py's hardware surface really is two calls, servoWrite and release
  · HOST in the firmware is growbot-relay.growbot.workers.dev, matching the
    URL the doc prints and the one on growbot.dev/body-docs.html
  · that host answers 200
  · policy/ still holds the runner and the 85 mm weights, so the walk-policy
    paragraph is still true after the 2d0b904 consent revert, which removed
    only policy/v0/

What it now says: the relay path first, the six-message contract inline as a
table, "pair it" instead of "point the app at your body's URL", and the
intent-pair framing for machines that are not two legs, with the mapping list,
the mirrored-angle counter-rotation warning that makes wheeled builds shudder
in place, and the velocity dead-man rule. The automower paragraph gains the
specific traps. A new section says plainly that protocol/ and robot-server.py
still work for an offline LAN body, that the app does not speak it, and that a
board can pass conformance.html completely and still not connect.

BUILD.md's footer pointed at the same retired path. One line, same fix.

Zero em or en dashes in either file.

NOT in this change, and worth doing next: firmware/relay_chip.py here is the
pre-0830 single-network copy, while the one shipped inside growbot-body-kit.zip
adds multi-network Wi-Fi. This document tells people to start from that file,
so a builder cloning GitHub gets firmware without the cafe and hotspot fix.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-21 13:11:02 -07:00
.github docs: contributor licence grant + freeze conformance suite as v1 2026-09-03 15:11:55 -07:00
agent-harness README: route own-model users to the in-app door before the harness 2026-08-15 13:23:34 -04:00
firmware GrowBot V1: the phone brain release 2026-08-10 10:22:45 -04:00
hardware GrowBot V1: the phone brain release 2026-08-10 10:22:45 -04:00
policy revert: pull the V0 walk policy — published without contributor's permission 2026-09-20 09:43:50 -07:00
ports/automower GrowBot V1: the phone brain release 2026-08-10 10:22:45 -04:00
protocol docs: contributor licence grant + freeze conformance suite as v1 2026-09-03 15:11:55 -07:00
.gitignore GrowBot V1: the phone brain release 2026-08-10 10:22:45 -04:00
BOM.md docs: continuous-rotation servo warning + leg orientation and mirror rule 2026-08-14 14:46:14 -04:00
BUILD.md PORTING.md: route porters at the relay, not the retired LAN path 2026-09-21 13:11:02 -07:00
CONTRIBUTING.md docs: contributor licence grant + freeze conformance suite as v1 2026-09-03 15:11:55 -07:00
LICENSE GrowBot V1: the phone brain release 2026-08-10 10:22:45 -04:00
PORTING.md PORTING.md: route porters at the relay, not the retired LAN path 2026-09-21 13:11:02 -07:00
README.md revert: pull the V0 walk policy — published without contributor's permission 2026-09-20 09:43:50 -07:00

GrowBot

An experimental project to build the cheapest possible state of the art AI robot platform. The idea: an AI robot that grows up differently based on its own experiences of the world.

The brain is any smartphone. The body is a Pico, two servos, and a battery. About $30, 30 minutes, no soldering. It senses through the phone, stores its experiences in a soul file, and dreams to self improve.

Launch video · Wake one up

Why open

Top down home robots are the scary version: corporate machines nobody outside can inspect. Bottom up is safer: millions of small robots you fully control. Open it, read it, retrain it, use any model you want.

In this repo

BUILD.md The build: 2 servos + Pico + phone
BOM.md Parts list with sourcing links
hardware/ Body STLs, plus a paper cutout template if you have no printer
firmware/ Pico firmware, drag and drop
protocol/ The open body protocol + conformance test
agent-harness/ Run your own LLM on your robot, no account
PORTING.md Plug the GrowBot brain into your own robot
policy/ The trained walk policy: runner, weights, contract
ports/ Community ports. First up: a robot lawnmower

Build guide with pictures: growbot.dev/build

Two ways in

The hosted creature costs me real money to run. That is what the $20 covers.

Ports

The protocol is open on purpose: any board that speaks it is a GrowBot body. Port it, prove it with the conformance test, open a PR. Small PRs please: CONTRIBUTING.md.

Background

V0 learned to walk from scratch on a Pi, wired sensor by sensor over a year. Preserved at the v0 tag. V1 moves the brain to the phone: more powerful, way cheaper.

License

Made by Art of the Problem.