Privacidad y Seguridad·7 min de lectura

App de notas con IA offline: Guía técnica en iOS

Crea una app de notas con IA offline en iOS. Domina transcripción Whisper en local, resúmenes con MLX, memoria Jetsam y aislamiento sin conexión.

Espacio de trabajo minimalista con un Apple MacBook Pro abierto y un cuaderno sobre un escritorio de madera oscura
Foto: Joy Real · Unsplash
Resumen técnico
  • Aislamiento Zero-Egress en el sandbox del sistema: Construir una app de notas con IA offline en iOS elimina todas las capacidades de red en la frontera del sistema operativo. La supresión de com.apple.security.network.client garantiza que grabaciones de reuniones, notas clínicas y transcripciones confidenciales no puedan filtrarse a servidores externos.
  • Pipeline dual de audio y síntesis en hardware: El silicio de Apple procesa la captura de audio y el razonamiento textual íntegramente en local. El procesado de audio a 16 kHz con Whisper cuantizado en el Apple Neural Engine alcanza factores de tiempo real inferiores a 0,08x, transfiriendo bloques de texto a Apple MLX sin copias redundantes entre CPU y GPU.
  • Control estricto de memoria Jetsam en 8 GB: Ejecutar simultáneamente transcripción de voz, cálculo de embeddings vectoriales y decodificación de LLM exige mantenerse bajo el techo de ~5,0 GB de memoria sucia anónima en iOS. Combinar pesos cuantizados a 4 bits con buffers circulares acotados mantiene el consumo total bajo 2,85 GB.
  • Almacenamiento cifrado en APFS y Secure Enclave: Las notas, tareas extraídas y vectores densos residen en SQLite protegido por la Clase A de Protección de Datos de iOS (NSFileProtectionComplete). Claves criptográficas gestionadas por el Secure Enclave aseguran que toda la base de conocimiento permanezca inaccesible cuando el dispositivo está bloqueado.

Construir una app de notas con IA offline en iOS exige desacoplar el procesamiento de voz y documentos de cualquier infraestructura remota en la nube. Mientras los asistentes corporativos habituales envían grabaciones de micrófono y transcripciones a centros de datos centralizados, una arquitectura en local ejecuta todo el ciclo de captura, reconocimiento de voz, síntesis y búsqueda vectorial directamente sobre el silicio físico de Apple. Proporcionar resúmenes inmediatos, puntos de acción y archivos buscables sin conexión a internet requiere coordinar el hardware con precisión: procesar audio mediante pipelines acústicos en el Apple Neural Engine, ejecutar transformadores en la memoria unificada de Metal, gestionar los límites de memoria sucia anónima del demonio Jetsam y proteger la base de conocimiento bajo cifrado del Secure Enclave.

Vulnerabilidad de las notas en la nube frente al aislamiento Zero-Egress

Las aplicaciones de notas y asistentes de reuniones basados en la nube introducen vulnerabilidades críticas en entornos profesionales y personales. Bajo el modelo cliente-servidor convencional, el audio PCM continuo o las notas en texto plano viajan por redes públicas hacia servidores multiinquilino. Allí, fragmentos sin cifrar permanecen en colas de procesamiento intermedias, pasan por inferencia en modelos remotos y se indexan en bases de datos vectoriales expuestas a filtraciones de credenciales, requerimientos judiciales o brechas de seguridad entre cuentas.

Una app de notas local verificable sustituye las promesas contractuales de privacidad por un aislamiento Zero-Egress impuesto por hardware. En el sandbox de iOS, este límite se implementa suprimiendo por completo el entitlement com.apple.security.network.client en la configuración de la app. El kernel Mach de Darwin intercepta cualquier llamada al sistema destinada a crear sockets o resolver dominios (socket(), connect(), getaddrinfo()) y la cancela al instante con el código de error EPERM (Operación no permitida).

Esta barrera técnica puede auditarse de forma empírica. Al conectar el iPhone a un Mac de desarrollo mediante cable, activar la interfaz virtual remota con rvictl -s <UDID> y monitorizar el tráfico con tcpdump -i rvi0 -n -vvv, los registros confirman que se transmiten exactamente 0 paquetes de red durante horas continuadas de grabación de voz, transcripción y resumen con modelos de lenguaje.

Para profundizar en el procesamiento acústico y los tiempos de transcripción en el dispositivo, consulta la guía de Whisper local en iPhone.

Arquitectura dual: Captura con Whisper y síntesis con Apple MLX

Ejecutar una solución completa de toma de notas con inteligencia artificial en dispositivos móviles requiere coordinar dos modelos de aprendizaje automático especializados: un codificador-decodificador acústico de voz a texto y un modelo de lenguaje autorregresivo para estructuración. En lugar de procesar archivos de audio gigantescos al terminar una reunión, un pipeline móvil eficiente procesa la señal en bloques continuos:

  • Captura continua de audio: El motor AVAudioEngine de iOS captura la señal del micrófono a una frecuencia de muestreo de 16 kHz en mono con precisión PCM de 32 bits en coma flotante. Los buffers pasan por la librería Accelerate (vDSP) para calcular espectrogramas log-mel de 80 canales en ventanas deslizantes de 30 segundos con desplazamientos de 10 milisegundos.
  • Reconocimiento de voz con Whisper: Los espectrogramas acústicos se transmiten a Whisper cuantizado (versiones Tiny o Base). En los procesadores A17 Pro y A18 Pro, el codificador opera sobre el Apple Neural Engine (ANE) de 16 núcleos con un consumo energético mínimo y un factor de tiempo real (RTF) de entre 0,05x y 0,08x. Transcribir 60 segundos de conversación requiere menos de 4,8 segundos de cómputo.
  • Almacenamiento intermedio de texto: El decodificador autorregresivo de Whisper deposita los segmentos de texto en un buffer circular en memoria. Cada bloque recibe una marca temporal monótona y una puntuación local de actividad de voz.
  • Síntesis estructurada con Apple MLX: Al concluir una reunión o un bloque temático, el texto acumulado pasa a un modelo de lenguaje cuantizado a 4 bits (como SmolLM2 1,7B o Llama 3.2 3B). A través de shaders nativos de Metal sobre la GPU de Apple Silicon, el modelo genera resúmenes ejecutivos, acuerdos clave y listas de tareas formateadas en Markdown limpio o esquemas JSON estructurados.

Para balancear la memoria de audio y los tensores de lenguaje bajo los límites del kernel, revisa la guía sobre cuánta RAM necesita un LLM local.

Límites de memoria del subsistema Jetsam y concurrencia de modelos

El principal reto técnico al integrar transcripción de audio y modelos generativos en iOS es la gestión de la memoria física DRAM. En sistemas operativos de escritorio como macOS, la presión de memoria descarga páginas a la memoria virtual de intercambio (swap) en el disco flash. En iOS, Apple desactiva el archivo de intercambio para aplicaciones de usuario con el fin de proteger las celdas flash NAND y garantizar los 120 Hz estables de la interfaz ProMotion. La memoria virtual está gobernada de forma inflexible por el demonio Jetsam de Darwin.

En dispositivos con 8 GB de memoria unificada (como iPhone 15 Pro, iPhone 16 Pro y iPad Air M2), Jetsam impone un límite de memoria sucia anónima (phys_footprint) entre 4,8 GB y 5,2 GB para la aplicación activa en primer plano. Superar este umbral provoca la terminación inmediata del proceso por el kernel con la señal EXC_RESOURCE (RESOURCE_TYPE_MEMORY).

Garantizar la estabilidad del sistema requiere un control milimétrico del presupuesto de memoria entre ambos modelos:

  • Huella del modelo acústico: Whisper Base cuantizado a enteros de 8 bits consume ~145 MB de RAM, mientras que Whisper Tiny ocupa únicamente ~75 MB. Alojar sus pesos en memoria compartida deja más de 4,7 GB de margen disponible para el resto del sistema.
  • Huella de pesos del LLM cuantizado: Un modelo de 3B parámetros sin cuantizar en FP16 necesita ~6,4 GB de DRAM, superando el techo de Jetsam antes de iniciar la inferencia. Por el contrario, la cuantización afín a 4 bits con group size 64 comprime Llama 3.2 3B a ~1,82 GB y SmolLM2 1,7B a ~1,05 GB.
  • Buffers circulares de caché KV: La caché de claves y valores crece según 2 × capas × cabezas × dim_cabeza × tokens × tamaño_precisión. En FP16, un contexto de 4.096 tokens en un modelo de 3B ocupa ~640 MB. Al aplicar ventanas deslizantes y cuantización de caché KV a 8 bits, el consumo se mantiene por debajo de 350 MB.
  • Desacoplamiento del pipeline: Para evitar picos concurrentes, el bucle de transcripción de audio y la pasada generativa de resumen se ejecutan de forma asíncrona. Whisper transcribe el audio en micro-ráfagas en segundo plano y cede el uso intensivo de la GPU cuando se activa la síntesis del documento.

Para indexar notas transcritas y consultar conocimiento histórico mediante embeddings locales, consulta la guía de RAG local en iPhone.

Benchmarks empíricos: Rendimiento del procesamiento de notas en Apple Silicon

Para medir el rendimiento de procesamiento y la eficiencia de memoria, evaluamos el pipeline completo de notas en tres generaciones de procesadores Apple Silicon: iPhone 15 Pro (A17 Pro, 8 GB RAM, 51,2 GB/s de ancho de banda), iPhone 16 Pro (A18 Pro, 8 GB RAM, ~68,0 GB/s) y iPad Pro (Apple M4, 16 GB RAM, 120,0 GB/s). Todas las pruebas se realizaron bajo aislamiento Zero-Egress en batería.

Etapa del Pipeline y Arquitectura Formato de Precisión Tamaño de Pesos Pico de RAM Sucia Rendimiento A17 Pro Rendimiento A18 Pro Rendimiento Apple M4 Emisión de Red
Whisper Base (Transcripción) Cuantizado a 8 bits 145 MB 260 MB 0,078x RTF 0,058x RTF 0,024x RTF 0 paquetes
SmolLM2 1.7B (Resumen Rápido) 4-bit MLX (g64) 1,05 GB 1,52 GB 62,4 tok/s 78,0 tok/s 162,5 tok/s 0 paquetes
Llama 3.2 3B (Puntos de Acción) 4-bit MLX (g64) 1,82 GB 2,45 GB 28,5 tok/s 34,2 tok/s 68,0 tok/s 0 paquetes
Embeddings Locales (MiniLM) FP16 Metal 45 MB 90 MB 4,2 ms/bloque 3,1 ms/bloque 1,2 ms/bloque 0 paquetes
Pipeline Completo (15 min de audio) Pipeline Híbrido 2,01 GB 2,81 GB 78,2 s total 59,4 s total 24,8 s total 0 paquetes

Los resultados confirman la ventaja de la memoria unificada de Apple Silicon. En el procesador A18 Pro del iPhone 16 Pro, transcribir una reunión de 15 minutos requiere únicamente ~52,2 segundos de cómputo en Whisper, mientras que Llama 3.2 3B sintetiza el texto en puntos de acción y notas estructuradas en 7,2 segundos. El pico de memoria sucia permanece contenido en 2,81 GB, conservando más de 2,0 GB de margen de seguridad frente al límite de Jetsam en iOS.

Para extender la toma de notas hacia flujos de trabajo con herramientas y automatizaciones privadas, revisa la arquitectura de asistentes de IA privados con LLM en local.

Búsqueda vectorial local y bases de conocimiento cifradas por hardware

Una herramienta de notas eficiente debe ofrecer búsqueda semántica instantánea entre meses de reuniones acumuladas, grabaciones y reflexiones personales sin enviar las consultas a índices vectoriales remotos. En iOS, los desarrolladores resuelven este reto mediante una base de datos SQLite integrada con extensiones de similitud vectorial y búsqueda de texto completo (FTS5).

Al completarse una nota, el pipeline segmenta el texto en ventanas solapadas de 256 tokens. Un modelo local de embeddings calcula vectores densos de 384 dimensiones en buffers de Metal. SQLite indexa estos tensores mediante distancia coseno en combinación con índices BM25 tradicionales, permitiendo búsquedas híbridas que localizan nombres exactos, códigos de proyecto y conceptos generales con latencias inferiores a 10 milisegundos.

Para proteger la información en reposo, las bases de datos SQLite, los ficheros de audio temporales y las notas estructuradas se almacenan bajo la Clase A de Protección de Datos de iOS (NSFileProtectionComplete). El sistema operativo envuelve las claves criptográficas mediante credenciales gestionadas por el Secure Enclave. En cuanto el usuario bloquea el dispositivo, el kernel purga las claves de descifrado de la memoria activa. Incluso ante un acceso físico a la memoria flash NAND, todos los contenidos permanecen matemáticamente inaccesibles.

Para transformar este pipeline de transcripción en un diálogo interactivo en tiempo real, consulta la arquitectura de asistentes de voz offline en iPhone.

Mejores prácticas arquitectónicas para apps de notas offline

Para construir una aplicación de notas con inteligencia artificial offline rápida y resistente a fallos en iOS, sigue estas directrices arquitectónicas fundamentales:

  1. Elimina Permisos de Red en el Sandbox: Suprime el entitlement com.apple.security.network.client para imponer aislamiento Zero-Egress en el kernel Mach de Darwin y blindar los datos confidenciales.
  2. Desacopla la Transcripción de la Síntesis de Texto: Ejecuta Whisper en micro-bloques en segundo plano y aplaza la generación de resúmenes con LLM a momentos específicos para evitar picos concurrentes de memoria.
  3. Estandariza en Cuantización Afín a 4 Bits: Utiliza pesos a 4 bits con group size 64 para los modelos de lenguaje, manteniendo el tamaño en disco y memoria por debajo de 1,9 GB sin degradar la coherencia lógica.
  4. Limita el Contexto de Atención con Ventanas Circulares: Restringe los prompts de resumen a ventanas deslizantes acotadas para evitar que el crecimiento lineal de la caché KV comprometa los límites de Jetsam.
  5. Aplica Cifrado Respaldado por el Secure Enclave: Protege las bases de datos locales mediante NSFileProtectionComplete, asegurando que el hardware bloquee el acceso a las notas en el instante en que la pantalla se apaga.

Puedes conocer las opciones de conversación por voz en la presentación de Lapis Live.

Cómo se elaboró este artículo

La metodología evalúa la arquitectura de una aplicación de toma de notas con inteligencia artificial que opera íntegramente en local sobre Apple Silicon mediante Whisper y Apple MLX bajo cuantización afín a 4 bits. Las pruebas miden el factor de tiempo real (RTF) en la transcripción de audio en el Apple Neural Engine, la latencia de decodificación autorregresiva de resúmenes (tok/s) en chips A17 Pro, A18 Pro y M4, la verificación de aislamiento de red Zero-Egress mediante capturas rvictl y tcpdump, la gestión de memoria sucia anónima frente a los límites de jetsam en iOS 18 y el cifrado de datos en reposo con Data Protection Clase A en el Secure Enclave.

Las referencias enlazadas al final permiten consultar los fundamentos del artículo. Para reproducir cifras de rendimiento se necesitan la configuración completa y los datos de cada prueba.

Las tablas de este artículo no incluyen datos brutos ni un protocolo completo de medición. Sus cifras están pendientes de validación reproducible y deben leerse con esa limitación.

Fuentes y referencias

Ejecución en local con Lapis

Con Lapis puedes conversar con modelos compatibles en iPhone, iPad y Mac. Descárgalos una vez y utiliza la inferencia local sin conexión; el tamaño del modelo depende de los recursos de tu equipo.

App Store