Frostline: 노트북에서 Gemma로 구동되는 정원 계획 도구
요약
Frostline은 사용자의 기기에서 구동되는 정원 계획 도구입니다. 이 도구는 서리일 정보를 바탕으로 파종, 육묘, 이식 등의 기간을 계산하고, 로컬 오픈 웨이트 모델인 Gemma 3과 Ollama를 활용하여 코치 노트를 생성합니다. 최종적으로 종이 체크리스트로 출력하여 사용자가 실제로 정원에 나가 활동하도록 유도하는 것이 핵심입니다.
핵심 포인트
- 서리일 기반의 결정론적 파종 기간 계산 기능 제공
- Ollama와 Gemma 3을 이용한 로컬 환경에서의 AI 코치 노트 생성
- 노트북 화면 대신 종이 체크리스트를 통해 실제 경험 강조
이 글은 Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass에 제출하는 내용입니다.
제가 만든 것 (What I Built)
Frostline은 단 하나의 질문, 즉 '이번 주에 무엇을 심어야 할까?'에 대한 작은 정원 계획 도구입니다. 이 도구는 흙 한 조각, 발코니 화분 또는 공동 부지를 가진 누구나 읽는 대신 직접 밖에 나가고 싶어 하는 사람들을 위한 것입니다.
오늘 날짜, 평균적인 지난 봄 서리일(spring frost)과 첫 가을 서리일(fall frost)을 입력합니다. Frostline은 현재 열려 있는 파종(sowing), 실내 육묘(indoor-starting), 이식(transplanting) 기간, 일주일 내에 마감되는 기간, 그리고 두 주 안에 열리는 기간을 계산해 줍니다. 이후 로컬 오픈 웨이트 모델인 Gemma 3이 Ollama를 통해 구동되어 이러한 작업들에 대한 짧은 코치 노트(coach note)를 작성하고, 마지막으로 오늘 손으로 흙을 만질 수 있는 할 일 하나로 마무리합니다.
그다음 '필드 카드 인쇄(Print field card)' 버튼을 누르고 노트북을 닫아 종이 체크리스트를 밖에 가져갑니다. 화면은 경험의 가장 짧은 부분이며, 이것이 테마의 핵심입니다.
데모 (Demo)
호스팅된 데모는 없으며, 이는 의도적인 것입니다. Frostline은 로컬 우선(local-first) 방식이기 때문에 모델이 제가 비용을 지불하는 서버가 아닌 사용자 자신의 기기에서 실행됩니다. 실행하려면 두 개의 명령만 필요합니다:
ollama pull gemma3:4b
npm start
# open http://127.0.0.1:8787
04-30과 10-15와 같은 날짜를 입력하고 '이번 주 계획하기(Plan my week)' 버튼을 누르면, 그룹화된 체크리스트(곧 마감되는 것, 지금 할 일, 다가오는 것), 코치 노트, 그리고 인쇄 가능한 필드 카드를 얻게 됩니다. 저는 비디오를 녹화하지 않았고 아직 실제 정원에 가져가 보지도 못했습니다. 이 글은 제가 가지고 있지 않은 현장 보고서를 주장하는 것이 아닙니다.
코드 (Code)
GitHub logo amandewatnitrr / frostline
로컬 우선 서리일 정원 계획 도구: 결정론적 파종 기간 + Ollama를 통한 Gemma의 코치 노트. Hacktoberfest 2026, Touch Grass.
Frostline
서리일로부터 이번 주에 무엇을 심어야 할지, 그리고 사용자 자신의 기기에서 실행되는 오픈 웨이트 모델의 코치 노트를 받으세요. 그런 다음 노트북을 닫고 밖에 나가세요.
Built for the Hacktoberfest Open-Source AI Challenge: Week 1 (테마: 풀밭에 나가기).
작동 방식
- 오늘 날짜와 지난 봄의 평균 서리일, 그리고 첫 가을 서리일(
MM-DD)을 입력합니다. - 작고 결정론적인 플래너(
public/js/planner.js)가 현재 열려 있는 파종, 실내 육묘 및 정식 창(window)과 일주일 내에 닫히거나 이주일에 열리는 것을 계산해 줍니다. - 서버는 로컬 오픈 웨이트 모델(Ollama를 통한 Gemma 3)에게 오직 해당 작업들에 대해서만 짧은 코치 노트를 작성하도록 요청합니다.
- 한 페이지짜리 **밭 카드(field card)**를 인쇄하여 종이를 들고 밖에 나갑니다. 화면이 경험의 가장 짧은 부분입니다.
모델은 절대 날짜를 결정하지 않습니다. 플래너가 결정하므로, 작은 모델이 파종 창을 환각(hallucinate)할 수 없습니다. …
MIT 라이선스. npm 의존성 없음: 서버는 node:http를 사용하고, 클라이언트는 순수 ES 모듈이며, 테스트는 node:test를 사용합니다.
제작 과정
frost dates ──► planner.js (순수, 결정론적) ──► tasks
│
Ollama + Gemma 3 ◄────────┘
...```
**오픈 모델:** Gemma 3 (`gemma3:4b`가 기본값)와 같은 오픈 웨이트(open-weight) 모델을 Ollama의 HTTP API를 통해 로컬에서 실행합니다. `OLLAMA_MODEL`은 Ollama가 제공할 수 있는 다른 모든 모델로 교체 가능합니다.
**계획자는 날짜를 결정하고, 모델이 결정하지 않습니다.** `crops.js`에 있는 각 작물은 마지막 또는 첫 서리(frost)로부터의 일 오프셋으로 표현된 기간을 가집니다. `planner.js`는 순수 함수(pure function)이기 때문에 작은 모델도 식재 기간을 환각할 수 없습니다. 또한 새해와 남반구 달력을 넘나드는 기간도 처리합니다.
**모델은 Frostline이 생성한 데이터만 봅니다.** 서버는 브라우저의 작업 목록을 신뢰하는 대신 세 가지 입력으로부터 계획을 재계산하며, 시스템 프롬프트는 Gemma에게 나열된 작업만 사용하도록 지시합니다.
**점진적으로 저하됩니다(degrades gracefully).** Ollama가 실행되고 있지 않으면, 플래너와 필드 카드는 여전히 작동합니다. 코치 노트만 건너뛰고, UI에 그 이유를 표시합니다.
**솔직한 상태:** 저는 AI 에이전트(Claude Code)를 사용하여 Frostline을 구축했으며, 이 게시물은 AI 지원으로 표시됩니다. 플래너, Ollama 클라이언트 및 서버의 테스트 스위트는 포함되어 있지만, 아직 **실행하지 않았습니다**. 작물 기간은 온대 기후에 대한 경험적 규칙이므로, 반드시 지역 연장 서비스와 비교하여 확인하십시오. 실행 중 문제가 발생하면 이슈를 열어주십시오.
## 오픈 혁신(Open Innovation)이 중요한 이유
## 오픈 혁신(Open Innovation)이 중요한 이유
* **구축 단계부터 개인정보 보호 (Private by construction).** 추론(Inference)은 `localhost`에서 실행되며 서버는 `127.0.0.1`에 바인딩됩니다. Frostline은 사용자가 어디에 사는지 절대 묻지 않습니다. 단지 세 개의 날짜 문자열만 필요합니다. 정원 계획가에게 마당을 다른 사람의 서버로 보내야 할 이유가 없습니다.
* **무료 실행 (Free to run).** API 키도, 할당량(quota)도, 무언가를 질문하는 것에 대한 청구서도 없습니다. (예: 무순에 관한 질문)
* **교체 가능 (Swappable).** 환경 변수 하나로 모델을 변경하고, 사용 가능한 하드웨어에서 속도를 위해 트레이드 사이즈를 조정할 수 있습니다.
* **적절한 크기 (Right-sized).** 이 모델의 임무는 농학 데이터베이스가 아니라 90단어짜리 메모 작성입니다. 사실이 결정론적 코드(deterministic code)에서 나오는 경우, 4B 파라미터의 오픈 가중치(open-weight) 모델만으로 충분합니다. 폐쇄형 API를 사용했다면, 실제로는 날짜 계산에 키, 청구서, 그리고 데이터 공유 문제가 추가되었을 것입니다.
## 수상 부문 (Prize Categories)
* **Gemma 활용 최우수:** Gemma 3는 Ollama를 통해 로컬에서 실행되는 코치 노트의 기반 모델입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기