Hacking with Claude on a $27 Smart Watch

speckx2 pts0 comments

Hacking with Claude on a $27 Smart Watch · Mike Kasberg

Mike Kasberg

Husband. Father. Software engineer. Ubuntu Linux user.

X (Twitter)<br>GitHub<br>LinkedIn<br>Email<br>RSS

Hacking with Claude on a $27 Smart Watch

19 Aug 2026

The Pine Time is a $27 smart watch that<br>runs open source firmware. I’ve had one sitting in the back of a drawer for a<br>year or two. When I saw @steveruizok’s Tweet<br>about hacking on ESP32 devices with Claude, I found some inspiration to pull my<br>PineTime out of the drawer and see what Claude might be capable of!

if you know what a "coding agent" is then go buy this or something very similar (not sponsored but they're on amazon, pi hut, ali, all over) pic.twitter.com/iPvHxBiltf<br>— Steve Ruiz (@steveruizok) July 25, 2026

I knew I wanted to start by building a watch face because the default watch<br>faces that come with the watch are pretty plain and boring. I’d also recently<br>seen @levelsio’s Tweet<br>about building a custom Casio watch face for is Apple Watch.

⌚ Made a CASIO watch face for my Apple Watch

You can import the 2nd pic into Widgy to install it to your Apple Watchhttps://t.co/KGWBTBBzRB pic.twitter.com/BBf1iZo9kV<br>— @levelsio (@levelsio) April 15, 2023

I wondered if I could build something similar for the PineTime (with a little<br>help from Claude). As it turns out, the PineTime is a great watch for hacking<br>with Claude!

It’s cheap ($27).

It runs open source firmware (InfiniTime, or any other RTOS you want).

It’s very well-documented. Claude thrives on this.

It has a great simulator (InfiniSim). That gives Claude a fast feedback loop on your computer.

The firmware is simple, so you kind of need to add what you want.

Although I’ve been saying “Claude”, I actually did most of the work in OpenCode<br>with some of my favorite open weights models. Kimi K3 & K2.6, and DeepSeek v4<br>Pro & Flash. I started by cloning the<br>InfiniSim repo (which has a git<br>submodule for InfiniTime, and<br>asked Claude to get a build working. It was quick and easy on Ubuntu! Then I got<br>pretty ambitious: I gave Claude the photo from<br>@levelsio’s Tweet, and asked Claude to replicate the<br>watch face, copying the code from an existing InfiniTime watch face as a<br>starting point. And I asked it to orchestrate and use sub-agents as needed for<br>well-scoped development tasks.

It built a pretty good rough approximation, but it was very rough. It seemed<br>to just guess at text sizing and positioning, which led to things being sort of<br>in the right spot but overlapping each other and unreadable. Still, it was a<br>good starting point that we could iterate on. I think Fable would have probably<br>been able to finish the work and get it pixel-perfect without supervision, if I<br>gave it a feedback loop to screenshot the simulator. But since I was doing this<br>with open weight models on OpenCode, on a limited budget, I opted to save some<br>tokens by getting a little more involved myself, and gave it specific feedback<br>with isolated tasks and concrete next steps. I fixed one thing at a time –<br>getting each text element right before moving on to the next one.

I noticed we were spending a lot of effort trying to build some static parts of<br>the screen, and realized that might not be necessary. I wondered if I could just<br>make a fullscreen background image with all the static parts, so we only had to<br>program the dynamic parts of the screen. We tried this, and it worked on the<br>simulator! After installing the firmware on a real watch, I found that we were<br>pushing the limits of what this little watch was capable of. It took about 10<br>minutes to transfer the 240x240 image over bluetooth to install it on the<br>device, and it takes 1-2 seconds to refresh the whole screen when you swipe.<br>The watch can’t hold this whole image in memory at once; it has to stream it<br>from the file system. But that’s totally fine for a watch face I built in a<br>couple hours! I might come back at some point to build more of the background in<br>code, so it can update instantly. But for today, I’m happy with my working<br>prototype!

I pushed all my code up to<br>GitHub, and you’re welcome<br>to use it directly, or use it as a starting point for your own project if you<br>want. I also had Claude summarize the things we learned along the way into an<br>AGENTS.md.<br>That should help you get started quickly, and avoid some of the hurdles that I<br>ran into, if you want to try this with your own watch!

I loved working on this project with an AI! The low-stakes environment (not<br>production code at my day job) makes me feel like I can try whatever I want and<br>iterate quickly, and it’s really rewarding to work on firmware for a physical<br>device that I can hold and use when I’m done building it! I couple years ago<br>when I bought this PineTime, I ran out of time and motivation to learn how to<br>work in the InfiniTime codebase, and the watch sat in a drawer for a couple<br>years. But today, I was able to build a new watch face in a few hours, and had<br>fun doing it! The future is bright!

About the Author

👋 Hi, I'm Mike! I'm a...

watch claude face hacking firmware build

Related Articles