[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11366":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":32,"discoverSource":33},11366,"minimal-embodiment","oliviazzzu\u002Fminimal-embodiment","oliviazzzu","A minimal hardware-software architecture giving large language models a closed-loop physical embodiment with self-perception loops.","https:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.19903098",null,"C++",209,15,5,0,2,16,3.61,"MIT License",false,"main",[23,24,25,26,27,28],"embodied-ai","esp32","hci","human-ai-interaction","large-language-models","self-perception","2026-06-12 02:02:31","# minimal-embodiment\n\n[![DOI](https:\u002F\u002Fzenodo.org\u002Fbadge\u002FDOI\u002F10.5281\u002Fzenodo.19903098.svg)](https:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.19903098)\n\nReference implementation of the bridge service and microcontroller firmware\ndescribed in the paper:\n\n> **A Minimal Self-Perceiving Embodiment for Large Language Models**\n> Olivia Zhu, 2026.\n> Preprint: \u003Chttps:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.19903098>\n\nThe system gives a large language model a small, real, persistent body: an\nESP32 with four sensor modules (environment, light, motion, sound) and three\noutput channels (haptic, OLED face, piezo buzzer). Two of the output channels\nare coupled back to input channels, so the model can hear itself speak and\nfeel itself tap — the \"self-perception loops\" of §6 in the paper.\n\nThe repository state described by the paper is pinned at the `v1.0-paper`\ntag — `git checkout v1.0-paper` to reproduce the §6.3 self-perception\nmeasurements against the system exactly as described. The `main` branch\nis the living project; new senses (olfaction, etc.) accumulate there\nbeyond the paper's scope.\n\n## What is in this repository\n\n```\nsrc\u002Fhttp-bridge.ts          Single-file bridge service (no external\n                            runtime dependencies). Implements the paper\n                            endpoints, plus living-project extensions\n                            (e.g. \u002Fmelody) added on `main` after v1.0.\nfirmware\u002Fsensor_body\u002F       Arduino sketch (~1.1k lines of C++) for the\n                            ESP32. Reads sensors, drives haptic \u002F OLED \u002F\n                            buzzer, reports self-perception echoes.\nscripts\u002Fmeasure_loops.mjs   Reproduction script for §6.3: fires N reps of\n                            each haptic effect + audio tone + a baseline,\n                            in randomized order, and writes raw + summary\n                            tables.\nscripts\u002Fserve.sh            Convenience wrapper: starts the bridge with\n                            an auth token from the environment.\ndata\u002F                       Validation data from the paper's §6.3 run:\n                            660 trials (30 reps × 22 conditions), raw\n                            JSONL plus the two summary CSVs that back\n                            Tables 3 and 4.\n```\n\nThe bridge runs only on the Node.js standard library (no production\ndependencies). TypeScript and Node type definitions are required at build\ntime only.\n\n## Quick start\n\nThis section assumes you already have the hardware built and flashed. If\nyou are starting from scratch — no ESP32, no soldering experience, no\nbridge running — see the step-by-step\n[**Build Guide**](BUILD_GUIDE.md) instead.\n\n```sh\n# 1. Build the bridge.\nnpm install        # installs typescript + @types\u002Fnode (devDependencies only)\nnpm run build      # tsc → dist\u002Fhttp-bridge.js\n\n# 2. Start the bridge.\nexport US_BRIDGE_TOKEN=\"$(openssl rand -hex 24)\"\nnpm run serve\n# The bridge listens on http:\u002F\u002Flocalhost:3737 (override with PORT=…).\n```\n\nThe bridge expects to be reached over HTTPS by an LLM client. In the original\ndeployment we used a [Cloudflare named tunnel][cf]; any reverse tunnel that\nterminates at a public DNS name will work the same way. The bridge itself\nonly listens on a local port; expose it however you prefer.\n\n[cf]: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fconnections\u002Fconnect-networks\u002F\n\n## Microcontroller firmware\n\nThe Arduino sketch is at `firmware\u002Fsensor_body\u002Fsensor_body.ino`. Edit the\nconfiguration block near the top of the file before flashing:\n\n```c\nconst char* WIFI_SSID     = \"YOUR_WIFI_SSID\";\nconst char* WIFI_PASSWORD = \"YOUR_WIFI_PASSWORD\";\nconst char* BRIDGE_TOKEN  = \"YOUR_BRIDGE_TOKEN\";   \u002F\u002F matches US_BRIDGE_TOKEN\nconst char* BRIDGE_HOST   = \"your-tunnel-host.example.com\";\n```\n\nBill of materials and wiring are in §4 of the paper, and the header comment\nof the sketch repeats both for convenience. Required Arduino libraries are\nlisted in the same comment.\n\n## Reproducing §6.3 (self-perception loops)\n\nThe original validation run is checked into `data\u002F`:\n\n- `data\u002Floops_raw.jsonl` — 660 trial records (30 reps × 22 conditions)\n- `data\u002Floops_haptic.csv` — per-effect summaries backing Table 4\n- `data\u002Floops_audio.csv` — per-tone summaries backing Table 3\n\nTo reproduce on your own hardware:\n\n```sh\nexport US_BRIDGE_TOKEN=\"…\"                  # same token the bridge is using\nexport US_BRIDGE_HOST=\"https:\u002F\u002Fyour-host\"   # public HTTPS endpoint\nnode scripts\u002Fmeasure_loops.mjs\n# Overwrites: data\u002Floops_raw.jsonl\n#             data\u002Floops_haptic.csv\n#             data\u002Floops_audio.csv\n```\n\nThe script runs 30 reps × 22 conditions (11 haptic + 10 audio + 1 baseline),\nrandomized and interleaved, ~43 minutes total. Override the output directory\nwith `US_OUTPUT_DIR=…` if you want to keep both runs side by side.\n\n## Citation\n\nIf you use this code in academic work, please cite the paper:\n\n> Zhu, O. (2026). *A Minimal Self-Perceiving Embodiment for Large Language\n> Models.* Zenodo. \u003Chttps:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.19903098>\n\n```bibtex\n@misc{zhu2026minimal,\n  author    = {Zhu, Olivia},\n  title     = {A Minimal Self-Perceiving Embodiment for Large Language Models},\n  year      = {2026},\n  publisher = {Zenodo},\n  doi       = {10.5281\u002Fzenodo.19903098},\n  url       = {https:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.19903098}\n}\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n## Disclaimer\n\nThis project has no official token, coin, NFT, or financial product. I have\nnot created, authorized, endorsed, or claimed any token related to this\nproject.\n","minimal-embodiment 是一个赋予大型语言模型物理实体的最小化软硬件架构，通过自感知循环实现闭环交互。项目核心功能包括使用ESP32微控制器与多种传感器（环境、光线、运动、声音）和输出设备（触觉反馈、OLED显示屏、压电蜂鸣器）构建小型实体，并通过特定的输入输出通道回路让模型能够“听到”自己的声音和“感觉”到自己的动作。该系统适用于需要将AI模型与真实世界进行互动的研究场景，如人机交互、具身AI等。技术上，它依赖于C++编写的固件及Node.js标准库运行的服务端桥接程序，保证了较低的部署复杂度。","2026-06-11 03:31:44","CREATED_QUERY"]