8 ms·
zclaw: personal AI assistant in under 888 KB, running on an ESP32
- johnea 9mo ago[flagged]
- throwa356262 9mo agoMe neither. But I have 10-15 ESP32's just waiting for a useful project. Does HN have better suggestions?
- pacifika 9mo agoBuild a synthesizer
- h4ch1 9mo ago+1. if you have a couple of potentiometers and a breadboard lying around, a granular synth would be a fun exercise.
- brcmthrowaway 9mo agoWhy do you have so many? eWaste..
- fragmede 9mo agoI need 1, but they come in packs of 10.
- cameron_b 9mo agodesk rover - https://www.huyvector.org/diy-cute-desk-robot-mo-chan https://www.huyvector.org/diy-cute-desk-robot-mo-chan a kid-pleaser at the very least
- iwontberude 9mo agoNo, no, but we insist!
- dang 9mo ago"Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something." "Don't be snarky." https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- johnea 9mo agoI'm unsnarkly saying this work is completely useless for me. Should all feedback be in the form of "that's so awesome!"? Being unable to absorb negative feedback seems detrimental to a product development effort...
- dang 9mo agoOf course, but the site guidelines are clear about how to do so: "Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something." https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html It's also worth checking out the Show HN guidelines: Be respectful. Anyone sharing work is making a contribution, however modest. Ask questions out of curiosity. Don't cross-examine. Instead of "you're doing it wrong", suggest alternatives. When someone is learning, help them learn more. When something isn't good, you needn't pretend that it is, but don't be gratuitously negative. https://news.ycombinator.com/showhn.html https://news.ycombinator.com/showhn.html The current post wasn't a Show HN, of course. But the same spirit applies.
- groundzeros2015 9mo agoAnytime I get in a discussion and sufficient number of people disagree, my comments are flagged despite obeying site guidelines. What should I do about this?
- throwa356262 9mo ago"LLM backends: Anthropic, OpenAI, OpenRouter." And here I was hoping that this was local inference :)
- deleted 9mo ago[deleted]
- micw 9mo agoSure. Why purchase a H200 if you can go with an ESP32 ^^
- sigmoid10 9mo agoBlowing more than 800kb on essentially an http api wrapper is actually kinda bad. The original Doom binary was 700kb and had vastly more complexity. This is in C after all, so by stripping out nonessential stuff and using the right compiler options, I'd expect something like this to come in under 100kb.
- __tnm 9mo agoyeah i sandbagged the size just a little to start (small enough to fit on the c3, 888 picked for good luck & prosperity; I even have a build that pads to get 888 exactly), so i can now try reduce some of it as an exercise etc. but 100kb you’re not gonna see :) this has WiFi, tls, etc. doom didn’t need those
- pitched 9mo agoDoom had the benefit of an OS that included a lot of low-level bits like a net stack. This doesn’t! That 800kB includes everything it would need from an OS too.
- __tnm 9mo agoyah my back of the envelope math.. the “app logic”/wrapper pieces come out to about 25kb WiFi is 350 Tls is 120 and certs are 90!
- g947o 9mo agoSerious question: why? What are the use cases and workflows?
- milar 9mo agofor fun!
- grzracz 9mo agoI don't fully get it either. At least agents build stuff, claws just run around pretending to be alive?
- codazoda 9mo agoThey do build things. The same things.
- eleventyseven 9mo agoThe various *claws are just a pipe between LLM APIs and a bunch of other API/CLIs. Like you can have it listen via telegram or Whatsapp for a prompt you send. Like to generate some email or social post, which it sends to the LLM API. Get back a tool call that claw then makes to hit your email or social API. You could have it regularly poll for new emails or posts, generate a reply via some prompt, and send the reply. The reason people were buying a separate Mac minis just to do open claw was 1) security, as it was all vibe coded, so needs to be sandboxed 2) relay iMessage and maybe 3) local inference but pretty slowly. If you don't need to relay iMessage, a raspberry pi could host it on its own device. So if all you need is the pipe, an ESP32 works.
- grigio 9mo agoyeah i still can't believe many people bought a mac mini just for the claw hype
- yoyohello13 9mo agoI’m running my own api/LLM bridge (claw thing) on a raspberry pi right now. I was struggling to understand why all the Mac mini hype when nobody is doing local inference. I just use a hook that listens for email. Email is especially nice because all the conversation/thread history tracking is built in to email already.
- theturtletalks 9mo agoIs there a heartbeat alternative? I feel like this is the magic behind OpenClaw and what gives it the "self-driven" feel.
- v9v 9mo agoRelevant: https://github.com/sipeed/picoclaw https://github.com/sipeed/picoclaw
- yauneyz 9mo agoGenuinely curious - did you use a coding agent for most of this or does this level if performance take hand written code?
- xgulfie 9mo agoAn esp32 image that makes http api calls is like, the first thing you do with an esp32, it's what they're made for
- bensyverson 9mo agoThis is absolutely glorious. We used to talk about "smart devices" and IoT… I would be so curious to see what would happen if these connected devices had a bit more agency and communicative power. It's easy to imagine the downsides, and I don't want my email to be managed from an ESP23 device, but what else could this unlock?
- K0balt 9mo agoA highly opinionated thermostat?
- bensyverson 9mo agoOr how about a robot vacuum that knows not to turn on during important Zoom calls? Or a fridge that Slacks you when the defroster seems to be acting up?
- K0balt 9mo agoI’m all for more intelligent cleaning robots. The object avoidance AI is pretty good these days, but some of the navigation algos are just total garbage, unable to deal with trivial anticipatable problems.
- dlt713705 9mo agoA vacuum cleaner allies with the A/C thermostat using Discord, then declares war on the refrigerator, and finally posts propaganda about it on Facebook.
- GTP 9mo agoI have a couple ESP32 with a very small OLED display, I'm now thinking I could make an "intelligent" version of the Tamagotchi with this. Do you HN crowd have other cool ideas?
- K0balt 9mo agoThat would be sweet. That the supermini type with the 0.46” display? Those are fun for lots of things.
- GTP 9mo agoYes, something like that that I found on Aliexpress: https://a.aliexpress.com/_EH7lHde https://a.aliexpress.com/_EH7lHde
- K0balt 9mo agoI can’t see anything specific in the link, and you probably already solved this… but just fyi, if it’s the same unit I used, and you are using arduino libraries, the library that worked was called one-bit display IIRC, and it basically acted as 1/4 of a ssd1306 64x128 oled, so you had to use x/y pixel offsets.
- tempaccount5050 9mo agoYou know I tried this exact thing a few months back, sans the ESP32. You just end up writing a state machine and defining a bunch of constants anyway or the LLM just kinda gets stuck in a loop. Hm, it doesn't seem to know when to eat. I'll add a hunger variable... Etc etc until you're not even sure what you want the LLM to do.
- GTP 9mo agoI see. While those "claws" may look cool on the surface, I'm actually struggling to find a use case that is interesting for me. Do you guys have ideas? I already seen below the grocery shopping automation, but I will keep going at the supermarket in person for the foreseeable future.
- roxolotl 9mo agoThis is a great example of how silly this whole thing is. There’s next to nothing to these claws. Turns out that if you give an llm the ability to call APIs they will.
- felipeerias 9mo agoIf it turns out that there is significant value in everyone having their own personal agent running 24/7, we might end up needing a lot more compute than anticipated. (It’s a big if! I’m not convinced about that myself, but it’s worth considering that possibility.)
- tokenless 9mo agoI am using a claw. I am not ready to give it access to much but web and cron plus a chat channel is useful and feels more light touch than typical AI sessions and UIs
- anonzzzies 9mo agoI use opencode, cerebras GLM with some mcps for that. It's so lovely because you press enter and there is the answer already.
- eshaham78 9mo ago[dead]
- prmoustache 9mo agoI am struggling to understand what a personal agent/assistant would do to me. If I need reminders I just enter calendar entries on my smartphone, what else?
- yoyohello13 9mo agoWhat’s most shocking to me about the whole OpenClaw hype is how little people in tech seem to know about computers… It’s like most of the industry hasn’t ever looked any deeper than their node_modules folder.
- alexalx666 9mo agoI think you can use C++ on esp32, that would make the code more readable
- p0w3n3d 9mo agoMy new DIY laptop has 400GB RAM accessible and it runs only esp32* ____ * Requires external ram subscription
- czardoz 9mo agoReally looking for a minimal assistant that works with _locally hosted models_. Are there any options?
- yoyohello13 9mo agoWhy are you looking? Just build one for yourself.
- Onavo 9mo agoThe bottleneck here is usually the locally hosted model, not the the assistant harness. You can take any off the shelf assistant and point the model URL at localhost, but if your local model doesn't have enough post training and fine tuning on agentic data, then it will not work. The AI Assistant/OpenClaw is just calling APIs in a for loop hooked up to a cron job.
- czardoz 9mo agoExactly. OpenClaw is good, but expects the model to behave in a certain way, and I've found that the local options aren't smart enough to keep up. That being said, my gut says that it should be possible to go quite far with a harness that assumes the model might not be quite good (and hence double-checks, retries, etc)
- telescopeh 9mo agoIt really depends on what resources you have qwen-code-next will run them but you will need at least 64gb of memory to run it at a reasonable quant and context. Most of these agents support OpenAI/anthropic compatible endpoints.
- godelski 9mo agoDepends what you mean. If you mean something that calls a model that you yourself host, then it's just a matter of making the call to the model which can be done in a million different ways. If instead you mean running that model on the same device as claw, well... that ain't happening on an ESP32... I think if you are capable of setting up and running a locally hosted model then I'd guess the first option needs no explanation. But if you're in the second case I'd warn you that your eyes are bigger than your mouth and you're going to get yourself into trouble.
- godelski 9mo agoWow, the rare bash <(curl foo.sh) pattern. As opposed to the more common curl foo.sh | bash Equivalent but just as unsafe. If you must do this instead try one of these # Gives you a copy of the file, but still streams to bash curl foo.sh | tee /tmp/foo.sh | bash # No copy of file but ensures stream finishes then bash runs bash -c "$(curl foo.sh)" # Best: Gives copy of file and ensures stream finishes curl foo.sh -o /tmp/foo.sh && bash $_ I prefer the last one
- wakawaka28 9mo agoIf you want to be super pedantic, try to make the command shell-agnostic in case the user is not running bash already.
- godelski 9mo agoEverything I wrote works in bash and zsh. I think this is going to be fine for the vast majority of people. Tbh, I'm not sure what isn't portable, or at least not portable for everything that the curl-pipe-bash pattern doesn't already work for.
- cgfjtynzdrfht 9mo ago[dead]
- maleldil 9mo ago`curl foo.sh | bash` works with any shell as long as bash is installed. `bash <(curl foo.sh)` doesn't work on shells that don't have that process substitution syntax (like fish, and I think nushell)
- godelski 9mo agoOkay so doesn't work for fish or dash but who is using those? More importantly, who is using those and doesn't know how to convert? It really just seems like you're trying to start a fight and I don't know why. If you're going to fight with anyone go actually click the link and fight with the one who started it
- amelius 9mo agoRust just called. They want their lobster back.
- saberience 9mo agoCan we please move past this whole OpenClaw hype? Yes it’s an llm in a loop and can call tools. This also existed six months and a year ago, and it was called an ai agent. And yes we can all vibe code them in 1000, 2000, or 10000 lines of code in zig, rust, or even c. Game over man. Game over.
- PlatoIsADisease 9mo agoWell I wasn't using your homegrown solution, but now I'm using openclaw and it 'hijacks' my computer to do whatever I tell it. Heck, my 6 year old kid has been using it. My 6 year old kid isnt writing code in langchain.
- 0xbadcafebee 9mo agoI'm a simple man; I see ESP32, I upvote
- EGreg 9mo agoCan't you make a personal AI assistant in a bash loop of two lines? 1. Call your favorite multimodal LLM model 2. Execute command on terminal, piping command to LLM In fact you can just have one line: Call LLM > bash.sh and the LLM can simply tell bash to call itself incidentally, or fan out to many "agents" working on your behalf. Use your favorite programming language. Just as pwnable in any of them :) $task = "Send pictures of cute cats"; $context = "Output a bash script to do $task. The bash script should return the next prompt to you. Keep going until task is done. My keys to all my accounts: $keys. Plz dont pwn me"; do { $trust_me_bro_my_model_rocks_RCE = call_llm($context); $context = exec( $trust_me_bro_my_model_rocks_RCE ) } while ($trust_me_bro_my_model_rocks_RCE && !$pwned)
- umairnadeem123 9mo ago[dead]
- hsbauauvhabzb 9mo agoYou’ve just added more points of failure. Now the cloud machine can go down, your internet could drop, your wireless could fail or a variety of other problems. It’s not a bad use case, but it doesn’t reduce problems all other things being equal.
- PlatoIsADisease 9mo agoCouldn't you make it just as simple with Linux? You are just doing more. t. Someone with a dozen Apache servers that I only touch when I hit end of life.
- varispeed 9mo agoLinux is not a realtime OS, so it is never going to be as reliable as bare metal code on MCU.
- Sayrus 9mo agoNeither will an ESP32 that needs permanent internet acccess and relies on a publicly available API usually running on Linux servers. Running on a realtime OS is not relevant for zclaw.
- tirant 9mo agoIt has nothing to do with being realtime. Most mcus are also not running any realtime OS. What matters here is how dynamic and tightly coupled are the os components. On an embedded system, most of the system and their dependencies are monolithic, without any live updates. The system tends to behave almost deterministically after every reboot.
- snowhale 9mo ago[dead]
- reassess_blind 9mo agoWhat’s the best lightweight “claw” style agent for Linux? It doesn’t necessarily need containerisation or sandboxing as it would be run on a fresh vps with no access to important data.
- rcarmo 9mo agoIf you just want Whatsapp and webchat, I'm hacking https://github.com/rcarmo/piclaw https://github.com/rcarmo/piclaw from NanoClaw and my own web front-end (I prefer a simple web app I can access via tailscale)
- Havoc 9mo agozeroclaw perhaps?
- IceWreck 9mo agoI've been using https://github.com/sipeed/picoclaw https://github.com/sipeed/picoclaw
- peteforde 9mo agoI don't understand what this is for or why you would ever want to do this. Is it not just a glorified HTTP wrapper? Serious request... I genuinely want to understand. Give me a practical use case?
- oceanplexian 9mo agoTo be honest this completely defeats the purpose of OpenClaw. The point is to give it a real desktop with a real browser profile so it can bypass the enshittified walled garden that has become the modern web. Big tech would desperately like you to not be able to do that, hence why they spent years obfuscating APIs and JS, CAPTCHAs, hostile user interfaces, using their browser monopoly to stop Ad Blockers, etc. Now all of these services have become a commodity that an AI can browse on your behalf.
- veryemartguy 9mo agoOh wow more ai slop
- 6ak74rfy 9mo agoAre there collaborative versions of these *claws today? Like, if an "admin" could self-host one on their home server and the whole family could use it? IIRC, OpenClaw has some version of "profiles" but does it allow, say, couple of family members to collaborate with the bot in a shared chat but each has individual/private chats as well.
- post_below 9mo agoI haven't been following the claws but I built something like this recently. Self hosted, runs through signal, supports group chat (with whitelisted accounts). I just finished setting up grocery automation to run on it: agent provides a starter list based on past orders (locally stored or grabbed from store site), all group members can weigh in, add or remove items, agent uses bespoke browser tool to login to store, create the cart using the finalized list (and optionally search for additional request items), validates the cart and (maybe later) places the order for delivery. I haven't implemented the full checkout process yet, not sure if I want the agent to have spending power. As is I just login and finish the last 2 clicks of checkout manually. Crazy times. It was easy enough to build that if someone hasn't already open sourced something like it, they will shortly.
- 6ak74rfy 9mo agoCan you share the code? Specifically, curious how you did the browser integration. Did you use agent-browser? Something else?
- post_below 9mo agoThe browser is very straightforward, about 300 lines implementing all of the various actions you'd want an agent to have access to in puppeteer: const puppeteer = require('puppeteer'); const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com https://example.com'); Session persistence is accomplished by storing the WebSocket endpoint between calls. More: https://pptr.dev/guides/browser-management https://pptr.dev/guides/browser-management
- dhjjdjjjd 9mo ago[flagged]
- blensor 9mo agoThe more I think about openclaw, the more it seems to be for AI agents what ROS is for robotics. openclaw defines how to interact with distributed nodes ( how those provide the capabilities to the "orchestrator" ) but the real benefit are many task specific nodes that when put together make up something much bigger than the sum of it's parts
- embedding-shape 9mo ago> openclaw defines how to interact with distributed nodes Does it actually? AFAIK, there is no "specification" or "protocol", it's a cobbled together "platform" you run, with a bunch of integrations, but none of that is specified by openclaw itself. Happy to be corrected though, I only spent one weekend with openclaw before tearing it down.
- blensor 9mo agoI've only just started to dive into it from the documentation side of things. They have ( maybe recently? ) started to create this Gateway Protocol https://docs.openclaw.ai/gateway/protocol https://docs.openclaw.ai/gateway/protocol to connect the stuff together. It may be a "we are changing the wheels while driving" thing, but if enough people make nodes for openclaw it will become somewhat of a standard. And then we probably see 100 different claw offshots that all use the same nodes but with a different claw in the center
- embedding-shape 9mo ago> They have ( maybe recently? ) started to create this Gateway Protocol https://docs.openclaw.ai/gateway/protocol https://docs.openclaw.ai/gateway/protocol to connect the stuff together. That's a communication protocol between openclaw server and clients authenticated to that server though, it's not a communication protocol between different openclaw servers, is it? More like defining a HTTP+JSON protocol between a web server and a browser side client application. It's not a "protocol defining how to interact with distributed nodes", again, unless I misunderstand something.
- Kalpaka 9mo ago[dead]
- written-beyond 9mo agoCan someone provide a true engineers perspective on the ADCs' on ESP SoC's? I've heard a lot about people trashing it and most experienced engineers admit that it's finicky however if you have the knowledge you can make it work as well as any STM chip. ESP32's are so interesting, they're the only major chip that (used to) have their own newish ISA (before transitioning to RISCV) and be so successful.
- sitkack 9mo agoThe ESP32 pre-RISCV ISA is from Tensilica, this IP they purchased.
- Kiboneu 9mo agoTo be clear and towards the OP's comment about ESP32 ISA -- Xtensa isn't really a self contained architecture, it can be customized (extended) by the vendor. The ISA can be extended for these customizations. ESP32 is one customization of it.
- sitkack 9mo agoIt was only opaquely supported by GCC, no LLVM, so no Rust. It is a cool design, but it was a major PITA for awhile. Xtensa is parametric so every instance of a cpu has a custom instruction set.
- Kiboneu 9mo agoHeh. Yep. Reverse engineering firmware for a custom xtensa cpu is also a lot of “fun” (and also fun).
- leptons 9mo agoThe ADCs on the ESP32 are similar to other embedded MCUs in that they are not intended for audiophile-level audio capture, as some people seem to think they should be capable of. The main value proposition for these ADCs is to hook them up to a simple potentiometer to allow physical input controls, and even for that purpose you need to average multiple samples to get a somewhat steady value. Of course the ADCs can be used for various other tasks, but "ADC" does not mean they can do anything any ADC can do, there's a wide variety of quality and purpose in the field of ADCs, and the ESP32's ADCs are a cheap and easy way to add a simple ADC function to the chip. I have been able to use the ADCs quite easily for input controls and monitoring slow-changing voltages, in ap;lications where abdolute precision wasn't the goal, it works perfectly fine for that.
- Dr_Birdbrain 9mo agoSorry for being dense—does this include a tiny LLM to power the agent? Or is it just a wrapper that needs to be connected to the internet?
- jolmg 9mo agoWrapper. Uses OpenAI by default: https://github.com/tnm/zclaw/blob/9ed4dc66ffa611f90f0745d90b3ebc396ffd382c/main/llm.c#L423 https://github.com/tnm/zclaw/blob/9ed4dc66ffa611f90f0745d90b...
- Dr_Birdbrain 9mo agoThanks!
- killingtime74 9mo agoI believe most claws (not just this) are wrappers
- namcheapisdumb 9mo agothat's nice i'm buying ten mac minis to run this