"네 목소리가 어디로 가는지는 네가 내린 결정이어야지, 네트워크가 대신 내린 결정이면 안 돼."
세 모드, 하나의 선택
Firekeeper 의 정리 브레인은 세 곳에 살 수 있고, 유저가 어느 걸 골라 — 숨은 폴백 체인이 아니라 설정이야:
- Pippa Full — This Mac: localhost 의 cwkPippa. 풀 볼트, 소울, 브레인 라우팅.
- Pippa Full — Tailscale: 같은 풀 Pippa, 설정된 호스트로 가는 사설 Tailscale 링크로 도달. 같은 능력, 원격 전송, 인증-게이트.
- Local Mini — Ollama: 컴팩트한 Pippa-맛 정리 프로토콜을 돌리는 작은 로컬 모델. cwkPippa 아예 없음.
"This Mac" 과 "Tailscale" 은 같은 능력의 두 전송 이고; "Local Mini" 는 다른, 가벼운 능력이야. 유저가 트레이드오프를 명시적으로 골라.
왜 자동 폴백이 아냐?
이걸 조용한 체인으로 만들고 싶어져: This Mac 시도, 그다음 Tailscale, 그다음 Local Mini, 그다음 결정론적. 그 조용한 체인이 프라이버시 버그야. 오프라인-전용 자세를 일부러 고른 유저는 localhost 가 잠깐 도달 불가라고 오디오가 조용히 원격 호스트로 라우팅되면 절대 안 돼. 풀-Pippa 품질을 기대한 유저는 조용히 약한 로컬 결과를 받으면 절대 안 돼. 그래서 프로바이더 선택이 요청 전송 전에, 고른 모드에 맞춰 일어나 — 그리고 고른 타깃이 실패하면, 앱이 유저 등 뒤에서 하나 고르는 대신 대안을 제안 해(재시도, 다른 Full 타깃으로 전환, Local Mini 로 내림, 원시 삽입).
조용한 폴백 (나쁨): 오프라인 유저 -> localhost 다운 -> 조용히 Tailscale 침 # 누수!
명시적 선택 (좋음): 오프라인 유저 -> localhost 다운 -> "재시도? / Local Mini? / 원시?"
무는 디테일 둘
원격 모드는 주의가 필요해. 연결 모드 변경은 원격 인증/세션 상태를 무효화 해 — Tailscale PIN 세션을 This-Mac 요청으로 못 끌고 가. 그리고 모든 원격 호출은 유저가-취소-가능한 제한 시간이 필요해: 음성 캡처가 멈춘 원격 경로를 기다리며 절대 매달리면 안 돼. 쓴 경험에서 온 규칙 하나 더: 원격 호스트를 절대 하드코딩하지 마. Firekeeper 는 설정 가능한 호스트 필드를 소유해; 한 기계 주소를 박으면 이식 가능한 앱을 한-Mac 앱으로 바꿔.