Flit 개인정보 보호: 직접 확인하세요
주장: 사용자의 오디오와 텍스트는 Mac을 떠나지 않습니다. 어떤 경우에도.
Flit은 음성을 녹음하고, 전사하고, 정리하는 작업을 전부 기기 내에서 수행합니다:
| 단계 | 실행되는 것 | 위치 |
|---|---|---|
| 음성 텍스트 변환 | Flit 자체의 로컬 음성 모델 또는 Apple의 내장 인식기 | 사용자의 Mac |
| 스마트 서식 | 로컬 서식 모델 또는 macOS가 제공하는 경우 Apple의 기기 내 모델 | 사용자의 Mac |
| 기록 | 로컬 데이터베이스, 그리고 직접 켠 경우에만 오디오 파일 | ~/Library/Application Support/Flit |
계정, 원격 측정, 분석 도구, 충돌 리포터가 없으며, 어떤 서버도 사용자의 음성이나 텍스트를 보지 않습니다. 모든 네트워크 통신은 설계상 명확하게 정의된 세 곳으로 한정되며, 아래에 빠짐없이 나열되어 있습니다.
Flit이 하는 네트워크 연결은 이것뿐입니다
- 사용자가 직접 시작한 모델 다운로드: 설정에서 다운로드를 클릭하면
huggingface.co에서 모델 파일을 가져옵니다. Apple 자체의 음성 및 서식 에셋은 macOS가 직접 가져옵니다. - 라이선스 활성화, Mac당 한 번: 라이선스 키를 붙여넣으면 Flit은
apps.fore.studio에 키, 이 Mac의 플랫폼 UUID의 SHA-256 해시(UUID 자체는 절대 보내지 않음), Mac의 이름, macOS 및 Flit 버전을 보내고, 서명된 라이선스 파일을 받습니다. 이 파일은 이후 실행할 때마다 오프라인에서 검증됩니다. 라이선스가 있는 동안에는 최대 7일에 한 번 키와 해시를 다시 확인하고, 취소된 라이선스의 서명된 목록을 가져옵니다. 받아쓰기한 내용은 이 중 어디에도 포함되지 않으며, 체험 기간에는 네트워크 연결을 전혀 하지 않습니다. - 업데이트 확인: Sparkle은 처음 실행할 때 Flit이 업데이트를 확인해도 되는지 묻습니다. 허용하면
statics.fore.studio/flit/updates/appcast.xml을 주기적으로 가져오며, 알맞은 빌드를 고를 수 있도록 설치된 버전과 macOS 버전을 보냅니다. 거부하면 사용자가 직접 메뉴에서 *업데이트 확인…*을 선택하지 않는 한 절대 확인하지 않습니다.
이것이 전체 목록입니다.
개발자 모드
코드 편집기나 터미널에 받아쓰기하면 Flit은 macOS 손쉬운 사용 API(붙여넣기에 이미 사용하는 것과 같은 권한)를 통해 포커스된 윈도우의 문서 경로를 읽고, 프로젝트 루트를 찾은 다음, 말한 식별자의 철자가 올바르게 표기되도록 프로젝트의 파일 및 디렉터리 이름을 색인합니다. 색인은 메모리에만 존재합니다. 디스크에 저장되지 않고, 기록에 포함되지 않으며, 어디로도 전송되지 않습니다. 파일의 내용은 읽지 않습니다. 끄려면 설정 → 서식을 사용하세요.
맥락 인식 서식
기본적으로 꺼져 있습니다. 켜면(설정 → 서식) Flit은 macOS 손쉬운 사용 API를 통해 받아쓰기 대상의 포커스된 텍스트 필드와 해당 윈도우에 보이는 텍스트를 읽습니다. 이는 붙여넣기에 이미 사용하는 것과 같은 권한입니다. 이를 통해 서식 기능이 대화에 쓰인 표기대로 이름을 쓰고, 끝나지 않은 문장을 자연스럽게 이어 갈 수 있습니다. 이 캡처는 정확히 한 번의 받아쓰기 동안만 메모리에 머뭅니다. 로컬 서식 모델에만 전달되고, 디스크나 기록에 저장되지 않으며, 어디로도 전송되지 않습니다. 암호/보안 필드에서는 캡처가 완전히 중단됩니다.
음성으로 선택 항목 편집
이 기능도 화면을 읽으므로 같은 목록에 포함됩니다. 기본적으로 꺼져 있습니다. “음성으로 선택 항목 편집”을 켜면(설정 → 서식), 선택 항목 위에서 이루어지고 동시에 “make this shorter”처럼 지시로 들리는 받아쓰기는 해당 선택된 텍스트를 로컬 서식 모델로 보내 그 자리에서 다시 쓰게 합니다. 선택 항목은 손쉬운 사용 API를 통해 읽히고, 그 한 번의 다시 쓰기에 사용된 뒤 폐기됩니다. 디스크나 기록에 저장되지 않으며 Mac을 떠나지 않습니다. 선택 항목이 없으면 아무것도 읽지 않으며, 지시처럼 들리지 않는 받아쓰기는 대신 일반 텍스트로 입력됩니다. 끄려면 설정 → 서식을 사용하세요.
Flit을 설치한 시점에는 두 기능 모두 꺼져 있으므로, 처음 상태에서는 화면의 텍스트를 전혀 읽지 않습니다. 어느 경우든 Flit이 확인하는 것은 포커스된 요소의 역할뿐입니다. 이는 검색창과 문서를 구별하기에 충분한 정보로, 받아쓰기한 검색어가 문장이 아니라 검색어로 입력되도록 합니다. 이 확인은 텍스트를 읽지 않으며, 거부할 대상이 없으므로 끌 수 있는 설정도 없습니다.
수정 내용에서 학습
붙여넣기 몇 초 후, 그리고 사용자가 여전히 같은 앱에 있는 경우에만, Flit은 손쉬운 사용 API를 통해 포커스된 필드를 한 번 읽고 입력한 내용과 비교합니다. 비교는 메모리에서 이루어지며 필드 텍스트는 즉시 폐기됩니다. 로컬에 보관되는 것은 반복된 단어 수정(입력된 철자와 수정된 철자)과 앱별 스타일 카운터(예: “WhatsApp에서 끝의 마침표 삭제, 3회”: 번들 ID, 카테고리, 숫자일 뿐이며 사용자의 텍스트는 절대 포함되지 않음)입니다. 두 가지 모두 설정에서 추가/닫기 버튼이 있는 제안이 될 뿐입니다. Flit은 절대 사용자의 사전이나 앱별 스타일을 스스로 변경하지 않습니다. 암호/보안 필드는 이 방식으로 절대 읽을 수 없습니다.
네트워크 모니터로 확인하기
Little Snitch, LuLu 또는 Proxyman을 사용하세요:
- 먼저 모델을 설치하세요(설정 → 모델 / 서식 → 다운로드).
- 네트워크 모니터를 시작하고 프로세스
Flit으로 필터링하세요. - 무엇이든, 어디서든, 원하는 만큼 받아쓰기하세요.
- 받아쓰기 중 관찰되는 연결: 없음. 하루 전체를 보아도 보이는 것은 최대 위의 세 가지뿐입니다: 직접 클릭한 다운로드,
apps.fore.studio로의 라이선스 확인 한 번(많아야 일주일에 한 번, 받아쓰기 중에는 절대 없음), 그리고 허용한 경우statics.fore.studio로의 업데이트 확인.
Flit.app은 정적으로도 검사할 수 있습니다. 바이너리는 어떤 분석 SDK도 링크하지 않습니다(otool -L Flit.app/Contents/MacOS/Flit을 실행하면 Apple의 시스템 프레임워크와 오픈 소스 업데이터인 Sparkle이 표시됩니다).
사용자가 관리하는 로컬 데이터
- 전사 기록: 선택 사항이며, 상한이 있고, 설정 → 기록에서 전체 삭제할 수 있습니다.
- 오디오 기록: 기본적으로 꺼져 있으며, 명시적으로 켜야 하고 자동 삭제 정책을 사용할 수 있습니다.
- 클립보드 위생: 받아쓰기한 텍스트는 일시적인 항목(
org.nspasteboard.TransientType)으로 표시되므로 클립보드 관리자가 보관하지 않습니다.
질문이 있거나 이 주장의 허점을 발견했다면 이슈를 등록하세요. 개인정보 보호 관련 보고는 P0으로 처리합니다.