"네 목소리가 어디로 가는지는 네가 내린 결정이어야지, 네트워크가 대신 내린 결정이면 안 돼."
세 모드, 하나의 선택
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 전용 앱으로 쪼그라들거든.