Swift로 AI 뇌를 가진 데스크톱 타마고치 고양이를 만들었고, 그것이 내 macOS Doc에 살아 있습니다
Source: Dev.to

2 AM에 코딩하면서 누군가 옆에 있으면 좋겠다고 느낀 적 있나요?
Murchi를 만나보세요 — macOS Dock에 살아있는 귀여운 데스크톱 고양이로, 화면을 돌아다니고, 음악에 반응하며, 이제는 Gemini AI 덕분에 실제로 대화도 할 수 있습니다.
이게 뭐죠?
Murchi는 macOS용 데스크톱 타마고치입니다. 작은 애니메이션 고양이로:
- 🐾 선반처럼 Dock 위를 걷는다
- 🎵 Apple Music / Spotify를 감지하고 춤을 춘다 (혹은 25 % 확률로 음악을 싫어한다)
- 😿 꾸짖으면 구석으로 가서 울는다
- 🖱️ 끌어당기면 목덜미에 매달린다
- 💬 Gemini AI와 채팅 — 고양이 캐릭터 그대로
- 🐟 먹이 주기, 목욕, 놀이 등 전형적인 타마고치 루프
메뉴 바에 =^.^= 로 자리 잡고 그냥… 살아갑니다.
기술 스택 (저주받았지만 사랑합니다)
전체 앱은 하나의 Swift 파일(~7 000줄)로 이루어졌습니다. Xcode 프로젝트도, 스토리보드도, SwiftUI도 없습니다.
- 순수 AppKit –
NSPanel,NSImageView, 원시CGContext그리기 - SVG 문자열을
NSImage로 렌더링 – 모든 애니메이션 프레임이 코드로 만든 SVG - 스프라이트, 에셋 없음 – 고양이는 베지어 경로와 헥스 컬러로 직접 구성
- 중력 물리,
CGWindowListCopyWindowInfo로 Dock 감지 - AppleScript 로 음악 감지 (
tell application "Spotify" to player state) - Gemini 2.0 Flash REST API와
URLSession으로 AI 채팅 - 100줄짜리
build-app.sh로 빌드 및 패키징 – Xcode 불필요
AI 부분
고양이에게는 성격이 있습니다. 채팅을 하면 Gemini가 다음을 알고 있습니다:
- 고양이 이름, 레벨, 진화 단계
- 현재 기분, 배고픔, 행복 수치
고양이는 1‑3문장으로 고양이 소리(“mrrrow~!”, “purrr”)를 섞어 답합니다.
let systemPrompt = """
You are Murchi, an adorable kawaii desktop cat.
Your personality: playful, cute, a bit mischievous.
Keep responses SHORT. Use cat sounds like "mrrrow", "mew".
Current mood: \(stats.mood). Hunger: \(Int(stats.hunger))%.
"""
사용자는 설정에서 자신의 Gemini API 키를 입력할 수 있으며, 기본값으로도 바로 동작합니다.
전체 프로젝트는 Claude Code 로 제작
이 프로젝트는 거의 전부 Claude Code (Anthropic의 CLI 에이전트)와의 대화로 만들어졌습니다. 내가 원하는 것을 설명하면 코드를 작성하고, 내가 테스트하고 피드백을 주면 수정해 주었습니다.
작업 흐름 예시
- 나: “Dock 위를 걷는 고양이가 필요해.”
- Claude: 2 000줄짜리 SVG 렌더러를 작성.
- 나: “고양이가 주황색인데, 복숭아색으로 해줘.”
- Claude: 렌더러를 다시 작성.
- 나: “이제 AI와 대화하게 해줘.”
- Claude: 15분 만에 Gemini 통합을 추가.
레포지토리의 모든 커밋은 Claude와 공동 저작입니다. 이는 AI‑보조 개발이 개발자를 대체하기보다 보강할 수 있음을 보여줍니다.
사용해 보기
무료이며 오픈 소스이고, 모든 Mac(macOS 12+)에서 동작합니다:
- ⬇️ GitHub 릴리스 (최신)
- 🐙 GitHub 저장소
- 🌐 실시간 사이트
Xcode 없이 빌드 가능 — bash build-app.sh 만 실행하면 됩니다.
음악 취향을 판단하고 가끔 화면에 똥을 놓는 데스크톱 반려동물을 원했다면, 바로 이것입니다.
mrrrow~! 🐱