【Aviso importante】Tras realizar ingeniería inversa a la aplicación de entrada de voz «Typeless», he encontrado riesgos de privacidad bastante graves, por lo que lo comparto aquí.
■ Primero, la conclusión
Typeless afirma “On-device history” y “Zero data retention”, pero en realidad todos los datos de audio se envían a servidores de AWS (Ohio, EE. UU.) para su procesamiento. Localmente no hay ningún modelo de reconocimiento de voz.
Si fuera solo eso, no sería más que un “servicio STT en la nube” común. El problema es que el alcance de los datos no relacionados con el audio que recopila es muy amplio.
■ Qué análisis se realizaron
En macOS, hice análisis binario, análisis de comunicaciones de red, análisis de la BD local y análisis de cadenas en bibliotecas nativas de Typeless v0.9.3.
■ Hechos confirmados
- Procesamiento de audio 100% en la nube
Dentro de la app no hay modelos STT como Whisper. El audio, tras comprimirse a Opus, se envía en tiempo real a un servidor AWS us-east-2 mediante WebSocket (wss://api.typeless.com/ws/rt_voice_flow).
http://api.typeless.com → http://prod-typeless-lb-565501648.us-east-2.elb.amazonaws.com
La política de privacidad oficial también indica “processed in real time on our cloud servers”, así que no es una falsedad total, pero a nivel de marketing la expresión “On-device” se limita a “el historial se almacena localmente”, lo cual es muy fácil de malinterpretar.
- Además del audio, también recopila datos de forma amplia
Mediante la base de datos SQLite local y el análisis de bibliotecas nativas, se confirmó la recopilación de los siguientes datos:
・ URL completa del sitio que se está navegando (también se registran Gmail, Google Docs, etc.)
・ Nombre de la aplicación en foco, título de la ventana
・ Texto en pantalla (función collectVisibleTexts que lo recopila recursivamente mediante la API de accesibilidad)
・ Lectura/escritura del portapapeles (puede manejar TransientType de gestores de contraseñas)
・ Monitorización a nivel de sistema de entradas de teclado mediante CGEventTap
・ Información de elementos del DOM del navegador (compatible con Safari, Chrome, Edge, Firefox, Brave)
・ Contenido de texto editado por el usuario (TrackEditTextService → sendTrackResultToServer)
-
La BD local guarda información personal en texto plano
Entypeless.db, el texto resultante del reconocimiento de voz, las URL navegadas y la información de aplicaciones se guardan en texto plano. Aunque afirman “Zero data retention”, en local se conserva todo. Los archivos de audio (.ogg) tampoco se eliminan y quedan residuales. -
Solicita permisos excesivos
Como herramienta de entrada de voz, además del micrófono solicita grabación de pantalla, cámara, Bluetooth y permisos de accesibilidad, e incluye función de captura de pantalla. -
Transparencia de la empresa casi nula
・ Los términos y la política de privacidad no indican el nombre de la entidad jurídica
・ La ubicación solo figura como “Condado de San Francisco, California” (jurisdicción en los términos)
・ WHOIS oculto (GoDaddy + Cloudflare)
・ No hay información de auditorías de seguridad como SOC2, ISO27001, etc.
・ El único contacto eshello@typeless.com
■ Evidencia técnica (reproducible)
Puedes verificarlo tú mismo con los siguientes comandos:
# Destino de las comunicaciones de red
nslookup http://api.typeless.com
# URL de la API dentro de app.asar
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "http://api.typeless.com"
# Protocolo de comunicación WebSocket
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "rt_voice_flow"
# Biblioteca nativa de monitorización de teclado
strings /Applications/Typeless.app/Contents/Resources/lib/keyboard-helper/build/libKeyboardHelper.dylib | grep -i "key pressed"
# Recopilación de texto en pantalla
strings /Applications/Typeless.app/Contents/Resources/lib/context-helper/build/libContextHelper.dylib | grep -i "collectVisibleTexts"
# Contenido de la BD local
sqlite3 ~/Library/Application\ Support/Typeless/typeless.db ".schema history"
■ Dónde está el problema
CGEventTap (monitorización del teclado) + API de accesibilidad (recopilación de texto en pantalla) + acceso al portapapeles. Esta combinación, técnicamente, tiene una capacidad equivalente a la de un keylogger.
Y estás concediendo esos permisos a un servicio cuyo operador no está claro.
Para mejorar la precisión de la entrada por voz, obtener contexto (información de la app/campo de entrada actual) es en sí un diseño razonable. Pero cuando esos datos se envían a la nube, la confiabilidad del operador y su sistema de seguridad se vuelven cruciales. Si se puede confiar en una empresa que ni siquiera publica el nombre de su entidad jurídica, queda a tu criterio.
■ Alternativas
Existen herramientas de entrada por voz que funcionan completamente en local:
・ Whisper.cpp / MLX Whisper (código abierto, todo local, gratis)
・ Entrada de voz integrada de macOS (en Apple Silicon el procesamiento es en el dispositivo)
・ Superwhisper (basado en Whisper, orientado a Mac, pero aun así conviene verificarlo por cuenta propia)
■ Resumen
・ El reconocimiento de voz de Typeless se procesa 100% en la nube (sin modelo local)
・ Además del audio, cuenta con la base técnica para recopilar texto en pantalla, URL y entradas de teclado
・ Operador opaco (no publica nombre de entidad jurídica ni ubicación)
・ Sin evidencia de auditoría de seguridad
Quienes lo estén usando, decidan por su cuenta tras comprender los riesgos. Como mínimo, se recomienda usar herramientas como Little Snitch para monitorizar las comunicaciones de red.