메뉴
HN
Hacker News • 36일 전

27달러 스마트워치에서 코딩 에이전트 해킹하기

IMP
6/10
핵심 요약

소프트웨어 엔지니어 Mike Kasberg가 27달러짜리 오픈소스 펌웨어 스마트워치인 PineTime에서 코딩 에이전트를 활용해 커스텀 시계 화면을 만든 경험을 소개합니다. Claude(및 Kimi, DeepSeek 등 오픈 웨이트 모델)를 InfiniSim 시뮬레이터와 결합해 빠른 피드백 루프를 구축하니 몇 시간 만에 작동하는 프로토타입을 완성할 수 있었습니다. 저가 하드웨어에서도 에이전트 기반 개발이 충분히 실용적임을 보여주는 사례입니다.

번역된 본문

Mike Kasberg — 남편, 아버지, 소프트웨어 엔지니어, Ubuntu Linux 사용자. (X(Twitter), GitHub, LinkedIn, 이메일, RSS)

27달러 스마트워치에서 Claude로 해킹하기 2026년 8월 19일

PineTime은 오픈소스 펌웨어를 실행하는 27달러짜리 스마트워치입니다. 저는 이것을 서랍 뒤쪽에 1~2년 정도 넣어두고 있었습니다. ESP32 기기에서 Claude로 해킹하는 @steveruizok의 트윗을 보고, 영감을 얻어 PineTime을 서랍에서 꺼내 Claude가 무엇을 할 수 있는지 확인해보기로 했습니다!

(트윗: "코딩 에이전트가 뭔지 안다면 이걸 사거나 비슷한 걸 사보세요. 스폰서는 아니지만 Amazon, Pi Hut, Ali 등 어디에나 있어요." — Steve Ruiz (@steveruizok), 2026년 7월 25일)

시계에 기본으로 포함된 시계 화면들이 너무 밋밋하고 지루했기 때문에, 시계 화면을 만드는 것부터 시작하고 싶다는 걸 알고 있었습니다. 또한 최근에 @levelsio가 자신의 Apple Watch를 위해 커스텀 카시오 시계 화면을 만든 트윗을 본 적이 있었습니다.

(트윗: "Apple Watch용 CASIO 시계 화면을 만들었습니다. 두 번째 사진을 Widgy에 임포트하면 Apple Watch에 설치할 수 있어요." — @levelsio, 2023년 4월 15일)

(Claude의 약간의 도움으로) PineTime에도 비슷한 것을 만들 수 있을지 궁금했습니다. 결과적으로, PineTime은 Claude로 해킹하기에 아주 훌륭한 시계였습니다! 저렴하고(27달러), 오픈소스 펌웨어(InfiniTime 또는 원하는 다른 RTOS)를 실행하며, 문서화가 매우 잘 되어 있습니다. Claude는 이런 환경에서 빛을 발합니다. 훌륭한 시뮬레이터(InfiniSim)가 있어서, Claude가 컴퓨터에서 빠른 피드백 루프를 얻을 수 있습니다. 펌웨어가 단순해서 원하는 기능은 직접 추가해야 합니다.

지금까지 "Claude"라고 말해왔지만, 사실 대부분의 작업은 OpenCode에서 제가 좋아하는 오픈 웨이트 모델들로 수행했습니다. Kimi K3 & K2.6, 그리고 DeepSeek v4 Pro & Flash입니다.

먼저 InfiniSim 저장소를 클론하고(InfiniTime을 git 서브모듈로 포함), Claude에게 빌드가 작동하도록 해달라고 요청했습니다. Ubuntu에서는 빠르고 쉬웠습니다!

그다음 꽤 야심차게 진행했습니다. @levelsio의 트윗에 있던 사진을 Claude에게 주고, 기존 InfiniTime 시계 화면의 코드를 시작점으로 삼아 그 시계 화면을 복제해달라고 요청했습니다. 그리고 잘 정의된 개발 작업에 필요할 때 서브 에이전트를 활용해 조율하라고 했습니다. 꽤 괜찮은 대략적인 결과물을 만들었지만, 매우 거칠었습니다. 텍스트 크기와 위치를 그냥 추측하는 것처럼 보였고, 그래서 요소들이 대략 올바른 위치에 있긴 했지만 서로 겹치고 읽을 수 없었습니다. 그래도 반복적으로 개선할 수 있는 좋은 출발점이었습니다.

시뮬레이터 스크린샷을 찍는 피드백 루프를 제공했다면, Fable이 감독 없이도 작업을 완료하고 픽셀 단위로 완벽하게 만들 수 있었을 것 같습니다. 하지만 저는 OpenCode에서 오픈 웨이트 모델을 제한된 예산으로 사용하고 있었기 때문에, 토큰을 아끼기 위해 좀 더 직접 개입하고 격리된 작업과 구체적인 다음 단계로 구체적인 피드백을 주기로 했습니다. 한 번에 하나씩 수정했습니다. 다음 요소로 넘어가기 전에 각 텍스트 요소를 제대로 맞췄습니다.

화면의 정적 부분을 만드는 데 많은 노력을 쏟고 있다는 것을 깨닫고, 그게 꼭 필요한 건 아닐 수 있다고 생각했습니다. 모든 정적 부분을 포함한 전체 화면 배경 이미지를 만들어서, 화면의 동적 부분만 프로그래밍하면 안 되는지 궁금했습니다. 이걸 시도해봤고, 시뮬레이터에서 작동했습니다!

실제 시계에 펌웨어를 설치한 후, 우리가 이 작은 시계의 성능 한계를 밀어붙이고 있다는 것을 알게 되었습니다. 240x240 이미지를 블루투스로 전송해 기기에 설치하는 데 약 10분이 걸렸고, 스와이프할 때 전체 화면을 새로 고치는 데 1~2초가 걸립니다. 시계는 이 이미지 전체를 메모리에 한 번에 담을 수 없어서 파일 시스템에서 스트리밍해야 합니다. 하지만 몇 시간 만에 만든 시계 화면치고는 전혀 문제없습니다!

나중에 배경을 더 많이 코드로 만들어서 즉시 업데이트되도록 돌아올 수도 있습니다. 하지만 오늘은 제 작동하는 프로토타입에 만족합니다! 모든 코드를 GitHub에 올렸습니다.

원문 보기
원문 보기 (영어)
Mike Kasberg Husband. Father. Software engineer. Ubuntu Linux user. X (Twitter) GitHub LinkedIn Email RSS Hacking with Claude on a $27 Smart Watch 19 Aug 2026 The Pine Time is a $27 smart watch that runs open source firmware. I’ve had one sitting in the back of a drawer for a year or two. When I saw @steveruizok ’s Tweet about hacking on ESP32 devices with Claude, I found some inspiration to pull my 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 — Steve Ruiz (@steveruizok) July 25, 2026 I knew I wanted to start by building a watch face because the default watch faces that come with the watch are pretty plain and boring. I’d also recently seen @levelsio ’s Tweet 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 Watch https://t.co/KGWBTBBzRB pic.twitter.com/BBf1iZo9kV — @levelsio (@levelsio) April 15, 2023 I wondered if I could build something similar for the PineTime (with a little help from Claude). As it turns out, the PineTime is a great watch for hacking 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 with some of my favorite open weights models. Kimi K3 & K2.6, and DeepSeek v4 Pro & Flash. I started by cloning the InfiniSim repo (which has a git submodule for InfiniTime , and asked Claude to get a build working. It was quick and easy on Ubuntu! Then I got pretty ambitious: I gave Claude the photo from @levelsio ’s Tweet, and asked Claude to replicate the watch face, copying the code from an existing InfiniTime watch face as a starting point. And I asked it to orchestrate and use sub-agents as needed for well-scoped development tasks. It built a pretty good rough approximation, but it was very rough . It seemed to just guess at text sizing and positioning, which led to things being sort of in the right spot but overlapping each other and unreadable. Still, it was a good starting point that we could iterate on. I think Fable would have probably been able to finish the work and get it pixel-perfect without supervision, if I gave it a feedback loop to screenshot the simulator. But since I was doing this with open weight models on OpenCode, on a limited budget, I opted to save some tokens by getting a little more involved myself, and gave it specific feedback with isolated tasks and concrete next steps. I fixed one thing at a time – 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 the screen, and realized that might not be necessary. I wondered if I could just make a fullscreen background image with all the static parts, so we only had to program the dynamic parts of the screen. We tried this, and it worked on the simulator! After installing the firmware on a real watch, I found that we were pushing the limits of what this little watch was capable of. It took about 10 minutes to transfer the 240x240 image over bluetooth to install it on the device, and it takes 1-2 seconds to refresh the whole screen when you swipe. The watch can’t hold this whole image in memory at once; it has to stream it from the file system. But that’s totally fine for a watch face I built in a couple hours! I might come back at some point to build more of the background in code, so it can update instantly. But for today, I’m happy with my working prototype! I pushed all my code up to GitHub , and you’re welcome to use it directly, or use it as a starting point for your own project if you want. I also had Claude summarize the things we learned along the way into an AGENTS.md . That should help you get started quickly, and avoid some of the hurdles that I 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 production code at my day job) makes me feel like I can try whatever I want and iterate quickly, and it’s really rewarding to work on firmware for a physical device that I can hold and use when I’m done building it! I couple years ago when I bought this PineTime, I ran out of time and motivation to learn how to work in the InfiniTime codebase, and the watch sat in a drawer for a couple years. But today, I was able to build a new watch face in a few hours, and had fun doing it! The future is bright! About the Author 👋 Hi, I'm Mike! I'm a husband, I'm a father, and I'm a staff software engineer at Strava . I use Ubuntu Linux daily at work and at home. And I enjoy writing about Linux, open source, programming, 3D printing, tech, and other random topics. I'd love to have you follow me on X or LinkedIn to show your support and see when I write new content! Share! If you enjoyed this blog post, I'd love it if you could share it with your network! ☕ Buy Me A Coffee I run this blog in my spare time. There's no need to pay to access any of the content on this site, but if you find my content useful and would like to show your support, buying me a coffee is a small gesture to let me know what you like and encourage me to write more great content! Related Posts Vibe Coding From My Phone with OpenClaw 20 Mar 2026 Dotfiles Secrets in Chezmoi, Without Password Headaches 31 Jan 2026 My $500 Developer Laptop 09 Sep 2023