Privacidade do Flit: confira você mesmo
Afirmação: seu áudio e seu texto nunca saem do seu Mac. Nunca.
O Flit grava sua voz, transcreve e faz a limpeza do texto inteiramente no dispositivo:
| Etapa | O que roda | Onde |
|---|---|---|
| Fala para texto | Os próprios modelos de fala locais do Flit, ou o reconhecedor integrado da Apple | Seu Mac |
| Formatação inteligente | Um modelo de formatação local, ou o modelo da Apple no dispositivo quando o macOS oferece um | Seu Mac |
| Histórico | Um banco de dados local, mais arquivos de áudio só se você ativar | ~/Library/Application Support/Flit |
Não há conta, nem telemetria, nem análises, nem ferramenta de relatório de falhas, e nenhum servidor jamais vê sua voz ou seu texto. O design mantém toda a atividade de rede em três pontos bem definidos, listados por completo abaixo.
As únicas conexões de rede que o Flit faz
- Downloads de modelos que você mesmo inicia: ao clicar em Baixar em Ajustes, o Flit busca
os arquivos do modelo em
huggingface.co. Os recursos de fala e de formatação da própria Apple são baixados pelo próprio macOS. - Ativação da licença, uma vez por Mac: quando você cola sua chave de licença, o Flit envia
a
apps.fore.studioa chave, um hash SHA-256 do UUID de plataforma deste Mac (nunca o UUID em si), o nome do Mac e as versões do macOS e do Flit, e recebe um arquivo de licença assinado, que depois verifica offline a cada abertura. Enquanto a licença está ativa, ele reconfirma a chave e o hash no máximo uma vez a cada 7 dias e baixa uma lista assinada de licenças revogadas. Nada do que você dita faz parte disso, e o período de teste não faz nenhuma conexão de rede. - A busca por atualizações: na primeira abertura, o Sparkle pergunta se o Flit pode buscar
atualizações. Se você disser que sim, ele baixa periodicamente
statics.fore.studio/flit/updates/appcast.xml, enviando a versão instalada e a versão do macOS para escolher a compilação certa. Se você disser que não, ele nunca verifica, a menos que você mesmo escolha Buscar Atualizações… no menu.
Essa é a lista completa.
Modo Desenvolvedor
Quando você dita num editor de código ou num terminal, o Flit lê o caminho do documento da janela em foco pela API de Acessibilidade do macOS (a mesma permissão que ele já usa para colar), encontra a raiz do projeto e indexa os nomes de arquivos e pastas do projeto para que os identificadores falados sejam escritos corretamente. O índice fica só na memória: nunca é gravado no disco, nunca entra no histórico e nunca é enviado a lugar nenhum. O conteúdo dos arquivos não é lido. Desative em Ajustes → Formatação.
Formatação com contexto
Desativada por padrão. Quando você a ativa (Ajustes → Formatação), o Flit lê, pela API de Acessibilidade do macOS, o campo de texto em foco do app em que você dita e o texto visível na janela dele. É a mesma permissão que ele já usa para colar. Assim, o formatador pode escrever nomes do jeito que a conversa os escreve e continuar com naturalidade uma frase inacabada. Essa captura fica na memória durante exatamente um ditado: ela alimenta só o modelo de formatação local, nunca é gravada no disco nem no histórico e nunca é enviada a lugar nenhum. Em campos de senha ou campos seguros, a captura é cancelada por completo.
Editar a seleção por voz
Este recurso também lê a tela, então entra na mesma lista. Desativado por padrão. Quando você ativa “Editar a seleção por voz” (Ajustes → Formatação), um ditado que está sobre uma seleção e soa como uma instrução (“make this shorter”) envia esse texto selecionado ao modelo de formatação local para que ele seja reescrito no lugar. A seleção é lida pela API de Acessibilidade, usada para essa única reescrita e descartada. Ela nunca é gravada no disco nem no histórico e nunca sai do Mac. Nada é lido quando não há seleção, e um ditado que não parece uma instrução é inserido como texto comum. Desative em Ajustes → Formatação.
Os dois vêm desativados quando você instala o Flit, então, de fábrica, ele não lê nenhum texto da sua tela. A única coisa que ele observa, em qualquer caso, é o papel do elemento em foco, o suficiente para distinguir uma caixa de busca de um documento, de modo que uma busca ditada chegue como termos de busca e não como uma frase. Essa verificação não lê nenhum texto, e não há ajuste para desativar porque não há nada a recusar.
Aprender com suas correções
Alguns segundos depois de colar, e só se você ainda estiver no mesmo app, o Flit lê o campo em foco uma vez pela API de Acessibilidade e o compara com o que inseriu. A comparação acontece na memória, e o texto do campo é descartado imediatamente. O que fica guardado, localmente: correções de palavras repetidas (a grafia escrita e a corrigida) e contadores de estilo por app (por exemplo, “tirou o ponto final no WhatsApp, 3 vezes”: um ID de pacote, uma categoria e um número; nunca o seu texto). As duas coisas só viram sugestões em Ajustes, com os botões Adicionar/Dispensar. O Flit nunca muda seu dicionário nem os estilos dos seus apps por conta própria. Campos de senha ou campos seguros nunca podem ser lidos dessa forma.
Confira com um monitor de rede
Usando o Little Snitch, o LuLu ou o Proxyman:
- Instale seus modelos primeiro (Ajustes → Modelos / Formatação → Baixar).
- Inicie o monitor de rede e filtre pelo processo
Flit. - Dite qualquer coisa, em qualquer lugar, o quanto quiser.
- Conexões observadas durante o ditado: nenhuma. Ao longo de um dia inteiro, você verá
no máximo as três coisas acima: os downloads em que você clicou, uma confirmação de licença
para
apps.fore.studio(no máximo uma vez por semana, nunca durante um ditado) e a busca por atualizações emstatics.fore.studio, se você permitiu.
O Flit.app também pode ser inspecionado de forma estática: o binário não vincula nenhum SDK de análises
(otool -L Flit.app/Contents/MacOS/Flit mostra os frameworks de sistema da Apple mais o
Sparkle, o atualizador de código aberto).
Dados locais que você controla
- Histórico de transcrições: opcional, com limite, e você apaga tudo em Ajustes → Histórico.
- Histórico de áudio: desativado por padrão; só é ativado se você escolher, com regras de exclusão automática.
- Higiene da área de transferência: o texto ditado é marcado como transitório
(
org.nspasteboard.TransientType), para que os gerenciadores de área de transferência não o arquivem.
Tem perguntas ou encontrou uma falha nesta afirmação? Abra uma issue. Tratamos relatos de privacidade como P0.