Skip to content

successbyfailure/OGoat

Repository files navigation

Ogoat

Ogoat es una aplicación Android que permite ejecutar modelos de lenguaje (LLMs) localmente en tu dispositivo usando MediaPipe GenAI (LiteRT) y Gemini Nano. Incluye un servidor HTTP local con API REST y descargador de modelos desde Hugging Face.

🚀 Características

  • 🤖 Gemini Nano (NPU): Soporte nativo para Gemini Nano en dispositivos Pixel 8 Pro+ usando AICore
  • 📱 Modelos Locales: Ejecuta modelos MediaPipe LiteRT completamente offline
  • 🌐 Servidor HTTP Local: API REST para integración con otras apps
  • 📥 Descarga de Modelos: Descarga automática desde Hugging Face
  • 💬 Interfaz de Chat: UI sencilla para probar los modelos
  • 🔐 Seguridad: API key opcional para proteger el servidor local
  • 📋 Auto-copiar: Copia respuestas automáticamente al portapapeles

📦 Instalación

Desde GitHub Releases (Recomendado)

  1. Ve a Releases
  2. Descarga el último Ogoat-vX.X.X.apk
  3. En tu dispositivo Android:
    • Ve a Configuración > Seguridad
    • Habilita "Instalar desde fuentes desconocidas" para tu navegador/gestor de archivos
  4. Abre el APK descargado e instala

Nota: El APK está firmado con certificado de desarrollo. Es seguro instalarlo.

📱 Requisitos

Mínimos

  • Android 11+ (SDK 30)
  • 2GB RAM mínimo
  • Conexión a Internet (solo para descarga inicial de modelos)

Para Gemini Nano

  • Dispositivo Pixel 8 Pro o superior
  • Android 14+
  • AICore instalado (Android System Intelligence desde Play Store)
  • Bootloader bloqueado (no funciona con bootloader desbloqueado)

🎯 Uso Rápido

  1. Primera vez:

    • Abre la app
    • Ve a la pestaña "Configuración"
    • Opcional: Añade tu token de Hugging Face para descargar modelos privados
  2. Usar Gemini Nano (Pixel 8 Pro+):

    • La app detectará automáticamente si Gemini Nano está disponible
    • Si ves "AICore aún no está listo", espera 5-10 minutos conectado a WiFi
    • Una vez disponible, presiona "Usar Gemini Nano"
  3. Usar modelos locales:

    • Ve a la pestaña "Modelos HF"
    • Busca un modelo compatible (ej: "Qwen/Qwen2.5-0.5B-Instruct")
    • Descárgalo
    • Ve a "Modelos Locales" y cárgalo
  4. Chat:

    • Abre la pestaña "Chat"
    • Escribe tu mensaje y presiona enviar

🛠️ Solución de Problemas

Error: "AICore no instalado" (Error -101)

Solución:

  1. Abre Google Play Store
  2. Busca "Android System Intelligence"
  3. Instálalo o actualízalo

Error: "Feature 636 not available" (Error 606)

Causa: AICore aún está descargando configuraciones en segundo plano.

Solución:

  1. Conecta el dispositivo a WiFi
  2. Conecta el dispositivo a corriente eléctrica
  3. Espera 10-15 minutos
  4. Reinicia la app e intenta de nuevo

El APK no se instala

Causa: El APK no está firmado o tu dispositivo no permite fuentes desconocidas.

Solución:

  1. Descarga el APK desde GitHub Releases (no uses builds de CI directamente)
  2. Habilita "Instalar desde fuentes desconocidas" en Configuración > Seguridad
  3. Si persiste, verifica que el archivo no esté corrupto (re-descárgalo)

Gemini Nano no aparece disponible

Requisitos:

  • Solo funciona en Pixel 8 Pro, Pixel 9, Pixel 9 Pro (XL)
  • Requiere Android 14 o superior
  • Bootloader debe estar bloqueado
  • AICore debe estar actualizado

🔌 API del Servidor

El servidor HTTP local expone los siguientes endpoints:

POST /generate

Genera texto usando el modelo cargado.

Headers:

Authorization: Bearer <tu-api-key>  (opcional, si configuraste una)
Content-Type: application/json

Body:

{
  "prompt": "¿Qué es la inteligencia artificial?",
  "max_tokens": 512
}

Response:

{
  "response": "La inteligencia artificial es...",
  "model": "Gemini Nano (Sistema)"
}

GET /status

Obtiene el estado del servidor y modelo actual.

Response:

{
  "status": "ready",
  "model": "Gemini Nano (Sistema)",
  "using_nano": true
}

🏗️ Desarrollo

Estructura del Proyecto

  • app/src/main/java/com/mks/ogoat/ModelManager.kt: Gestiona la carga y ejecución de los modelos.
  • app/src/main/java/com/mks/ogoat/OgoatService.kt: Servicio de fondo que mantiene el servidor Ktor.
  • app/src/main/java/com/mks/ogoat/HFDownloader.kt: Utilidad para descargar modelos de Hugging Face.
  • app/src/main/java/com/mks/ogoat/ChatActivity.kt: UI de chat.

Documentación del Agente (AI Guidelines)

Este proyecto utiliza un flujo de trabajo asistido por IA. Las siguientes reglas deben ser seguidas por cualquier agente de IA que trabaje en este repositorio.

Reglas Generales

  1. Versionado Automático (Bumping):

    • Cada vez que se realice un cambio significativo en el código (nuevas funcionalidades, corrección de errores, cambios en la API), el agente debe incrementar el versionName en app/build.gradle.kts.
    • Si es un cambio menor o corrección: incrementar el tercer dígito (patch). Ejemplo: 0.1.1 -> 0.1.2.
    • Si es una nueva funcionalidad: incrementar el segundo dígito (minor). Ejemplo: 0.1.1 -> 0.2.0.
    • Si es un cambio mayor o ruptura de compatibilidad: incrementar el primer dígito (major). Ejemplo: 0.1.1 -> 1.0.0.
    • El versionCode debe incrementarse en 1 con cada subida de versión.
  2. Documentación:

    • Mantener el README.md actualizado con las nuevas capacidades.
    • Documentar las nuevas funciones en el código utilizando KDoc.
  3. Prácticas de Código:

    • Seguir las convenciones de Kotlin de JetBrains.
    • Asegurarse de que las tareas de red se realicen fuera del hilo principal.
    • Gestionar correctamente los recursos de MediaPipe para evitar fugas de memoria.

Instrucciones de Bumping para el Agente

Cuando el usuario pida realizar cambios en el código, el agente debe:

  1. Analizar el alcance del cambio.
  2. Aplicar los cambios solicitados.
  3. Abrir app/build.gradle.kts.
  4. Actualizar versionName según las reglas de SemVer mencionadas arriba.
  5. Incrementar versionCode en 1.
  6. Notificar al usuario sobre el incremento de versión realizado.

About

OGoat is a llm server for android

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors