
IA sin conexion: Funciones moviles que funcionan sin internet
Como construir funciones de IA que funcionan sin conexion a internet. Modelos en el dispositivo, patrones de arquitectura offline-first y los casos de uso donde la IA sin conexion no es opcional.
La IA en la nube tiene una dependencia dura: internet. Cuando la conexion cae, la funcion se rompe. Para muchos casos de uso movil, esto no es solo una inconveniencia. Es un factor decisivo.
Una app de traduccion para viajes que falla sin datos de roaming. Un asistente de servicio de campo que deja de funcionar en un sitio de construccion con cobertura irregular. Una app de salud que no puede procesar datos en una clinica remota. Una app de notas que pierde sus funciones de IA en un avion.
La IA sin conexion no es un extra agradable para estas apps. Es un requisito fundamental. Y con inferencia en el dispositivo, es completamente alcanzable.
Donde la IA sin conexion es esencial
Viajes e internacional
Los usuarios que viajan internacionalmente frecuentemente evitan cargos de roaming de datos. El WiFi de aeropuertos es poco confiable. La traduccion, asistencia de navegacion y planificacion de viajes necesitan funcionar sin conexion. Una app de idiomas que solo traduce cuando esta conectada a WiFi es inutil en el momento exacto que los usuarios mas la necesitan.
Trabajo de campo
Sitios de construccion, campos agricolas, operaciones mineras, inspecciones remotas. Estos entornos frecuentemente tienen cobertura celular pobre o nula. Los trabajadores usando apps moviles para documentacion, medicion, inspeccion de calidad o reportes necesitan funciones de IA que funcionen en sitio.
Salud
Los datos de pacientes no deberian salir del dispositivo por razones de privacidad y regulatorias (HIPAA, GDPR). Soporte de decision clinica, transcripcion de notas, codificacion medica. Estas funciones deben funcionar en entornos clinicos donde el WiFi puede estar restringido o ser poco confiable.
Mercados en desarrollo
Mas de 3 mil millones de personas en el mundo tienen acceso intermitente a internet. Las apps dirigidas a estos mercados no pueden asumir conectividad permanente. Las funciones de IA que funcionan sin conexion tienen un mercado direccionable dramaticamente mayor.
Interrupciones cotidianas
Metros, ascensores, aviones, sotanos, areas rurales. Incluso en mercados desarrollados, las brechas de conectividad son constantes. Una funcion de IA que muestra un spinner de carga o un error en estos momentos entrena a los usuarios para no confiar en ella.
La arquitectura: Offline-first con inferencia en el dispositivo
La idea clave es arquitectonica. En lugar de construir cloud-first con un respaldo sin conexion (que es fragil), construye offline-first con aumento opcional en la nube.
Entrega del modelo
El archivo del modelo GGUF necesita estar en el dispositivo antes de que funcionen las funciones de IA. Dos enfoques:
Incluido en la app: Incluye el modelo en el binario de la app o como un asset de la app. El usuario lo descarga con la app. Enfoque mas simple para modelos menores a 200MB (cabe dentro de limites de descarga celular). Para modelos mas grandes, usa iOS App Thinning o Android Asset Delivery.
Descarga post-instalacion: La app se instala sin el modelo. En el primer inicio, detecta el modelo faltante y solicita al usuario descargarlo por WiFi. Esto mantiene la descarga inicial de la app pequena mientras entrega el modelo antes de que sea necesario.
// iOS: Verificar modelo y solicitar descarga
func ensureModelAvailable() -> Bool {
let modelPath = FileManager.default
.urls(for: .documentDirectory, in: .userDomainMask)[0]
.appendingPathComponent("model.gguf")
if FileManager.default.fileExists(atPath: modelPath.path) {
return true
}
// Mostrar UI de descarga
showModelDownloadPrompt()
return false
}
Inferencia local
Una vez que el modelo esta en el dispositivo, la inferencia es completamente local. llama.cpp maneja la computacion usando la CPU y GPU del dispositivo (Metal en iOS, Vulkan en Android). Sin llamada de red requerida.
El pipeline de inferencia:
- El usuario proporciona entrada (texto, transcripcion de voz, etc.)
- La entrada se tokeniza localmente
- El modelo genera respuesta token por token
- Los tokens se decodifican y muestran en la UI
Cada paso ocurre en el dispositivo. Internet no esta involucrado.
Sincronizar cuando este disponible
Para funciones que se benefician de conectividad en la nube (analitica, actualizaciones de modelo, sincronizacion de datos de usuario), usa un patron de cola y sincronizacion:
- Encola eventos de analitica localmente (SQLite, Core Data, Room)
- Cuando regrese la conectividad, sincroniza la cola con tu backend
- Verifica actualizaciones de modelo al iniciar la app cuando este conectado
- Nunca bloquees la experiencia del usuario por disponibilidad de red
Que funciona sin conexion
| Funcion | Factible sin conexion? | Tamano de modelo necesario | Notas |
|---|---|---|---|
| Clasificacion de texto | Si | 1B (~600MB) | Rapido, modelo pequeno suficiente |
| Asistente de chat | Si | 3B (~1.7GB) | Generacion de calidad necesita 3B |
| Resumen | Si | 3B (~1.7GB) | Buena calidad a 3B |
| Traduccion | Si | 1-3B | Depende del par de idiomas |
| Redaccion de contenido | Si | 3B (~1.7GB) | Respuestas de email, notas, mensajes |
| Autocompletado | Si | 1B (~600MB) | La velocidad importa, 1B es rapido |
| Analisis de sentimiento | Si | 1B (~600MB) | Tarea de clasificacion simple |
| Extraccion de entidades | Si | 1-3B | Tarea de salida estructurada |
| Busqueda web | No | N/A | Requiere datos de internet en vivo |
| Recuperacion de datos en tiempo real | No | N/A | Requiere conexion al servidor |
| Generacion de imagenes | Parcialmente | 1-2GB+ | Posible pero intensivo en memoria |
El patron: cualquier tarea que procese la entrada del usuario y genere salida del conocimiento entrenado del modelo funciona sin conexion. Las tareas que requieren datos externos en tiempo real no.
Gestion de modelos para offline-first
Verificacion de version
// Android: Verificar version del modelo al iniciar la app
suspend fun checkModelUpdate() {
if (!isNetworkAvailable()) return
val manifest = fetchModelManifest() // JSON de tu CDN
val currentVersion = prefs.getString("model_version", "")
if (manifest.version != currentVersion) {
// Programar descarga en segundo plano
scheduleModelDownload(manifest.url, manifest.checksum)
}
}
Gestion de almacenamiento
Los modelos GGUF son de 600MB-1.7GB. La gestion de almacenamiento importa:
- Verifica el espacio disponible antes de descargar
- Muestra el tamano del modelo al usuario antes de que descargue
- Permite a los usuarios eliminar y re-descargar el modelo
- En iOS, marca el archivo del modelo para que no se respalde en iCloud (puede re-descargarse)
- Maneja advertencias de poco almacenamiento ofreciendo eliminar el modelo
Verificacion de integridad
Siempre verifica el archivo del modelo despues de descargarlo:
// Verificacion SHA256
func verifyModel(at path: URL, expectedHash: String) -> Bool {
guard let data = try? Data(contentsOf: path) else { return false }
let hash = SHA256.hash(data: data)
let hashString = hash.compactMap { String(format: "%02x", $0) }.joined()
return hashString == expectedHash
}
Patrones de UX para IA sin conexion
Estado de descarga del modelo
- Muestra un indicador de progreso claro durante la descarga
- Permite pausar y reanudar
- Reanuda automaticamente al reconectarse a la red
- Muestra el tamano de descarga antes de iniciar
Disponibilidad de funciones
- Cuando el modelo aun no se ha descargado, muestra un mensaje claro explicando por que la funcion de IA no esta disponible y como habilitarla
- Cuando el modelo esta cargado y listo, no muestres indicador especial. La IA sin conexion deberia sentirse nativa.
- Nunca muestres insignias de "modo sin conexion" o UI degradada. El modelo en el dispositivo ES la funcion.
Respaldo elegante
Para apps hibridas que usan IA tanto en el dispositivo como en la nube:
- Por defecto usa el dispositivo para todas las tareas soportadas
- Si hay conexion y la tarea excede la capacidad del dispositivo, opcionalmente enruta a la nube
- Nunca falles una solicitud del usuario porque la nube no esta disponible si el dispositivo puede manejarla
Construyendo el pipeline offline-first
El camino hacia la IA sin conexion:
- Elige tu modelo: 1B para tareas simples (clasificacion, autocompletado), 3B para generacion y chat
- Fine-tunea en tu dominio: Usa los datos de tu app para entrenar un modelo que destaque en tus tareas especificas. Plataformas como Ertas proporcionan un pipeline visual de fine-tuning que exporta archivos GGUF listos para despliegue movil.
- Integra llama.cpp: Agrega la libreria de inferencia a tu proyecto iOS o Android
- Implementa entrega del modelo: Incluido en la app o descarga post-instalacion
- Construye offline-first: Disena cada interaccion de IA para funcionar sin red, agrega aumento en la nube solo donde sea esencial
El resultado es una funcion de IA que funciona donde quiera que vayan tus usuarios. Metro. Avion. Sitio de construccion. Clinica rural. Sin spinners de carga. Sin mensajes de error. Solo IA instantanea, privada y confiable.
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

AI in iOS Apps: CoreML, Cloud APIs, and On-Device LLMs Compared
Three paths to AI in your iOS app. CoreML for Apple's ecosystem, cloud APIs for capability, and on-device LLMs via llama.cpp for cost and privacy. A practical comparison for Swift developers.

AI in Android Apps: ML Kit, Cloud APIs, and On-Device LLMs Compared
Three paths to AI in your Android app. Google ML Kit for common tasks, cloud APIs for full LLM capability, and on-device models via llama.cpp for cost and privacy. A practical comparison for Kotlin developers.

AI in React Native: From Cloud APIs to On-Device Models
How to add AI features to React Native apps. Cloud API integration with fetch, on-device inference with llama.cpp bindings, and a practical migration path from one to the other.