Gymnasia

Un entrenador personal de IA que corre entero en tu móvil

¿Te interesa cómo está construido por dentro? Los dos agentes están explicados paso a paso en Gymnasia: arquitectura de un agente de IA que corre en el móvil.

Descargar APK para Android
Gymnasia asistente de IA
Gymnasia pantalla principal

Qué la hace distinta

Apps de gimnasio hay muchas, y de dieta también. Lo que cambia aquí es lo que lleva dentro: un agente de IA que hace de entrenador personal.

Y no es un chat colgado al lado de la app para responder dudas sueltas. Es un agente con acceso real a tus datos: le dices «móntame una rutina de empuje para tres días» o «apunta que he comido dos huevos y una tostada» y lo hace, busca en la biblioteca de ejercicios, escribe en tu dieta del día, lee tus medidas para decidir y se acuerda de lo que le contaste la semana pasada.

Lo segundo que la hace distinta: ese agente corre entero en tu móvil. No hay ningún servidor mío por el que pasen tus datos, porque no hay servidor. La app llama directamente al proveedor de IA con una clave que pones tú, y todo lo demás, decidir qué hacer, ejecutarlo y guardarlo, ocurre dentro del teléfono. Tu peso, tu dieta y tus rutinas no salen de ahí.

El coach conversacional

Es el agente con el que hablas. Opera sobre la app a través de un catálogo de tools: busca ejercicios y alimentos, lee y escribe tu dieta, crea rutinas, apunta medidas y guarda lo que le cuentas de ti para tenerlo presente en la siguiente conversación. Su capacidad de actuar es exactamente esa lista, ni una cosa más.

Es BYOK (bring your own key): la clave de API la pones tú y se guarda en el dispositivo, así que eliges qué proveedor usar y controlas lo que gastas. Su system prompt se descarga en remoto con una copia embebida de reserva, de modo que se puede corregir sin publicar una versión nueva de la app y esta sigue funcionando sin conexión.

Se lee de arriba abajo por la columna central: eso es lo que ocurre en el tiempo. La caja de la izquierda no son pasos: son las piezas que se suman unas a otras y entran juntas en cada llamada, de ahí la flecha ancha. La de la derecha es lo que pasa cuando el modelo pide una tool. La línea discontinua clara vuelve atrás: el resultado se añade al historial y se llama otra vez. La roja es lo único que sale del dispositivo. Y las cajas de borde discontinuo son la llamada al modelo: ahí manda el proveedor, no el código de la app.
LO QUE ENTRA EN CADA LLAMADA CUANDO EL MODELO PIDE UNA TOOL +++ no + tool_result vuelta n+1 (máx. 10)
System promptremoto, con caché
Catálogo de toolsqué puede hacer
Historiallo dicho hasta ahora
ProveedorBYOK, lo pone el usuario
Usuario (chat)escribe un mensaje
Petición al proveedortodo junto, en una sola llamada
Respuesta del modelotexto y/o petición de tool
¿Pide usar una tool?
Respuesta finalal usuario, en streaming
La app ejecuta la tooldentro del móvil
Datos localesdieta · rutinas · medidas · memoria
create_feature_issuela única tool que sale del móvil

Desliza el grafo en horizontal para verlo entero.

Paso siguiente Entra en la llamada Vuelve atrás (bucle) Sale del dispositivo Fuera de tu código

El estimador de comidas

El segundo agente, independiente del primero: le haces una foto al plato y te devuelve calorías y macronutrientes. Si en la foto hay un código de barras lo lee y consulta OpenFoodFacts, así que en los productos de supermercado los datos son los reales y no una estimación a ojo. Nada se guarda en tu dieta hasta que tú das el visto bueno.

Misma lectura y mismas cajas que el grafo del coach. Ojo al desvío del código de barras: no es una alternativa a la estimación, es una vuelta más del bucle. El dato exacto vuelve al modelo y la estimación se produce igual, solo que con datos reales en vez de a ojo. Las tres cajas de borde discontinuo son llamadas al modelo.
LO QUE ENTRA EN CADA LLAMADA CUANDO EL MODELO PIDE LA TOOL ++ no + tool_result vuelta n+1 (máx. 5)
System promptpropio del estimador
Su única toolscan_barcode
Proveedorse elige aparte del chat
Usuario1–6 fotos + texto opcional
Petición al proveedortodo junto, en una sola llamada
Respuesta del modelomira las imágenes
¿Pide usar scan_barcode?
Estimaciónkcal y macros, con rangos
Segunda llamada al modelosolo si el usuario acepta: «devuélvemelo en JSON»
add_meal_food()→ dieta local del día
La app ejecuta scan_barcodedentro del móvil
OpenFoodFactsAPI pública, fuera del móvil

Desliza el grafo en horizontal para verlo entero.

Paso siguiente Entra en la llamada Vuelve atrás (bucle) Sale del dispositivo Fuera de tu código

Todo lo demás

  • Rutinas de entrenamiento

    Crea rutinas personalizadas con ejercicios, series, repeticiones y pesos. Cada rutina se puede categorizar (fuerza, cardio, flexibilidad, etc.) y personalizar con iconos. Durante el entrenamiento, un temporizador de descanso con alerta sonora te avisa cuando continuar.

  • Biblioteca de ejercicios

    Repositorio abierto de ejercicios con imágenes generadas por IA que muestran la ejecución correcta, tanto en versión masculina como femenina. Los ejercicios incluyen grupo muscular, equipamiento necesario, dificultad e instrucciones detalladas. Los usuarios pueden además crear ejercicios personalizados.

  • Seguimiento de dieta

    Registro diario de comidas con cálculo de calorías y macronutrientes (proteínas, carbohidratos y grasas), objetivos nutricionales personalizados y lectura de códigos de barras contra OpenFoodFacts.

  • Medidas corporales

    Seguimiento de peso y otras medidas corporales con historial temporal para visualizar tu progreso.

Arquitectura

La aplicación no tiene backend: los dos agentes se ejecutan enteros en el móvil, así que los datos del usuario nunca salen del dispositivo. El proyecto es un monorepo gestionado con npm workspaces que contiene:

  • apps/mobile: Aplicación Expo React Native (la superficie principal)
  • packages/shared: Tokens de diseño y tipos TypeScript compartidos
  • ejercicios/: Repositorio abierto de ejercicios (JSON + imágenes generadas con IA)

La app móvil utiliza AsyncStorage para la persistencia local y Expo SecureStore para las claves API. Las imágenes de ejercicios se sirven desde el repositorio de GitHub y se cachean en el dispositivo.

Tecnologías

  • Mobile: React Native, Expo SDK 54, TypeScript
  • IA: OpenAI, Anthropic y Google Gemini mediante adaptadores, con esquema BYOK
  • Datos nutricionales: OpenFoodFacts para la lectura de códigos de barras
  • Generación de imágenes: IA generativa para ilustraciones de ejercicios
  • Build: EAS Build para generar APKs de Android

Código fuente

El proyecto es open source y está disponible en GitHub.

Soporte

Si te ha gustado el proyecto considera darle una estrella en GitHub.

Más sobre los agentes

Si quieres más información sobre cómo está hecha la app, los dos grafos de arriba explicados paso a paso, el bucle de tools, la elección de proveedor y por qué el system prompt vive en remoto, está todo en Gymnasia: arquitectura de un agente de IA que corre en el móvil.

Seguir leyendo

Últimos posts -->

¿Has visto estos proyectos?

Gymnasia

Gymnasia Gymnasia
Expo
React Native
TypeScript
OpenAI
Anthropic

App de fitness con dos agentes que se ejecutan íntegramente en el dispositivo, sin backend, de forma que los datos del usuario nunca salen del móvil. Un coach conversacional BYOK con tools locales y system prompt remoto con fallback offline, y un estimador de comidas que saca los macronutrientes de una foto del plato, con lectura de códigos de barras contra OpenFoodFacts.

LangGraph Deep Researcher

LangGraph Deep Researcher LangGraph Deep Researcher
Python
LangGraph
FastAPI
React
TypeScript
Docker

Sistema multiagente de investigación construido con LangGraph. Un supervisor descompone tu pregunta en temas y lanza subagentes de búsqueda en paralelo; cada uno comprime sus hallazgos antes de pasarlos a un agente redactor que escribe el informe final en markdown con sus fuentes. Streaming en vivo por WebSockets, modelo configurable por rol y claves de API propias que nunca se guardan en el servidor.

Tau

Tau Tau
Python
LangChain

Sistema multiagente de tutoría para estudiantes de secundaria, con un agente por asignatura y material de curso elaborado y validado por un equipo de profesores. Llegó a usarse con alumnos reales en un colegio privado en España y en un instituto en Colombia.

Ver todos los proyectos -->
>_ Disponible para proyectos

¿Tienes un proyecto con IA?

Hablemos.

maximofn@gmail.com

Especialista en Machine Learning e Inteligencia Artificial. Desarrollo soluciones con IA generativa, agentes inteligentes y modelos personalizados.

¿Quieres ver alguna charla?

Últimas charlas -->

¿Quieres mejorar con estos tips?

Últimos tips -->

Usa esto en local

Los espacios de Hugging Face nos permite ejecutar modelos con demos muy sencillas, pero ¿qué pasa si la demo se rompe? O si el usuario la elimina? Por ello he creado contenedores docker con algunos espacios interesantes, para poder usarlos de manera local, pase lo que pase. De hecho, es posible que si pinchas en alún botón de ver proyecto te lleve a un espacio que no funciona.

Flow edit

Flow edit Flow edit

Edita imágenes con este modelo de Flow. Basándose en SD3 o FLUX puedes editar cualquier imagen y generar nuevas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos los contenedores -->
>_ Disponible para proyectos

¿Tienes un proyecto con IA?

Hablemos.

maximofn@gmail.com

Especialista en Machine Learning e Inteligencia Artificial. Desarrollo soluciones con IA generativa, agentes inteligentes y modelos personalizados.

¿Quieres entrenar tu modelo con estos datasets?

short-jokes-dataset

HuggingFace

Dataset de chistes en inglés

Uso: Fine-tuning de modelos de generación de texto humorístico

231K filas 2 columnas 45 MB
Ver en HuggingFace →

opus100

HuggingFace

Dataset con traducciones de inglés a español

Uso: Entrenamiento de modelos de traducción inglés-español

1M filas 2 columnas 210 MB
Ver en HuggingFace →

netflix_titles

HuggingFace

Dataset con películas y series de Netflix

Uso: Análisis de catálogo de Netflix y sistemas de recomendación

8.8K filas 12 columnas 3.5 MB
Ver en HuggingFace →
Ver más datasets -->