
🐾 GitHub : https://github.com/ESeungJun/claude-bouncer
안녕하세요 ! 안드로이드 개발하고 있는 이승준입니다.
요즘 Claude Code를 터미널 여러 개에 띄워놓고 일하는 경우가 많은데요
다른 일 하다 보면 "끝났나?", "권한 요청 떠 있는 거 아냐?" 하면서 계속 창을 왔다 갔다 하게 되더라고요.
그래서 바탕화면에 작은 도트 클로드를 하나 띄워봤어요.
평소엔 화면을 돌아다니고 낮잠도 자다가
세션이 끝나거나 나를 기다리면 커서 앞으로 달려와서
어느 프로젝트, 어느 브랜치, 어느 터미널 탭에서 불렀는지 카드로 알려줍니다.
사실 처음 만든 건 올해 4월이었는데
그때는 화면 구석에서 통통 튀기만 하는 단순한 알림이었어요.
이번에 다시 꺼내서 같이 놀 수 있는 펫으로 거의 새로 만들었습니다.
이번에도 구현은 거의 Claude Code가 했고요
이 글은 그 과정에서 했던 결정이랑 그 이유를 정리한 글입니다.

macOS랑 Windows 둘 다 되고, MIT 라이선스로 열어뒀어요.
숫자로 보면 이 정도예요.

v1은 진짜 "알림" 하나만 하는 앱이었어요.
세션이 끝나면 화면 오른쪽 아래에서 펫이 통통 튀고, 누르면 터미널로 가는 정도였죠.
근데 솔직히 그래픽이 별로 귀엽지 않았고
기능 자체에도 버그가 꽤 많았어요,,
조금씩 고쳐서 쓰기보다는 아예 새로 만드는 게 낫겠다 싶었습니다.
그래서 v2는 두 가지를 잡고 시작했어요.
알림도 그냥 튀는 것 말고, 누가 불렀는지 카드 한 장으로 끝나게 바꿨고요.

카드에는 생각나는 정보는 다 넣었어요.
작업 완료인지 권한 요청인지, 어느 프로젝트의 어느 브랜치인지, 내가 마지막에 뭘 시켰는지, 결과가 뭔지까지요.
권한 · 입력 요청은 처리할 때까지 남긴다
카드를 누르면 정확한 탭으로


패널에는 알림함이랑 열려 있는 세션 전체 현황(작업 중 · 응답 필요 · 끝남)도 있어요.
자리 비웠다 돌아오면 "자리 비운 사이 알림 3개 왔어 !" 하고 알려주기도 하고요.

펫은 화면 전체를 덮는 투명 창 위에서 움직여요.
대신 펫, 카드, 메뉴 위에서만 클릭을 받고 나머지는 전부 아래 앱으로 통과시켰어요.
화면 전체를 덮는 창이 클릭을 먹으면 그날로 지워버릴 것 같아서요,,

v2 그래픽은 Higgsfield로 캐릭터 컨셉 시트랑 앱 아이콘을 먼저 만들고
앱 속 스프라이트는 코드로 한 픽셀씩 찍었어요. (18×14 칸)
걷기, 폴짝, 낮잠, 냠냠, 어지러워하는 표정까지 다 코드예요.
놀 거리는 이 정도 넣었어요.

알림 앱인데 미니게임까지 넣은 건 좀 오버인가 싶긴 했는데
펫이 먼저 와서 놀아달라고 조르니까 결국 하게 되더라고요,,

사진을 넣으면 나를 닮은 도트 캐릭터로 바꿔 입는 기능이에요.
이미지는 Higgsfield로 만들었는데 여기서 정한 게 몇 가지 있어요.
API 키 대신 계정으로 로그인
도트로 다시 찍기
사람 모양이 아니어도 된다


계정이 없어도 바꿔 입을 수 있게

참고로 시험 삼아 포켓몬 이미지를 넣어봤는데 "nsfw"로 거절당했어요. (아찔)
저작권 캐릭터는 콘텐츠 정책에 걸리는 거였고, 다행히 크레딧은 안 빠지더라고요.
"사진이 정책에 걸렸어요" 만 보면 뭐가 문제인지 모르니까, 내 사진이나 반려동물, 직접 그린 캐릭터로 해보라고 안내 문구를 바꿨습니다.
Claude Code는 훅이 있어서 알림 받기가 쉬운데
claude.ai 웹 채팅은 그런 게 없어서 작은 브라우저 확장을 하나 만들었어요.
처음엔 저장소를 받아서 start.command를 더블클릭하는 방식이었는데
Node.js가 깔려 있어야 하고, 훅 스크립트도 Node로 돌아서 개발자가 아니면 쓰기가 어려웠어요.
ELECTRON_RUN_AS_NODE=1) 훅을 실행하게 했어요. Node.js가 없어도 알림을 받을 수 있어요.v* 태그를 올리면 GitHub Actions가 macOS(dmg · zip, Apple Silicon · Intel)랑 Windows(exe) 설치 파일을 빌드해서 릴리스 초안에 올려줘요.1. 훅 설치하다가 남의 훅을 지움
~/.claude/settings.json에 훅 4개를 등록하는데, 지울 때 send-notify.js가 들어간 명령이면 다 지우고 있었어요.2. 느린 맥에서 빈 알림이 옴
3. 주먹밥의 밥이 투명해짐
4. 홍보 영상이 커밋에 딸려 올라감
git add -A에 같이 쓸려서 PR에 올라갔어요.33초짜리 홍보 영상도 하나 만들었어요.
이건 claude.ai 웹에서 바운서 저장소 README를 넘겨주고 모션그래픽으로 만들어달라고 했어요.
터미널 여러 개 앞에서 "끝났나?" 하는 장면으로 시작해서, 카드 · 쿠키 · 미니게임 · 나만의 캐릭터 순서로 보여줘요.
글에 넣은 GIF 두 개도 이 영상에서 잘라낸 거예요.
🎬 영상 : https://github.com/ESeungJun/claude-bouncer/blob/master/claude-bouncer-ad-silent.mp4
앞에서 말한 것처럼 구현은 거의 Claude Code가 했는데요
돌아보니 이번에도 제가 한 건 대부분 "방향성 제시와 왜 그렇게 해야 하는지에 대한 결정" 이었던 것 같아요.
처음 잡은 목표는 다섯 가지였어요.
중간중간 갈림길마다 이 기준으로 정했습니다.

제일 신경 쓴 건 "방해하지 않기" 쪽이었어요.
바탕화면에 항상 떠 있는 앱이라, 조금만 거슬려도 바로 꺼버리게 되거든요.
그래서 클릭을 통과시키고, 이미 보고 있는 건 안 알려주고, 방해 금지 모드까지 넣었어요.
알림 하나 받자고 만든 앱이 펫이 되고 게임까지 됐는데
덕분에 터미널을 왔다 갔다 하는 일은 확실히 줄었습니다.
혹시 써보시고 재밌으면 스타 하나 눌러주세요 ⭐
🐾 GitHub : https://github.com/ESeungJun/claude-bouncer
💼 LinkedIn : https://www.linkedin.com/in/승준-이-53707a328/

알림 카드에서 작업 완료, 권한 요청, 입력 대기를 구분해 주는 게 제일 실용적인 부분 같아요. 터미널을 여러 개 띄워 두면 권한 요청에서 멈춰 있는 세션을 놓치기 쉬운데, 카드를 누르면 해당 탭으로 바로 이동하는 것까지 있어서 좋네요. 혹시 세션이 여러 개 동시에 끝나면 카드가 쌓이는 방식인지, 하나씩 순서대로 보여 주는 방식인지 궁금해요.