Tactility: an Esp32 OS
Posted3 months agoActive3 months ago
tactility.oneTechstoryHigh profile
excitedpositive
Debate
20/100
Esp32Embedded SystemsOperating Systems
Key topics
Esp32
Embedded Systems
Operating Systems
Tactility is a new OS for ESP32 devices that allows for loadable native code applications and has various potential use cases, sparking discussion among HN users about its capabilities and potential applications.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
2d
Peak period
33
60-72h
Avg / period
15.3
Comment distribution61 data points
Loading chart...
Based on 61 loaded comments
Key moments
- 01Story posted
Sep 29, 2025 at 9:11 AM EDT
3 months ago
Step 01 - 02First comment
Oct 1, 2025 at 2:44 PM EDT
2d after posting
Step 02 - 03Peak activity
33 comments in 60-72h
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 3, 2025 at 5:48 PM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45413294Type: storyLast synced: 11/20/2025, 3:47:06 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
I suppose I could do read write on an SD card but that's a lot of legwork for a not great workflow.
I'd love a simple device like the pico calc which I can use to hit a simple api endpoint. Clockwork PI and full Ubuntu seem a little bit like overkill.
I'd like to have a cool BASIC or Forth implementation and use a fun stack like that, but without being able to hit an API I'm not sure I will be motivated to use it.
This seems like a big improvement here, maybe I take a look at the LilyGo. I'm impressed
I might personally find it a lot more tempting to use a super DIY device (ie a baroque OS, unique input devices, etc.) if I could also make calls out to the public Internet (to read wikipedia? answer SMS? fetch any sort of map/transit info?)
Feel free to pile on and tell me which devices I've missed..! :-) I'm sure there must be some out there, considering that "cell phone in a chip" is pretty much a whole category now ie the qualcomm snapdragon chips, mediatek, etc.
... (reading more about it) actually, is it true that design/certification of a small device that boasts a cellular module is a lot harder than an esp32/wifi-only board? which explains why there isn't a plethora of cell-internet-enabled devices?
A browser would be quite tough on such an embedded system, you would need to really think outside of the box. The issue is that a browser could easily need more space to render than is available, have tonnes of images, require JS, etc.
On my machine. the lightweight browser dillo is 852kB, and that doesn't include the shared libraries (I could 26 on my machine). It's not going to be easy to get a similar experience running.
> Feel free to pile on and tell me which devices I've missed..! :-) I'm sure there must be some out there, considering that "cell phone in a chip" is pretty much a whole category now ie the qualcomm snapdragon chips, mediatek, etc.
I'm hoping to add to the list of devices myself maybe next year. It's a very difficult space to operate in.
> ... (reading more about it) actually, is it true that design/certification of a small device that boasts a cellular module is a lot harder than an esp32/wifi-only board? which explains why there isn't a plethora of cell-internet-enabled devices?
For the most part you can get already certified modules, where the ESP32 is itself largely one of these modules (the small ones with the metal body on a thin PCB). I think cellular is mostly avoided due to the increase in BOM, and you're not easily going to get 4G/5G support.
I think that I want a 5G tty qwerty terminal..? :-)
aka https://github.com/rastapasta/mapscii for maps, etc.
> and you're not easily going to get 4G/5G support
Sorry, what do you mean by that? In the sense of 4G not being that supported vs 3G? As in the chips aren't available? Or 4G service is hard to find..?
Cheers
A compromise might be to send the traffic via a proxy that pre-resizes images, renders content and chops it up into a manageable format for a resource constrained device.
> I think that I want a 5G tty qwerty terminal..? :-)
> aka https://github.com/rastapasta/mapscii for maps, etc.
For resource constrained devices, it's probably easier to render the vector graphics. There's a few open end points out there that could make it feasible for basic navigation.
> Sorry, what do you mean by that? In the sense of 4G not being that supported vs 3G? As in the chips aren't available? Or 4G service is hard to find..?
You can get them, but they are harder to interface with than the existing 2G/3G chips. Whoever takes on the challenge might have to do some work reverse engineering how to correctly speak to the modem, for example.
https://en.m.wikipedia.org/wiki/Wireless_Markup_Language
To do everything onboard, maybe, just maybe, you could parse basic HTML/CSS and images. But the majority of pages would of course fail anyway without full support for every modern feature.
This seems like it could be useful: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h...
The key insight here is that most smartphones are idle most of the time, so such a server (or group of servers) would need far less processing power than all the smartphones it replaces.
Given a Mitmproxy trace, modern llms could probably quickly build you simple apps for most popular services, leaving the heavyweight browsers for the long tail.
The cheapest noname 4G USB stick you can buy now probably has a Qualcomm MSM8916 in it, and runs, I shit you not, Android.
As you can imagine, development with this kind of thing can be rather involved. No open development kits are available. There are no reference designs that don't require you to sign off on an NDA to access it, and Qualcomm wouldn't even want to talk to you unless you are at least "MOQ 100000+" tall.
The best you can do is get an existing modem module that hopefully doesn't bury too many of the interfaces you want, try to run your firmware on it, and then design your own board around that.
Which would probably yield a device that's inferior to most cheap smartphones or even feature phones.
Which is pretty much what it costs for phone manufacturers right now.
I guess the real reason is that 4G is more than sufficient for pretty much anything, and it's going to be supported for the foreseeable future?
You're not wrong, see also [1].
> and Qualcomm wouldn't even want to talk to you unless you are at least "MOQ 100000+"
These[2,3,4] definitely aren't MoQ "100000+" (I know this market), and yet they have gotten their hands on Android chipsets somehow, [2] even includes a cellular modem. Not cheap devices by any means though.
[1] https://nickvsnetworking.com/adventures-with-a-10-lte-mifi-d... [2] https://www.blindshell.com/eshop/blindshell-classic-3-eu [3] https://www.himsintl.com/en/blindness/view.php?idx=8 [4] https://www.humanware.com/microsite/bntouch/index.php?srslti...
Even if you could get attention of one, and get it to design and make a custom device that wouldn't break the bank? You are still likely to end up with that OEM owning the design and/or binding you with a small pile of NDAs.
Another option would be to find a supplier that can get you some "fell off the back of a truck" smartphone chipsets, and either design your own PCB and roll your own software, or use a "fell off the back of a truck" reference design, SDK and tooling too. You'd need to be a real hardcore motherfucker to do that though.
https://github.com/CircuitMess/CircuitMess-Ringo
Offline maps being a big one that you could maybe "just" do. If you really need to get the device online pull out your phone.
Though I feel like there's loads of stuff that are on LTE etc. Just... they're real companies doing real things and not people hacking together one-offs. Think agtech, vending machines etc.
But at a practical level, there's really extremely few situations where you actually need a WWAN modem. There's almost always wifi available and if not you almost always have a phone with an internet connection. That aside, a big part of why people make these devices is specifically to get away from always-connected internet devices.
It also may or may not need approval from whichever telco operator you're trying to connect to, and the user has to provide their own SIM and do the legwork to get a subscription. It's just not super practical. Not impossible, but a big pain in the ass for not much benefit.
No need for Internet for some fun.
I genuinely would ask, how do I have fun? Maybe this is a generational thing, but like where would start? I'm interested in demoscene stuff but know nothing about it.
I'm just a CRUDmonkey who only knows how to CRUD. I love the idea of carrying around a Pico calc and writing BASIC apps but in 2025 I don't know how to begin in a way that motivates me. Probably a personal weakness, but that's just my experience
I think this device is begging for an IRC client though.
https://github.com/ByteWelder/Tactility/blob/main/App/Source...
since a lot of the newer esp32 devices purport to be computers (e.g. lilygo t-deck/t-lora pager, m5stack cardputer, ...), it's a bit strange that with a typical esp-idf setup you can't actually run arbitrary code on them.
Very skeptical that this is of any use; after bootup you have, what ... 260kb of RAM? Just doing runtime linking/relocations would eat up some of that. Just how small would your application have to be to be loaded at runtime?
Maybe they don't load the whole think into RAM, but thunk it somehow (I assume that elf supports that)?
Also 260kB of RAM on a 32bit processor could be a fair bit of code. Plus you could write it to external or internal flash. Though I don't know if esp-idf supports XIP (Zephyr does).
XIP depends on hardware support, not software.
In the past, the solution for arbitrary code was running scripts such as Wrench: https://github.com/jingoro2112/wrench
More recently also became possible to run Java apps with a JVM on ESP32: https://github.com/FlintVN/FlintESPJVM which is not yet arbitrary (e.g. download and run) but that is the route of development.
Even Linux was demonstrated running on ESP32 albeit I've never tried it: https://www.youtube.com/watch?v=pj0a91vlcGo
I hadn't heard about any Linux ports until I saw your comment here. Thanks!
The "playground" Linux port looks interesting, but it hasn't seen any updates for nearly a year. Still, I'm going to try it on a ESP32-S3 N16R8 and see how it goes.
It's funny, because I first ran Linux (SLS & Yggdrasil) on a PC with a 33MHz clock, 32MB RAM, and a 70MB hard drive. The N16R8 clock speed, RAM, and flash are all within an order of magnitude of what was on that old PC.
https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground
If you try the Linux build I'd appreciate to read your feedback/experience when running it.
I envision an OS that handles networking, remote maintenance and updates and possibly even some scheduling for multiple applications, so that I don’t have to do all that in my application code. I don’t see what conceptually would make this hard and it would be a great step up in hobbyist development experience to me.
As far as I’m aware NuttX (POSIX-like) even has a shell, so I don’t see what should be so hard about it (please correct me).
Edit: Apparently Zephyr is also gaining support for this. Whoever builds a simple platform on top of one of these definitely had my attention.
It's still not much, but more will be made in the coming months. I wanted to stabilize the APIs a bit more before making more apps. I almost finished a Diceware app.
> ## v1.0.0 - 2024-12-09
> * Added support for the following RISC-V chips: ESP32-P4 and ESP32-C6
People keep throwing OS into anything that is slightly look like a graphic interface.
Early version to me is just a fancy bootloader, that boot whatever program you choose and give up complete system control to that program.
Fun fact I was actually thinking of a similar idea and I had always known about coreboot but I hadn't known that it was actually invented because someone figured out that the bootloader and the linux kernel had similarities and so that's why. it was an aha moment of me for sorts
I came to know about this from the heads firmware ccc speech yesterday which I am going to link later as I saw it on my pc and I don't have its access right now
See coreboot till then https://www.coreboot.org/ and also a fork of coreboot which removes propreitory blobs iirc https://libreboot.org/ as well
https://github.com/toitlang/toit
There are so many cool use cases for those ESP32 type devices beyond IoT.
Something I was thinking about it turning them into password managers or TOTP tokens. You would just need to be able to run an SSH server on it and have access to basic crypto. Apache NuttX is probably the best candidate for that.
Then you would just need to turn them on or turn the wifi on when needed.
Also the integrated usb-phy on newer esp32s is pretty handy. I setup a driver to do PPP (!) connection over a USB-CDC serial port with a second serial port for logging [2]. All in 200 lines of Nim and a few Codex/GPT5 prompts.
I got a multithreaded MsgPack RPC server over the PPP connection using IPv6. Unfortunately you can't use CDC mode and USB JTAG, so I have a little rpc based binary uploader.
1: https://github.com/elcritch/nesper 2: https://github.com/elcritch/nesper/blob/devel/src/nesper/net...