🌍 MicroPipe — Pipe on a Microcontroller (Preview)
Pipe's pitch is one language for every layer — WASM in the browser, an ~8 MB binary on servers and Raspberry Pi. MicroPipe closes the last gap: a faithful re-implementation of the core that runs on a $5 ESP32.
MicroPipe is a dependency-free Python re-implementation of the Pipe language core, verified against the real pipe v0.9.4 binary with a side-by-side comparison harness. It targets CPython (for tests and development) and MicroPython (for the ESP32 and other microcontrollers). No pip dependencies — the stdlib is all it uses.
What hangs on a microcontroller, you drive with the same language as your pipelines: read a sensor, call an MCP server over the LAN, toggle a GPIO. Same syntax, same pipelines, same mcp_use_sse.
What works today
- The faithful core: precedence, vertical pipelines, closures, recursion,
if/while/for, lists/maps/slicing,>>parsed — every behaviour checked against pipe v0.9.4. - ~59 curated builtins — the ones that make sense on a small device:
map,filter,reduce,sum,unique,parse_json,sleep, file I/O, plus the MCP bridge. - MCP client over HTTP and stdio:
mcp_use_sse "http://192.168.178.78:8000/mcp"exposes every server tool asmcp0_<tool>inside your Pipe program. - MicroPython compatible: identifier checks that survive the missing
str.isalnum, aurequests-or-raw-socket HTTP fallback, and an import layout that works as a flat package on the device.
out: mcp_use_sse "http://192.168.178.78:8000/mcp"
print out
reading: parse_json (mcp0_sensor_read 1)
print "sensor:" (reading["value"]) (reading["unit"])
state: if (reading["value"]) > 23.0
"on"
else
"off"
print "led:" (mcp0_led_set state)
Verified on real hardware — an ESP32-D0WD-V3 running MicroPython v1.28.0:
wifi connected: 192.168.178.81
MicroPipe ESP32 demo started
[pipe] connected 5 tools from http://192.168.178.78:8000/mcp (prefix: mcp0_)
[pipe] temp: 27.5
[pipe] led: on
What it is not — yet
Honest scope, because a preview should say so:
- No AI builtins.
summarize,ask,embedneed a server that doesn't fit on a device. The intended bridge: run Pipe itself as the MCP server and call *it*. - No sandbox, no bytecode VM, no
pipe -build. It's a tree-walker. >>is parsed but executed sequentially. No real on-device parallelism — yet.- MCP client only — the server side stays in the Go binary.
Think of MicroPipe as the embedded edition: the same language for all the things that aren't servers.
Try it
pip install git+https://github.com/MachuraHarry/micropipe
Examples in the repo: a Fibonacci, a map/filter/reduce pipeline, and the MCP sensor demo above (examples/*.mpipe). The README covers flashing an ESP32, WiFi, and the MCP server setup.
It's a preview, it's MIT, and it's the natural next target for >> parallelism and the embedded MCP client. Star it on GitHub or open an issue.
🌍 MicroPipe — Pipe auf dem Mikrocontroller (Preview)
Pipes Versprechen ist eine Sprache für jede Ebene — WASM im Browser, eine ~8-MB-Binary auf Servern und Raspberry Pi. MicroPipe schließt die letzte Lücke: eine treue Neuimplementierung des Kerns, die auf einem 5-Dollar-ESP32 läuft.
MicroPipe ist eine abhängigkeitsfreie Python-Neuimplementierung des Pipe-Sprachkerns, gegen die echte pipe-v0.9.4-Binary verifiziert (Side-by-Side-Vergleichs-Harness). Zielplattformen: CPython (für Tests und Entwicklung) und MicroPython (für den ESP32 und andere Mikrocontroller). Keine pip-Abhängigkeiten — nur die Standardbibliothek.
Was an einem Mikrocontroller hängt, steuerst du mit derselben Sprache wie deine Pipelines: Sensor lesen, MCP-Server im LAN ansprechen, GPIO schalten. Gleiche Syntax, gleiche Pipelines, gleiches mcp_use_sse.
Was heute funktioniert
- Der treue Kern: Präzedenz, vertikale Pipelines, Closures, Rekursion,
if/while/for, Listen/Maps/Slicing,>>geparst — jedes Verhalten gegen pipe v0.9.4 geprüft. - ~59 kuratierte Builtins — die, die auf einem kleinen Gerät Sinn ergeben:
map,filter,reduce,sum,unique,parse_json,sleep, Datei-I/O, dazu die MCP-Brücke. - MCP-Client über HTTP und stdio:
mcp_use_sse "http://192.168.178.78:8000/mcp"macht jedes Server-Tool alsmcp0_<tool>in deinem Pipe-Programm verfügbar. - MicroPython-kompatibel: Identifier-Checks ohne das fehlende
str.isalnum, einurequests-oder-Raw-Socket-HTTP-Fallback und ein Import-Layout, das auch als flaches Paket auf dem Gerät funktioniert.
out: mcp_use_sse "http://192.168.178.78:8000/mcp"
print out
reading: parse_json (mcp0_sensor_read 1)
print "sensor:" (reading["value"]) (reading["unit"])
state: if (reading["value"]) > 23.0
"on"
else
"off"
print "led:" (mcp0_led_set state)
Verifiziert auf echter Hardware — einem ESP32-D0WD-V3 mit MicroPython v1.28.0:
wifi connected: 192.168.178.81
MicroPipe ESP32 demo started
[pipe] connected 5 tools from http://192.168.178.78:8000/mcp (prefix: mcp0_)
[pipe] temp: 27.5
[pipe] led: on
Was es (noch) nicht ist
Ehrlicher Scope — ein Preview soll das sagen:
- Keine KI-Builtins.
summarize,ask,embedbrauchen einen Server, der nicht auf ein Gerät passt. Die vorgesehene Brücke: Pipe selbst als MCP-Server laufen lassen und *den* aufrufen. - Kein Sandbox, keine Bytecode-VM, kein
pipe -build. Es ist ein Tree-Walker. >>wird geparst, aber sequenziell ausgeführt. Noch keine echte Parallelität on-device.- Nur MCP-Client — die Server-Seite bleibt in der Go-Binary.
Denk also an MicroPipe als Embedded-Edition: dieselbe Sprache für alles, was kein Server ist.
Ausprobieren
pip install git+https://github.com/MachuraHarry/micropipe
Beispiele im Repo: ein Fibonacci, eine map/filter/reduce-Pipeline und die MCP-Sensor-Demo von oben (examples/*.mpipe). Die README behandelt ESP32-Flashing, WLAN und das MCP-Server-Setup.
Es ist ein Preview, es ist MIT, und es ist das nächste natürliche Ziel für >>-Parallelismus und den eingebetteten MCP-Client. Auf GitHub markieren oder ein Issue eröffnen.