Dialoga · Seguridad y privacidad

Cómo se queda todo en tu Mac, y cómo comprobarlo.

Cada afirmación de la portada apunta aquí: al archivo que la comprueba, al test que la vigila o al comando que puedes correr tú. Donde no hay medición publicada, esta página no la inventa.

El mapa · qué sale y qué no sale de tu Mac

Cero flechas hacia afuera al transcribir. Una sola hacia adentro, cuando tú la pides.

El mismo diagrama que dibujan las páginas de VPN y de cifrado, con la diferencia de que aquí no hay servidor en medio: el audio, el texto y la base no cruzan el borde de tu equipo.

Flujo de datos de Dialoga: micrófono y audio del sistema entran, Whisper transcribe en el chip, SQLite guarda en el disco, y solo sale lo que exportas; la única conexión a internet es la descarga del modeloTu MacMicrófonolo que dices túAudio del sistemaZoom, Meet, TeamsWhisper en tu chipwhisper.cpp · Metalmodelos/1.6 GB, en tu discoSQLite · SQLCipheren tu discoInternethuggingface.coLo que exportas.md .srt .json .vttsolo lo que tú exportasdescarga del modelo · una vez, cuando tú lo pides✕0 bytes al transcribirFlujo de datos de Dialoga: micrófono y audio del sistema entran, Whisper transcribe en el chip, SQLite guarda en el disco, y solo sale lo que exportas; la única conexión a internet es la descarga del modeloTu MacInternet · huggingface.codescarga del modelo · una vez, cuando tú lo pidesMicrófonolo que dices túAudio del sistemaZoom, Meet, TeamsWhisper en tu chipwhisper.cpp · Metal · modelos/ (1.6 GB)SQLite · SQLCipheren tu disco✕0 bytes a internet al transcribirLo que exportassolo tú, cuando tú lo decides
Entra
Tu micrófono (lo que dices tú) y el audio del sistema (lo que dicen ellos en Zoom, Meet o Teams), en dos pistas. Ningún bot entra a la llamada.
Se procesa
Whisper large-v3-turbo corre con whisper.cpp sobre el chip de tu Mac. El resumen, en macOS 26, lo hace el modelo de Apple Intelligence del propio equipo.
Se guarda
En SQLite con búsqueda de texto completo, en tu disco. Con el candado activado, AES-256-GCM para el audio y para cada grabación bloqueada, y SQLCipher para la base si cifras toda la biblioteca.
Sale
Solo lo que tú exportas (.md, .txt, .json, .srt, .vtt), cuando tú lo decides y por el canal que tú elijas.
La única conexión
La descarga del modelo (1.6 GB) desde huggingface.co: una vez, cuando tú la pides desde Ajustes, sin cabeceras de identificación. Al transcribir, 0 bytes.

El protocolo

Cómo se transcribe una reunión sin salir de tu Mac

5 pasos · flujo serial · cada uno utilizable sin el siguiente

  1. 01 Captura · Grabar

    Dos pistas entran; ningún bot se une

    pmtap captura el audio del sistema con Core Audio taps: lo que dicen ellos, aunque uses audífonos. cpal captura el micrófono: lo que dices tú. A Zoom, Meet o Teams no entra ningún bot; a las personas les avisas tú, antes de empezar, y la grabación se ve: en el indicador del micrófono de macOS y en la ventana de la app.

    Ventana «Nueva grabación» de la app grabando: botón Detener, el campo «Esta grabación» con «Demo con PRIME CAR sobre plantillas, con Dahuabe», el reloj en 02:34 y las dos pistas vivas, Tu voz por el micrófono y Audio del sistema por los audífonos
  2. 02 Local · Transcribir

    El audio se vuelve texto sobre el chip de tu Mac

    Whisper large-v3-turbo corre con whisper.cpp sobre Metal, dentro del proceso de la app. Un VAD propio recorta el silencio antes (ADR-001), y el resultado es ~20× tiempo real en un M1 Pro. Puedes desconectar el WiFi: sale igual. En Ajustes › Sobre tu trabajo le dices a Whisper a qué te dedicas y qué nombres usas, y en «Esta grabación» de qué es la llamada: para que PRIME CAR o Dahuabe salgan bien escritos. Si se equivoca, corriges una vez y «Aplicar a las otras N» arregla el resto del transcript.

    Un transcript con tres turnos marcados como Tú y Ellos, cada uno con su minuto
  3. 03 Local · Buscar y resumir

    Búsqueda de texto completo; resumen si tu macOS lo permite

    La base es SQLite con FTS5: buscas una palabra y llegas al minuto exacto. La biblioteca se organiza como en Notas: listas inteligentes (Reuniones, Notas de voz, Con marcadores), carpetas con su recuento y etiquetas; buscas dentro de una carpeta o de una #etiqueta, y arrastras una o varias grabaciones para moverlas. El resumen lo hace el modelo de Apple Intelligence que viene con macOS 26, a través de pmllm, sin red. En macOS 14.4 a 15 no hay resumen: hay transcripción, búsqueda y carpetas.

    La biblioteca de la app con la columna de carpetas: las listas Todas, Reuniones y Notas de voz, las carpetas Clientes (con candado), Notaría y Equipo con su recuento, las etiquetas #pendientes, #plantillas y #primecar, y la lista de grabaciones agrupada por día con su carpeta y sus etiquetas
  4. 04 Cifrado · Proteger

    Transcript y audio cifrados con una clave que solo existe en tu Mac

    Si activas el cifrado en reposo, la base pasa a SQLCipher y cada WAV se cifra en trozos de 1 MiB con AES-256-GCM. La clave de datos es aleatoria y va envuelta con una que Argon2id (19 456 KiB, 2 pasadas) deriva de tu clave de recuperación, y la app arranca en una pantalla de bloqueo que se abre con Touch ID o la contraseña de la Mac. Un candado a una sola grabación o a una carpeta cifra su transcript, resumen, marcas y audio con la misma clave (AES-256-GCM, sin pasar la base a SQLCipher) y borra su texto en claro de la base. La clave de recuperación la genera la app, la ves una sola vez y no la tenemos nosotros: si la pierdes junto con el llavero, pierdes las reuniones.

    Ajustes › Cifrado en reposo: activado, con la casilla «Usar Touch ID en esta Mac» marcada y la nota de que la clave de recuperación sigue siendo el respaldo, el botón «Bloquear ahora» y la fila «Clave de recuperación» con el botón «Regenerar clave de recuperación»
  5. 05 Salida · Exportar

    Solo sale lo que tú exportas

    «Ver como» te enseña el archivo real en .md, .txt, .json, .srt o .vtt (título, fecha, transcript, resumen y, en el JSON, el original y la bitácora de correcciones) antes de guardarlo o copiarlo. «Compartir» abre la hoja de compartir de macOS, AirDrop, Mensajes o Mail, con ese archivo y, si quieres, el audio; la copia que le entrega vive en tu carpeta de datos y se borra al cerrarse la hoja. Un test comprueba que el archivo no lleva rutas de disco ni tu nombre de usuario, y nace con permisos 0600, como todo lo que escribe la app.

    $ ls -l ~/Desktop/exportado

    -rw------- llamada-con-cliente.md

    -rw------- llamada-con-cliente.txt

    -rw------- llamada-con-cliente.json

    -rw------- llamada-con-cliente.srt

    -rw------- llamada-con-cliente.vtt

    $ ls -ld "~/Library/Application Support/do.dialoga.desktop/"

    drwx------ tu-usuario do.dialoga.desktop

Hasta aquí llega. La única vez que Dialoga usa internet es para descargar el modelo (1.6 GB), una sola vez, y esa petición no lleva nada tuyo.
Pedir acceso anticipadoUS$12.99 al mes o US$99 al año

Muy pronto · macOS 14.4 o superior · Apple Silicon

El candado

Cifra y bloquea tus transcripts con una clave que solo tú tienes, si quieres

opcional · por grabación, por carpeta o toda la biblioteca · una sola clave

Grabar en local ya deja el audio y el texto en tu disco. El candado es para cuando eso no basta: la carpeta copiada, el respaldo de Time Machine, la Mac que alguien más abre. Lo pones a una grabación, a una carpeta o a todo.

  • Una grabación con candado: el título «Llamada con cliente» y su carpeta y etiqueta siguen visibles, y en lugar del transcript aparece «Esta grabación está bloqueada» con el campo de la clave de recuperación y el botón Desbloquear

    Por grabación

    Cada grabación puede llevar su propio candado, como en Notas.

    El transcript, el resumen, las marcas y el audio se cifran y el texto en claro se borra del disco; el título sigue visible. Se desbloquean todas de una vez durante la sesión y se cierran solas: a los 15 minutos sin usarse o cuando la Mac duerme. Con candado la grabación es de solo lectura; quitárselo devuelve el texto a la base.

  • La biblioteca de la app: la carpeta «Clientes» con candado y dos grabaciones, y en la lista esas dos grabaciones marcadas «Bloqueada» con su carpeta y sus etiquetas

    Por carpeta

    Pon candado a una carpeta y todas sus grabaciones quedan bloqueadas.

    Lo que muevas a ella después también, y abrirla pide siempre tu clave de recuperación, aunque la app esté desbloqueada. Sacarlas no les quita el candado: el candado viaja con la grabación, no con la carpeta. Una grabación que se esté transcribiendo en ese momento se queda fuera y la lista la marca «Sin candado todavía»: cuando termine, le pones el candado desde su pantalla (o quitas y vuelves a poner el de la carpeta).

  • $ ls do.dialoga.desktop/

    dialoga.db
    SQLCipher: transcripts, resúmenes, marcas

    notas/nota-1758300000.wav.pmv
    tu voz · AES-256-GCM

    notas/sistema-1758300000.wav.pmv
    ellos · AES-256-GCM

    vault.json
    sal y coste de Argon2id y la clave de datos envuelta; nunca tu clave de recuperación

    Toda la biblioteca

    Si quieres, todo: los transcripts, no solo el audio.

    Al activar el cifrado en reposo, transcripts, resúmenes, marcas, títulos y tu vocabulario viven en la base de datos, que pasa a SQLCipher. El audio de cada reunión se cifra aparte, en trozos de 1 MiB con AES-256-GCM, y la app arranca en una pantalla de desbloqueo. Es todo lo que hay en tu carpeta de datos.

  • La pantalla de bloqueo de la app: «Tus reuniones están cifradas», el campo de la clave de recuperación, el botón Desbloquear y el aviso de que sin la clave no hay forma de recuperarlas

    Cómo se bloquea

    Con Touch ID en el día a día, y con tu clave de recuperación, que ves una vez, en otra Mac.

    Es opcional, y no inventas ninguna contraseña: al poner el primer candado, o en Ajustes › Cifrado en reposo, la app genera una clave de recuperación de 28 caracteres, te la enseña una sola vez con «Copiar» e «Imprimir», y no bloquea nada hasta que marcas «Ya la guardé». Es la misma para los candados y para toda la biblioteca, y nosotros nunca la tenemos. Después abres con Touch ID o la contraseña de la Mac: la clave de datos vive en el llavero protegido de esa Mac, solo en ese equipo y sin pasar por iCloud. «Bloquear ahora» cierra los candados sin cerrar la app, y con la clave también puedes apagar el cifrado.

La evidencia

Por qué la transcripción se queda en tu equipo

4 señales · verificables en el repositorio

Cada afirmación apunta a un archivo que la comprueba o a un comando que puedes correr tú. Donde no hay medición publicada, esta página no la inventa.

Lo que no podemos ver

Ni nosotros ni nadie. No hay dónde mirar.

Sin servidor. Sin cuenta. Sin telemetría. Sin copia de tu clave. Cada una tiene un test con nombre en el repositorio; el número lleva a su bloque.

  • Sin servidor

    No existe un backend de Dialoga al que llegue tu audio o tu texto. El único archivo del proyecto que habla con la red descarga un modelo público.

    Prueba 01
  • Sin cuenta

    No hay registro, correo ni identificador. La descarga del modelo va sin cabeceras de identificación; no sabemos quién la hizo.

    Prueba 01
  • Sin telemetría

    Ni analítica, ni envío de errores, ni comprobación de actualizaciones. Los diagnósticos locales nunca llevan tu texto.

    Prueba 02
  • Sin copia de tu clave

    Con el candado activado, nadie abre tus reuniones sin tu clave de recuperación. Tampoco nosotros: la clave la genera tu Mac y no hay copia en ningún sitio.

    Prueba 04

Solo un archivo del proyecto puede tocar la red, y un test lo vigila

El único cliente HTTP del proyecto está en models.rs y sirve para descargar el modelo de Whisper desde huggingface.co, con un GET sin cabeceras de identificación y sin cuenta. El test la_unica_salida_a_la_red_es_la_descarga_del_modelo lee todos los fuentes y falla si otro archivo de Rust usa reqwest, TcpStream o UdpSocket; si un sidecar Swift usa URLSession, NWConnection o CFNetwork; o si el frontend usa fetch, XMLHttpRequest, sendBeacon, WebSocket o una URL https. No hay telemetría, ni analítica, ni comprobación de actualizaciones.

src-tauri/src/privacidad.rs · src-tauri/src/models.rs · docs/PRIVACIDAD.md

Los diagnósticos nunca llevan tu texto

La app escribe métricas y errores por stderr, que macOS recoge en Console.app: duraciones, tamaños, códigos, rutas. Nunca el transcript, ni títulos, ni el dictado, ni el vocabulario, ni contraseñas ni claves de recuperación. Dos tests lo garantizan leyendo el código: ningun_log_de_rust_interpola_texto_del_usuario y ningun_log_de_los_sidecars_interpola_texto_del_usuario fallan si un eprintln! o un note(...) interpola una variable con ese contenido.

src-tauri/src/privacidad.rs

La interfaz no puede leer tu carpeta de datos, y el audio solo viaja cifrado por pmaudio://

El test la_webview_no_puede_leer_la_carpeta_de_datos_por_asset comprueba que el protocolo asset de Tauri está apagado, con alcance vacío y fuera del binario, y que la CSP empieza en default-src 'self' sin asset: ni https:. El test el_audio_se_sirve_solo_por_pmaudio comprueba que el reproductor pide el audio por un esquema propio que descifra únicamente los trozos que cubre el Range pedido: un WAV de dos horas se reproduce sin que exista nunca una copia en claro en disco.

src-tauri/src/privacidad.rs · src-tauri/src/cifrado.rs · src-tauri/tauri.conf.json

Sin tu clave de recuperación no hay reuniones: nosotros no tenemos ninguna puerta

Con el cifrado activado, la base va con SQLCipher y cada WAV en trozos de 1 MiB con AES-256-GCM, cada trozo con su nonce. La clave de datos son 32 bytes aleatorios y vive en vault.json envuelta con una clave que sale de tu clave de recuperación con Argon2id (versión 0x13, 19 456 KiB de memoria, 2 pasadas), o de tu contraseña en cifrados anteriores; las dos se borran de memoria al soltarlas. La clave de recuperación la genera tu Mac (28 símbolos, 140 bits), la ves una sola vez y no viaja a ningún sitio. La decisión de no tener pregunta secreta, código de rescate ni copia en la nube está escrita y argumentada en ADR-002 y ADR-003: cualquier puerta de recuperación es también la puerta de un atacante con la carpeta. Se puede apagar el cifrado, con la clave.

src-tauri/src/vault.rs · src-tauri/src/recuperacion.rs · docs/adr/adr-003-clave-de-recuperacion.md

Cómo comprobarlo tú

Con la app abierta y en uso normal, grabando o transcribiendo:

lsof -i -n -P | grep -i dialoga

No debe devolver nada. Durante una descarga de modelo verás una conexión a huggingface.co o a un host *.hf.co por el puerto 443, y desaparece al terminar. Con Little Snitch o LuLu, esa es la única petición que verás; puedes denegar todo lo demás sin perder ninguna función.

Los permisos de la carpeta de datos

Solo tu usuario puede entrar y leer:

ls -la "~/Library/Application Support/do.dialoga.desktop/"

Debe mostrar drwx------ en las carpetas y -rw------- en los archivos. Con el cifrado activado, la base ya no empieza por «SQLite format 3.» y el audio termina en .pmv.

Los límites

Lo que Dialoga no hace (todavía)

9 hechos · sin letra chica

Lo que sigue está en el código o en la documentación del repositorio, no en un plan. Si algo cambia, cambia aquí primero.

  • El resumen con IA exige macOS 26 con Apple Intelligence.

    En macOS 14.4 a 15 el producto es transcripción, búsqueda y cifrado. El resumen no aparece, porque el modelo de Apple que lo hace no existe en esas versiones.

  • Una carpeta con candado no se abre con Touch ID.

    Touch ID o la contraseña de la Mac abren la app y las grabaciones con candado. Una carpeta con candado pide siempre tu clave de recuperación: su llave va envuelta con esa clave y no con la que la app tiene en memoria, así que abrirla exige escribirla aunque la app esté desbloqueada. Es a propósito.

  • Si pierdes la clave de recuperación y el llavero, pierdes las reuniones.

    El cifrado es opcional; si lo activas, o pones un candado, la app genera la clave y te la enseña una sola vez: no hay pregunta secreta, código de rescate ni copia en la nube, y nosotros nunca la tenemos. Es la misma clave para los candados y para toda la biblioteca, y no bloquea nada hasta que marcas «Ya la guardé en un lugar seguro».

  • No avisa por ti a los demás participantes.

    No entra un bot a la llamada ni sale un aviso automático: decir «estoy grabando» es cosa tuya, antes de empezar. Tampoco hay modo oculto: macOS muestra el indicador del micrófono y la app la grabación en curso. Un paso de aviso con marca de consentimiento en el transcript está en el plan; cuando exista se dirá aquí.

  • Una grabación con candado es de solo lectura.

    Abierta en la sesión se lee, se oye, se busca, se exporta y se comparte, pero no se edita ni se extiende: corregir un turno, renombrar hablantes, quitar marcas o resumir piden «Quita el candado para editar», y «Continuar grabando» pide quitarlo también. El texto no vuelve a escribirse en claro mientras el candado siga puesto.

  • No hay diarización.

    En videollamada separa «Tú» y «Ellos» por pista: micrófono y audio del sistema. En una reunión presencial todo entra por el micrófono y queda como una sola voz; puedes renombrar hablantes a mano.

  • No protege con la app abierta y desbloqueada.

    Mientras la sesión está activa la clave está en memoria, porque tiene que estarlo. Los candados por grabación se cierran solos a los 15 minutos sin usarse y al dormir la Mac; con toda la biblioteca cifrada no, porque esa clave también abre la base y la grabación en curso: ahí manda «Bloquear ahora». Protege la carpeta copiada, el respaldo de Time Machine, la carpeta sincronizada y la Mac desbloqueada con la app cerrada.

  • El modelo pesa 1.6 GB y se descarga de Hugging Face.

    La app pesa poco; el modelo no. La descarga ocurre una vez, cuando la pides desde Ajustes, y es la única conexión que Dialoga hace. Si ya tienes whisper-cpp de Homebrew, reutiliza su modelo sin volver a bajarlo.

  • Sin nube, sin cuenta, sin Windows, sin iOS.

    Es una app de Mac con Apple Silicon y nada más. No sincroniza entre equipos ni tiene versión web. Transcribe en español, inglés, portugués, francés, alemán e italiano, o con detección automática.

La comparativa

Transcribir reuniones con bot, en la nube o en tu Mac

3 alternativas · según su web, 19 sep 2026

Solo hechos que aparecen en la web de cada producto el , citados entre comillas cuando son textuales. Lo que su web no dice se marca como tal; no lo inferimos.

CriterioDialogaOtterZoom AI Companion (ZoomMate)Notas de Apple
Dónde se transcribeEn tu Mac, con whisper.cpp sobre MetalEn sus servidores: «Otter uses AWS S3 storage»otter.ai/privacy-security · 19 sep 2026En el servicio de ZoomNo lo dice su webguía de Notas · 19 sep 2026
¿Un bot entra a la llamada?No: captura el audio de tu MacSí: «Joins Zoom, MS Teams, and Google Meet»otter.ai/pricing · 19 sep 2026No aplica: es el propio ZoomNo: graba audio dentro de una notaguía de Notas · 19 sep 2026
Cómo se enteran los demásLes avisas tú antes de empezar; no hay modo oculto: macOS muestra el indicador del micrófonoEl bot entra a la llamada como participanteotter.ai/pricing · 19 sep 2026Muestra un aviso a los participantes cuando se activacommunity.zoom.com · 19 sep 2026No lo dice su webguía de Notas · 19 sep 2026
Zoom, Meet y TeamsCualquier app que suene en tu MacZoom, Teams y Meet, entrando como participanteotter.ai/pricing · 19 sep 2026Zoom; en otras plataformas solo «My Notes»zoom.com · 19 sep 2026No lo dice su webguía de Notas · 19 sep 2026
Funciona sin internetSí, después de descargar el modelo una vezNo: procesa y guarda en la nubeotter.ai/privacy-security · 19 sep 2026No: es un servicio en líneaNo lo dice su webguía de Notas · 19 sep 2026
Cifrado con una clave que solo tú tienesSí, opcional: SQLCipher + AES-256-GCM, clave por Argon2idNo: cifrado del lado del servidor con llaves de Otter (AES-256 SSE)otter.ai/privacy-security · 19 sep 2026No lo dice su webzoom.com · 19 sep 2026No lo dice su webguía de Notas · 19 sep 2026
Cuenta obligatoriaNingunaSí: cobra por usuariootter.ai/pricing · 19 sep 2026Sí, cuenta de ZoomViene con macOS
PrecioUS$12.99 al mes o US$99 al año; sin minutos ni créditosGratis, o Pro a US$16.99 por usuario al mesotter.ai/pricing · 19 sep 2026ZoomMate Basic gratis con cuenta Workplace; el completo, con licencia apartezoom.com · 19 sep 2026Incluida en macOS

Desliza la tabla hacia los lados para ver las cinco columnas.

Zoom llama hoy «ZoomMate» a lo que antes vendía como AI Companion; se cita con ambos nombres. Las celdas sin fuente son hechos de definición (una cuenta de Zoom para usar Zoom, Notas viene con macOS) o sobre Dialoga, que están en su repositorio.

Por qué lo hice

Grabo llamadas que no puedo subir a nadie.

Israel Ortiz

Autor de Dialoga · dirige AllSign

Dirijo AllSign, una plataforma de firma electrónica con constancias NOM-151 en México. Grabo llamadas con clientes que no puedo subir a un tercero.

Hice Dialoga para transcribirlas sin que salgan de mi Mac, y lo medí sobre mis propias juntas: la cifra de ~20× tiempo real que ves arriba es una llamada real de 18 minutos en un M1 Pro, no una estimación.

Si algo de esta página no cuadra con lo que ves en el código o en la app, escríbeme: [email protected].