{"slug": "announcing-gorai-a-modern-robotics-framework", "title": "Announcing Gorai! A Modern Robotics Framework", "summary": "Jordan Herlein announced Gorai, an open-source robotics framework written in Go that treats robots as distributed systems with sensors as resources and actuators as tools, using NATS for messaging. The framework compiles to a single static binary, supports composite robots, and is designed to natively integrate with AI agents. A working reference robot, the PiCar-X, is available as an example.", "body_md": "I’ve been teasing this for a while. Time to stop teasing. **Meet Gorai — a modern, open-source robotics framework written in Go.**\n\nIf you read my [Why Go for Robotics?](https://blog.herlein.com/post/why-go-for-robotics/) post, or my rant on [Agentic Python](https://blog.herlein.com/post/agentic-python-considered-harmful/), you already know where my head’s been at. I kept asking the same question: *why not do foundational robotics work in Go?* Well, I’ve been building. Gorai is the answer.\n\n## What Is Gorai?\n\nHere’s the one-liner: **a robot is a distributed system — so build it like one.**\n\nEven a *single* robot is really a pile of microcontrollers, single-board computers, sensors, and motors all talking to each other. Most frameworks consider that to be one monolithic blob. Gorai doesn’t. It treats every sensor as a **resource** you read and every actuator as a **tool** you call — discoverable services on a message mesh, addressed by name, not by hardwired cables.\n\nIf “resources and tools” sounds like how AI agents already think about the world — *yes*. That’s the whole point. Gorai speaks capability-model semantics natively over [NATS](https://nats.io/), so the same interface a human uses to drive the robot is the interface an AI agent uses to drive it tomorrow. No rewrite. No firmware surgery. Same mesh.\n\nAnd because it’s Go, the whole thing compiles to **one static binary with NATS embedded inside it.** No containers. No K8s. No pip, no venv, no wheel lottery. You `scp`\n\na single file to a Raspberry Pi or an Orange Pi and run it. That’s the deploy story. That’s it.\n\n- Sensors as resources, actuators as tools — an AI-agent-ready capability mesh\n- Single static binary, embedded NATS, zero external services\n- Composite robots — one\n*logical*robot can span a rover, a drone, a sensor mast, all joined at runtime - Action logs and replay as first-class primitives, because\n*autonomy without replay is folklore* - Safety enforced at the capability node,\n**not** trusted to the agent\n\nNow, before you start yelling: yes, you can extend beyond the one binary (using NATS, of course!). And yes, you can move real-time/latency critical components onto a microcontroller and join that to the mesh using [gorai-gsp](https://github.com/emergingrobotics/gorai-gsp) to do the serialization. There’s even an [example](https://github.com/emergingrobotics/gsp-pico-fw) firmware for the RP2040. But that’s a subject for another post!\n\nTo be clear about scope: I’m not trying to replace ROS 2. Different tool, different crowd. Gorai is for software-first folks who want to build robots the way we build modern distributed systems — and who want AI to be a first-class citizen, not a bolt-on.\n\n## See It Drive: the PiCar-X Example\n\nTalk is cheap. So there’s a working reference robot you can build today: [ gorai-gopicar-example](https://github.com/emergingrobotics/gorai-gopicar-example).\n\nThe PiCar-X is a little four-wheeled robot car kit from SunFounder — steering servo, drive motor, an ultrasonic distance sensor, a line/cliff sensor, and a camera on a pan/tilt mount. It’s a genuinely great little “better an a plastic toy” robot, and the best part is you can just *buy* one: it’s [about $90 on Amazon](https://www.amazon.com/SunFounder-Raspberry-Rechargeable-Batteries-Engineers/dp/B0CGLPF29H) — minus the Raspberry Pi, which you supply yourself. No custom PCBs, no soldering iron, no waiting on a fab. Order it, assemble it with a Pi, and you’ve got real hardware to run Gorai on.\n\nTake a SunFounder PiCar-X, cross-compile the binary, `scp`\n\nit over, and run:\n\n```\n./picarx run robot.json\n```\n\nOne command spins up the robot. I has an embedded NATS server, opens the hardware, and serves a web control UI at `http://<pi>:8080/`\n\n. Drive it with the arrow keys. Pan and tilt the camera. Watch live telemetry stream back. Hit spacebar to stop the motors, and ’s’ for an emergency stop.\n\nHere’s the beautiful part: **the browser is just another agent on the mesh.** The exact same interface a planning agent or a fleet coordinator would use. The car is teleoperable *today* and agent-drivable *tomorrow* — with zero changes to the capability layer. That’s not a slide. That’s running code.\n\nAnd it’s safe by construction: a watchdog stops the car within about half a second if control input drops, the e-stop latches until you clear it, cliff detection keeps it off the edge of your desk, and every command gets clamped to the servo and throttle limits. All of that lives in the component, not the UI — because you never trust the thing sending commands.\n\n## But wait - what about using Claude Code?\n\nOf course. Why not develop directly on the Pi? That’s how I built this robot. Claude runs fine on a Pi. You should try it!\n\n## Let an Agent Poke at It: gorai-mcp\n\nNow here’s where it gets fun. Because Gorai already models the world as resources and tools, exposing it to an LLM is almost embarrassingly natural. That’s what [ gorai-mcp](https://github.com/emergingrobotics/gorai-mcp) is: an MCP server that bridges your robot’s mesh to any MCP client. Point Claude at it and the model can\n\n*see*the robot — read the sensors as resources, call the actuators as tools — no glue code, no custom shim. It just shows up as capabilities the agent can reason about.\n\nIt’s genuinely magic the first time you watch a model discover your robot and start asking it questions.\n\nBut — and I want to be crystal clear here — **you don’t want to control the robot for real with this. It is way too slow.** Think about the round trip: your command goes through the MCP transport, up to a model, waits on inference, comes back down. That’s hundreds of milliseconds to seconds *per decision*. That is fine for “what do you see?” or “plan me a route.” It is absolutely, categorically *not* fine for the tight control loop that keeps a moving car out of the wall. Real-time control stays where it belongs: down on the node, in typed Go, running at mesh speed with the safety watchdogs I mentioned above.\n\nSo think of gorai-mcp as the robot’s *conversation* layer, not its *reflexes*. High-level reasoning and experimentation up top; fast, deterministic control down low. Don’t mix those up, or you’ll drive a very smart robot straight off your desk.\n\n## This Is Emerging Robotics\n\nGorai is the foundation of what I’m building for [ Emerging Robotics](https://emergingrobotics.ai/):\n\n*Open-Source Robotics for the Real World.*The PiCar-X is the friendly “hello, world.” But the framework is aimed at real robots doing real jobs.\n\nWhich brings me to the thing I probably shouldn’t tell you about yet…\n\n## One More Thing… 🌊\n\nThere’s a boat.\n\nMulti-rotor drones democratized the sky — fleet management, autonomous waypoints, modular payloads, all at hobbyist prices. So why is the *water* still locked behind $50,000 price tags, proprietary hardware, and industrial gatekeeping?\n\nMeet **SURF** — an open-source, open-hardware, 3D-printable autonomous surface drone. Radically open: every CAD file, every line of code, every line of the BOM. Modular by design. Fleet-ready out of the box. It self-rights if it capsizes. It fits in your car trunk. And it runs on Gorai.\n\n**S** urface **U** nmanned **R** econnaissance **F** rame. Or maybe we just like the ocean. You decide. And yes, we will use this for [recording whale song this winter](https://blog.herlein.com/post/the-new-whale-chase/)!\n\nIt’s about to go in the water for its first operational testing. I’m not going to say more yet — but keep an eye on this space, because when SURF gets wet, you’ll hear about it.\n\n## Try It\n\nGorai and the PiCar-X example are open source, right now:\n\n**Framework:**[github.com/emergingrobotics/gorai](https://github.com/emergingrobotics/gorai)** PiCar-X example:**[github.com/emergingrobotics/gorai-gopicar-example](https://github.com/emergingrobotics/gorai-gopicar-example)** The mission:**[emergingrobotics.ai](https://emergingrobotics.ai/)\n\nBuild the car. Drive it from your browser. Then imagine an agent holding the same controls. That’s the future I’m building toward — reliable, predictable, single-binary robotics that’s ready for AI. It brings the ease of Arduino, but kicked up a level in capability, and lets you do *real* robotics without having to learn the complexity of ROS 2.\n\nIf you build something with it, or you just want to argue about it, [drop me a note on LinkedIn](https://www.linkedin.com/in/gherlein/). And pay it forward.", "url": "https://wpnews.pro/news/announcing-gorai-a-modern-robotics-framework", "canonical_source": "https://blog.herlein.com/post/announcing-gorai/", "published_at": "2026-07-14 08:00:01+00:00", "updated_at": "2026-07-14 16:50:03.681089+00:00", "lang": "en", "topics": ["robotics", "ai-agents", "developer-tools"], "entities": ["Gorai", "Jordan Herlein", "NATS", "PiCar-X", "SunFounder", "Raspberry Pi", "Orange Pi", "RP2040"], "alternates": {"html": "https://wpnews.pro/news/announcing-gorai-a-modern-robotics-framework", "markdown": "https://wpnews.pro/news/announcing-gorai-a-modern-robotics-framework.md", "text": "https://wpnews.pro/news/announcing-gorai-a-modern-robotics-framework.txt", "jsonld": "https://wpnews.pro/news/announcing-gorai-a-modern-robotics-framework.jsonld"}}