안녕하세요. 의과대학 재학생이고, 2개월 전부터 바이브코딩 독학하면서 macOS 메뉴바 앱 하나 만들었습니다. 오늘 공개합니다!

MiniAI - 무엇을 하는 앱인지

어디서든 텍스트 선택하고 지정한 단축키 누르면, 메뉴바에서 작은 창이 떠서 AI가 설명해줍니다. 브라우저로 건너가서 구글링하고 돌아오는 과정이 사라지는 게 핵심입니다.

원래는 논문 읽을 때 모르는 용어 찾기 귀찮아서 만들었는데, 만들고 보니 영어 메일 쓸 때, 코드 볼 때 등 여러 상황에서 쓰게 되더라구요.

기술 스택

  • UI: NSPanel + SwiftUI (메뉴바 앱의 floating window)
  • AI 응답: SSE 스트리밍으로 실시간 타이핑 효과
  • 백엔드: Supabase Edge Function으로 API 프록시 (클라이언트에 API 키 박지 않기 위해)
  • Rate limiting: PostgreSQL 기반 유저별 제한
  • 배포: Developer ID 서명 + 공증(notarization) 완료

개발하면서 가장 오래 붙잡은 부분

  1. 전역 텍스트 선택 감지 (Accessibility API 권한 처리)
  2. API 키 보안 (초기에 클라이언트에 하드코딩했다가 나중에 발견하고 갈아엎음)
  3. 공증 프로세스 (첫 경험이라 2일 날림)

특히 3번은 macOS 앱 배포해보신 분들은 공감하실 것 같습니다. 문서 따라 해도 한 번에 안 되는 단계가 여러 곳 있었습니다.

지금 상태

  • 베타 공개, 무료
  • 다운로드는 홈페이지에서

피드백 환영합니다

  • 단축키 UX가 자연스러운지
  • 클린 인스톨 시 문제 없는지
  • 아키텍처에 개선점 있는지
  • 비슷한 앱 개발해보신 분 조언

아키텍처 개선점이나 macOS 공증 삽질 경험 공유 환영합니다.

그리고 한 가지 더, 개발자로서 본업 따로 있고 사이드로 제품 만드시는 분들,
"이거 더 파볼까" vs "경험 삼아 접고 다음으로" 의사결정 어떻게 하시는지 궁금합니다.

안녕하세요, 몇가지 의견 드립니다 !

  • 맥 유저중 alfred / raycast 등의 툴을 쓰는 분들이 많은 것으로 아는데, 이 앱들의 기본 단축키가 opt + space입니다. 기본 단축키는 다른 단축키가 좋지 않을까 싶기도 합니다
  • 서명/공증이 안된 것 같습니다
(1) codesign  
$ codesign -dv --verbose=4 MiniAi.app  
Executable=/Users/.../Downloads/MiniAi.app/Contents/MacOS/MiniAi  
Identifier=com.miniai.app  
Format=app bundle with Mach-O thin (arm64)  
CodeDirectory v=20400 size=8551 flags=0x2(adhoc) hashes=257+7 location=embedded  
VersionPlatform=1  
VersionMin=917504  
VersionSDK=1704960  
Hash type=sha256 size=32  
CandidateCDHash sha256=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd  
CandidateCDHashFull sha256=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd94cdca992cd3f61e8e6554a3  
Hash choices=sha256  
CMSDigest=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd94cdca992cd3f61e8e6554a3  
CMSDigestType=2  
Executable Segment base=0  
Executable Segment limit=1556480  
Executable Segment flags=0x1  
Page size=16384  
CDHash=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd  
Signature=adhoc  
Info.plist entries=24  
TeamIdentifier=not set  
Sealed Resources version=2 rules=13 files=7  
Internal requirements count=0 size=12  
  
(2) gatekeeper  
$ spctl -a -vvv -t execute MiniAi.app  
MiniAi.app: rejected  
  
(3) Notary staple  
$ xcrun stapler validate MiniAi.dmg  
Processing: /Users/.../Downloads/MiniAi.dmg  
MiniAi.dmg does not have a ticket stapled to it.  
  
$ xcrun stapler validate MiniAi.app  
Processing: /Users/.../Downloads/MiniAi.app  
MiniAi.app does not have a ticket stapled to it.  
  • dmg 파일 배포보다는, App Store / homebrew 방식으로 설치할 수 있으면 좋겠습니다

와 이렇게 상세하게 봐주시다니 정말 감사합니다 🙏

  1. 단축키: 맞습니다. Alfred/Raycast 유저분들한테 ⌥Space 충돌 이슈가
    가장 많이 들어오고 있어요. 커스텀 단축키 설정 기능은 인지하고 있고,
    개선 우선순위에 넣어두겠습니다!

  2. 서명/공증: 네, 현재 adhoc 서명 상태입니다.
    아직 개발 초기이다 보니 공증 비용이 조금 부담되어서 보류하고 있었습니다 😅
    체크해주셔서 감사합니다!

  3. 배포 방식: App Store나 Homebrew Cask 배포도 고려하고 있습니다.
    현재는 빠른 배포를 위해 DMG로 먼저 나갔는데,
    말씀하신 방향이 맞다고 생각합니다,,

직접 codesign까지 확인해주신 거 보고 감동받았습니다.
제품에 애정을 가져주셔서 너무나도 감사합니다!
불편한 점 또 생기시면 꼭 말씀해주세요 응원이됩니다 😄

특별히 프로덕션 레벨로 판매하거나 그러신게 아니라면 깃헙에 오픈소스로 공개하셔서 피드백 받으셔도 괜찮을거 같은데요?

소중한 의견 감사합니다!

관련 비즈니스가 처음이다 보니 경험삼아 진행했었는데, 오픈소스로 많은 분들이 직접 사용하실수 있도록 배포하는 것도 좋은 아이디어인 것 같습니다 😁

만약 오픈소스로 내놓는다면 꼭 피드백 해주셔야해요~~ :)

오픈소스라고 판매 못하시는건 아니구요. 투트랙으로 하시는 앱들도 꽤 있어요. 오픈소스는 일반인보단 주로 프로젝트에 관심있는 다른 개발자들이랑 함께 만드는 개념이구요. 훔쳐갈까 고민이시면 라이선스 확실히 걸어두심 되긴합니다만... 대AI시대라 클린룸 프로젝트들이 판치는데 의미가 있겠나 싶긴합니다 오픈소스로 돌려주시면 피드백만 해드리겠습니까? ㅎㅎ

ㅋㅋㅌㅋㅎㅋㅋㅌㅋ 개발자 선배님의 조언 감사합니다
요즘은 세상이 너무 빨리 바뀌어서 적응하기가 너무 어렵더라구요!
많은 정보 주셔서 감사하고 앞으로도 관심 많이 가져주시면 감사하겠습니다 😁

어떤 ai 모델일까요??

클로드 API 사용한다고 나와 있습니다.

본문에 버젓이 나와 있는데 제가 질문한건 아닌가 식겁하면서 찾아봤습니다.

요약글, 원글, 사이트, 프로그램 설치해서 내용 한참 찾아봐도 못찾다가 개인정보처리방침에 적혀 있었네요.
일반적으로 기술 스택을 확인하려고 개인정보처리방침까지 뒤지지는 않죠.

다음부턴 어디 나와있는지도 말씀해주시면 감사하겠습니다.

소중한 피드백 정말 감사합니다!

모델 관련 언급을 작성할까 하다 일반인분들은 api라는 개념을 잘 모르실것 같아 언급을 안했었습니다

관련 궁금증이 있으신 분들이 있으니 제가 수정해놓도록 하겠습니다

혹시 앱 사용해보셨나요? 어떠셨는지 궁금하네요 :)

앗 jhk0530분께 말씀드렸습니다

클로드 api사용한다고 어디 나와 있을까요?
본문이랑 웹 사이트 가서 봤는데 안보여서요

안녕하세요! 제작자입니다.
Claude Sonnet 4 모델 사용중입니다!

추후 BYOK 혹은 다른 모델들도 직접 선택할 수 있는 선택지를 구현할 예정입니다

관심가져주셔서 감사합니다 :)

답변 감사합니다!
deepL 팝업 번역 기능을 사용하곤 했는데 이걸로 잠깐 써봐야겠어요
차후에 https://www.openresponses.org/ 형식도 지원해서 로컬 llm도 사용할 수 있게 여는 방법도 좋을 것 같아요!

번역 기능 위주로 사용하실 예정이시군요!

향후 모드 선택 기능도 넣어서 조금 더 전문화된 번역 기능 제공할 수 있는 방향으로도 나아갈 계획에 있습니다 :)

외부 API 말고도 로컬 모델로 사용할 수 있는 방법도 제안해주셔서 감사합니다! 향후 구현 계획에 추가시키겠습니다

소중한 피드백 주셔서 감사드리고, 혹시 불편한 점 생기시면 꼭 알려주세요 😄

일주일동안 써 봤는데 사용경험이 좋아서 계속 사용하고 있습니다 감사합니다.
다른분들처럼 단축키 배포방식 문제만 해결되면 더 좋을 것 같아요! 기대됩니당