27달러 스마트워치에서 코딩 에이전트 해킹하기
소프트웨어 엔지니어 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에 올렸습니다.