Skip to content

f-lab-edu/termcat

Repository files navigation

termcat 🐱

AI 터미널 세션이 실행되면 고양이가 돌아간다.


개요

터미널에서 AI 세션(Claude, ChatGPT 등)이 실행되는 동안, 시스템 트레이(메뉴바)에 회전하는 고양이 애니메이션을 표시하는 데스크톱 앱. AI 터미널 세션의 토큰 출력 속도를 고양이 회전 속도로 표현한다.


동작 원리

사용자 터미널
    │
    ▼
termcat PTY 래퍼  ──▶  AI CLI (claude / chatgpt / gemini ...)
    │                      │
    │   ◀── 스트리밍 출력 ──┘
    │
 글자/초 측정
 (슬라이딩 윈도우)
    │
    ▼
회전 속도 결정 ──▶  시스템 트레이 고양이 애니메이션
  • termcat claude 처럼 래퍼 형태로 AI CLI를 실행
  • node-pty로 PTY를 가로채 초당 출력 문자 수(chars/sec)를 측정
  • 슬라이딩 윈도우로 스무딩하여 회전 속도에 반영
  • LLM이 토큰을 생성할수록 터미널 출력이 빨라지므로, chars/sec ≈ 토큰 속도
  • 어떤 AI CLI든 별도 API 연동 없이 동작
상태 고양이
세션 없음 정지 (idle)
대기 중 (입력 기다리는 중) 느리게 회전
토큰 생성 중 빠르게 회전
도구 실행 / 파일 쓰기 중 중간 속도

기술 스택

영역 기술
언어 TypeScript
프레임워크 Electron
PTY 인터셉터 node-pty
상태 관리 Zustand
빌드 Vite + electron-builder
UI React (Electron renderer)
스타일링 vanilla-extract

기능 목록

🔴 Must (필수)

  • termcat <command> 래퍼 CLI — PTY로 AI 세션 실행 및 출력 가로채기
  • 슬라이딩 윈도우 기반 chars/sec 측정 및 속도 단계 분류
  • 세션 활성 시 트레이 아이콘 고양이 회전 애니메이션 (픽셀 아트 스프라이트)
  • 토큰 속도에 따른 회전 속도 변화 (slow / mid / fast 3단계)
  • 세션 종료 시 idle 상태로 복귀
  • macOS 시스템 트레이(메뉴바) 통합
  • 앱 자동 시작 (로그인 시)
  • electron-builder로 .dmg 패키지 빌드 및 배포
  • 첫 실행 시 온보딩 — shell alias(alias claude="termcat claude") 등록 안내 및 자동 적용

🟡 Should (중간)

  • 다중 세션 지원 — termcat을 여러 번 실행하면 메뉴바에 고양이 여러 마리 표시, 각자 독립적인 속도로 회전
  • 감지할 AI 프로세스 목록 직접 설정 (래퍼 없이 ps-list 폴링 fallback)
  • 속도 단계 임계값 커스터마이즈
  • 여러 고양이 색상 변경
  • 트레이 클릭 시 세션 상태 요약 팝업 (현재 속도, 세션 지속 시간 등)

🟢 Could (시간 나면)

  • 고양이 스킨 변경
  • 고양이 외 다른 캐릭터 애니메이션
  • 세션 히스토리 및 사용 통계
  • AI CLI별 다른 애니메이션 (claude, chatgpt, gemini...)

About

AI 터미널 세션의 토큰 속도를 메뉴바 고양이 회전으로 표현하는 macOS 데스크톱 앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors