/ɪˈmɜːdʒ(ə)nt/ — adj. arising from a system's interactions, not present in any of its parts alone
A synthetic ethology platform for ESP32-class hardware.
The problem is simple to state and hard to do well: make a small, cheap, battery-powered machine look alive.
Not intelligent in the large-model sense, not conversational, and not necessarily useful for a fixed task. Instead, we want a machine that appears to have:
Humans are extremely sensitive to motion, timing, and contingency — a few sensors, motors, delays, and feedback loops are enough for us to describe behavior using words like curious, cautious, bored, or interested. In this project, such words are observer-level summaries of dynamics, not claims about subjective experience. The concrete engineering goal is:
Construct a machine whose behavior is best understood in terms of internal regulation, learning, and interaction with its environment, rather than in terms of fixed scripts.
The central constraints are deliberate:
emergent /ɪˈmɜːdʒ(ə)nt/ adj.
arising from a system's interactions, not present in any of its parts alone.
ethology /ɪˈθɒlədʒi/ n.
the study of animal behavior under natural, or naturalistic, conditions.
homeostasis /ˌhəʊmɪəʊˈsteɪsɪs/ n.
the regulation of internal variables to keep them within a viable range.
drive /draɪv/ n.
a pressure toward action, produced by an internal variable deviating from its target.
contingency /kənˈtɪndʒənsi/ n.
a reliable relation between an action and what tends to follow it.
stigmergy /ˈstɪɡmɜːdʒi/ n.
coordination through traces left in a shared environment, rather than direct signaling.
subsumption /səbˈsʌmpʃ(ə)n/ n.
a control scheme in which layered behaviors can override one another with no central planner.
synthetic psychology n. phr.
building simple mechanisms and observing which psychological terms people apply to them.
| Layer | Fact |
|---|---|
| Implemented | 20 Hz loop: sense → physiology → drives → memory → action → actuate → learn. Learned sensor→actuator reflexes trained by drive reduction. Named-channel body. SoftAP dashboard. Life-state JSON. Station firmware as a separate state machine. |
| Tested | Host-native tests for bit packing, age saturation, rate-limit clamp, LEDC cap, and organism behavior (energy dynamics, contingency bias, reflex learning rule) against a fake body. Not real hardware. |
| Simulated | The unmodified engine in a modelled room with a station (src/sim): learned reflexes lift mean lifespan from 1.26 h to 1.86 h (hand-wired bound 2.46 h). Learns to reach and stay on the dock; not yet to leave when full, and nothing accumulates across lives. Watch one organism. |
| Hardware tested | Nothing. No board has run this. |
| Designed / planned | Body declared in a JSON file with per-input ranges, stepper and mic-envelope channel kinds (example build); approach-and-dock on hardware; extra boards. |
| Hypothesis | That drives + decaying memory + learned reflexes + noise will look alive on real hardware, including charging as an attractor. Unverified. |
Changelog · Full roadmap · Research notes · Example build (7 in, 5 out)
cd src/esp32
pio run -e esp32dev # or -e esp32-s3-devkitc-1
pio run -e esp32dev -t uploadfs # flash the dashboard filesystem
pio run -e esp32dev -t upload # flash the firmware
pio test -e native # host-native unit + behavior-scenario tests
Full spec: the paper (PDF). Firmware layout, adding a board/channel, and the dashboard API: src/esp32/README.md. Firmware releases: GitHub Releases.