피드로 돌아가기
Dev.toInfrastructure
원문 읽기
FastAPI 기반 AI 워크스페이스의 pywebview 활용 macOS 네이티브 앱 패키징
I built a self-hosted AI workspace for macOS — meet Odysee
AI 요약
Context
웹 브라우저 기반의 FastAPI 애플리케이션을 독자적인 macOS 앱 형태로 배포하여 사용자 접근성을 높이려는 요구 발생. 기존 PWA 형태의 한계를 넘어 시스템 트레이 및 독(Dock)에서 실행 가능한 독립적 실행 환경 구축 필요.
Technical Solution
- pywebview를 활용한 브라우저 크롬 제거 및 네이티브 윈도우 래핑 구조 설계
- uvicorn 백엔드와 ChromaDB 벡터 스토어를 동시에 제어하는 Shell Launcher 기반의 프로세스 생명주기 관리
- venv 환경을 직접 구동하는 .app 번들 설계를 통한 바이너리 크기 최소화 및 종속성 관리 효율화
- FastAPI 백엔드와 Vanilla JS 프론트엔드 간의 단순 HTTP 통신 구조를 유지하며 빌드 단계 제거
- 런처 스크립트 내 Cleanup Trap 구현을 통한 종료 시 자식 프로세스의 완전한 자원 회수 보장
실천 포인트
- 웹 기반 도구를 데스크톱 앱으로 전환 시 pywebview를 통한 가벼운 래퍼 검토 - 셸 스크립트 기반 런처 설계 시 SIGINT/SIGTERM 트랩을 통한 백그라운드 프로세스 정지 로직 필수 포함 - 복잡한 프론트엔드 빌드 도구 없이 Vanilla JS를 활용하여 배포 파이프라인 단순화 가능성 확인