Skip to content

Repository files navigation

MashIA (Android)

Aplicacion Android nativa para MashIA: chat con IA, voz/STT, TTS, historial local, biblioteca de conversaciones, Google/Firebase Auth opcional y backend local para llamadas a OpenAI.

El asistente principal sigue siendo un chat de uso general. La capa social/deliberativa es una direccion futura del producto y debe vivir como una pestana o modulo separado de debate, no como reemplazo de la pantalla principal.

Estado verificado: ./gradlew.bat :app:assembleDebug compila correctamente en Windows con JDK 17+.

Requisitos

  • Android Studio (Koala o superior), JDK 17
  • Gradle Wrapper se generará al abrir el proyecto en Android Studio (o ejecutando gradle wrapper).

Estructura

  • app/: modulo Android (Kotlin + AndroidX + JNI para Whisper)
  • server/: backend Express opcional para no exponer llaves en Android
  • app/src/main/res/values/strings.xml: valores no secretos de app/modelos/base URLs
  • build.gradle.kts y settings.gradle.kts: configuracion de Gradle

Ejecutar

  1. Abre la carpeta del repo en Android Studio.
  2. Deja que sincronice Gradle y descargue dependencias.
  3. Ejecuta la app en un emulador o dispositivo.

O desde terminal:

./gradlew.bat :app:assembleDebug

Login con Google (Firebase)

Para que el botón "Continue with Google" funcione con Firebase Auth:

  • Crea un proyecto en Firebase Console y añade una app Android con el package com.rophiroth.mashia.
  • Ejecuta ./gradlew signingReport y copia el SHA1 de la variante debug (y release si corresponde) en la configuración de la app en Firebase.
  • Descarga el google-services.json desde Firebase (Ajustes del proyecto > General > Tus apps > Android) y colócalo en app/google-services.json.
  • En Firebase Console, habilita el proveedor "Google" en Authentication > Sign-in method.
  • Sincroniza Gradle y vuelve a ejecutar la app.

Notas:

  • El repo ya incluye dependencias de play-services-auth y firebase-auth-ktx.
  • El plugin com.google.gms.google-services se aplica automáticamente si existe app/google-services.json.
  • Si corres sin google-services.json, el flujo intentará usar solo Google Sign-In, pero verás error 10 si no existe un OAuth Client configurado en Google Cloud para el paquete+SHA1. Lo recomendado es usar Firebase como arriba.

Chat con IA

Para pruebas locales rapidas, la app puede leer GROQ_API_KEY u OPENAI_API_KEY desde variables de entorno o local.properties y llamar directo a los proveedores. Eso sirve para desarrollo, pero no es seguro para produccion porque las llaves terminan dentro del APK.

Para pruebas mas serias o distribucion, usa el backend local incluido en server/ y deja las llaves solo en el servidor.

Backend (Node + Express)

  • Requisitos: Node 18+
  • Pasos:
    1. cd server
    2. npm install
    3. Exporta tu key en el entorno: setx OPENAI_API_KEY "sk-..." (Windows PowerShell: $env:OPENAI_API_KEY="sk-...")
    4. npm start (levanta en http://localhost:3000)

App Android

  • Edita app/src/main/res/values/strings.xml y pon tu IP de PC en backend_url (ej. http://192.168.1.82:3000). Si queda vacio, la app intenta llamada directa usando las llaves locales.
  • Construye/instala: ./gradlew.bat :app:installDebug
  • Al enviar un mensaje en Chat, la app hará POST a /api/chat y mostrará la respuesta.

Notas

  • El backend usa Axios contra Chat Completions y el modelo gpt-4o-mini por defecto.
  • Puedes desplegar el backend en Firebase Functions/Cloud Run cuando quieras; la app no cambia, solo el backend_url.

Vision: debate y Espiritocracia

La idea de MashIA no es convertir toda la app en una red social ni reemplazar el chat principal. La evolucion esperada es agregar una pestana de debate donde muchas personas puedan opinar libremente sobre un tema y MashIA actue como capa de ordenamiento.

En esa pestana, MashIA deberia:

  • filtrar spam, ruido y aportes sin contenido;
  • avisar cuando una idea es debil, irrelevante o esta mal formulada;
  • resumir fielmente lo que una persona quiso decir;
  • catalogar posturas por tema, intencion, argumento y fondo;
  • detectar cuando dos opiniones suenan distintas pero expresan el mismo punto de fondo;
  • conectar a personas de la plataforma que estan defendiendo ideas equivalentes con palabras distintas;
  • preparar la base tecnica para una deliberacion masiva tipo Democracia 2.0 / Espiritocracia.

Ese modulo requiere una arquitectura propia: perfiles/posturas, moderacion, clasificacion semantica, deduplicacion de argumentos, busqueda por similitud y reglas claras de privacidad. No esta pensado como pantalla inicial de MashIA.

Whisper on‑device (whisper.cpp)

Este repo incluye un andamiaje (scaffold) para integrar whisper.cpp de forma nativa en Android, sin romper la build cuando no están las fuentes del proyecto de terceros.

Pasos para activarlo:

  1. Coloca las fuentes de whisper.cpp en:

    app/src/main/cpp/third_party/whisper.cpp

    Puedes copiar los archivos o agregarlo como submódulo. Se requieren al menos whisper.cpp, ggml.c y headers relacionados.

  2. Añade el modelo base a assets:

    app/src/main/assets/models/ggml-base.bin

    Descarga de los enlaces oficiales de whisper.cpp (o mirrors en Hugging Face).

  3. Habilita la opción de CMake para compilar con whisper.cpp:

    • En Android Studio: External Native Build > CMake arguments: -DUSE_WHISPERCPP=ON

    • O en gradle.properties agrega:

      android.defaults.cmake.arguments=-DUSE_WHISPERCPP=ON
      
  4. Compila en un dispositivo arm64-v8a.

Puente JNI expuesto (inicialmente en modo stub hasta enlazar whisper.cpp):

  • nativeInitModel(modelPath: String, translate: Boolean, threads: Int): Boolean
  • nativeTranscribeShort(pcm: ShortArray, sampleRate: Int): String

Wrapper Kotlin: org.psyhackers.mashia.stt.WhisperEngine.

Cuando las fuentes estén presentes y USE_WHISPERCPP=ON, completa el wiring en app/src/main/cpp/WhisperBridge.cpp para cargar el modelo y ejecutar inferencia.

Crear remoto en GitHub

Con GitHub CLI (gh) autenticado:

gh repo create rophiroth/MashIA --source . --public --push

O crea el repo en GitHub y luego:

git remote add origin https://github.com/rophiroth/MashIA.git
git push -u origin main

About

Android app MashIA

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages