Deporte · IA
Entrenador de running con IA conectado al reloj Garmin
Un entrenador que mira cómo has dormido, cómo te has recuperado y lo que has corrido de verdad, y adapta las sesiones del reloj. Se usa desde la web, hablándole al reloj o desde Claude, y nunca toca Garmin sin que lo confirmes.
- Papel
- Idea, diseño y desarrollo, en solitario
- Año
- 2026
- Reloj
- Garmin Forerunner 970
- Interfaz
- Catalán, castellano e inglés
- Tecnologías
- Python
- FastAPI
- SQLite
- Garmin Connect
- Connect IQ (Monkey C)
- Claude API
- OpenAI speech-to-text
- MCP + OAuth
- Docker
- 3
- formas de usarlo: web, reloj y Claude
- 19
- herramientas del entrenador sobre tus datos
- 0
- cambios en Garmin sin tu confirmación
- 15 min
- de vida de cada propuesta, de un solo uso
La aplicación web
Funciona en el ordenador y como app en el iPhone. Todo lo que enseña sale de Garmin Connect y se guarda en el servidor, así que el entrenador puede comparar semanas y meses sin volver a pedirlo.




Capturas con datos de demostración, con la app en inglés.
En el móvil
La misma web se instala en el iPhone como una app, con Face ID y notificaciones push. Cada pantalla se adapta al móvil.

Hoy El readiness con su anillo y el consejo del día; debajo, la última carrera en el mapa. 
Actividad Las cifras de cada carrera y el recorrido con los kilómetros marcados, coloreado por ritmo o por frecuencia cardíaca. 
Entrenador El chat ocupa toda la pantalla: la sesión propuesta con su perfil y sus pasos, lista para confirmar.
En el reloj
Una app propia para el Forerunner hecha con Connect IQ. Se le habla sin sacar el móvil: pedir una sesión, ver la semana y lanzarla, moverla a otro día o preguntar cómo vas. La respuesta sale en pantalla y, si quieres, también en voz.

Le hablas Mantienes START y dices lo que quieres, por ejemplo «ponme series de 400 para mañana». 
Confirmas El entrenador propone la sesión con sus pasos y ritmos. Con START se programa en Garmin. 
Te contesta Las preguntas se responden con tus datos: kilómetros, forma, sueño o lo que toca esta semana.
Arquitectura
Una sola aplicación en un servidor pequeño, con tres entradas que se protegen de forma distinta porque cada una tiene limitaciones distintas: el reloj no puede iniciar sesión con Google y Claude no puede pasar por Cloudflare Access.
Entradas
- RelojApp Connect IQ. Llega por Bluetooth y la app Garmin Connect del iPhone, con un token de dispositivo.
- WebEn el ordenador o como app en el iPhone. Cloudflare Access con Google y después PIN o Face ID.
- ClaudeServidor MCP con OAuth 2.1 y PKCE: el mismo entrenador desde la app de Claude.
Servidor Hetzner ARM64 · Docker Compose
- Entrenador IAClaude con 19 herramientas: 11 de consulta y 8 de propuesta y escritura.
- PropuestasValidan la sesión o el plan; al confirmar se escribe con historial y deshacer.
- SincronizaciónActividades, métricas diarias, plan y zapatillas de Garmin Connect.
- VigilanteComprueba la conexión con Garmin y avisa con una notificación push si falla.
- VozTranscribe las órdenes del reloj y genera la respuesta hablada.
- SQLiteDatos de Garmin, planes, conversaciones e historial de cambios.
Servicios externos
- Garmin ConnectAPI no oficial: lee los datos y programa las sesiones, que llegan al reloj.
- AnthropicClaude, el modelo del entrenador.
- OpenAITranscripción de voz y voz de las respuestas.
Una orden de voz, de principio a fin
Qué pasa desde que le pides una sesión al reloj hasta que la tienes programada.
- GrabarEl reloj graba la orden con la app en primer plano.
- EnviarEl audio viaja por Bluetooth al iPhone y de ahí al servidor por HTTPS.
- TranscribirSe pasa a texto. El audio no se guarda.
- PensarEl entrenador consulta tu forma, el plan y tus ritmos reales con sus herramientas.
- ProponerPrepara una sesión validada y el reloj la enseña con sus pasos.
- ProgramarCon START se crea en Garmin Connect, queda en el historial y llega al reloj.
Decisiones de diseño
Nada se escribe sin confirmar
La IA solo puede crear propuestas. Cada una es de un solo uso y caduca a los 15 minutos; al confirmarla se guarda también la operación inversa, así que cualquier cambio se puede deshacer.
La contraseña de Garmin nunca llega al servidor
Garmin bloquea los inicios de sesión desde centros de datos, así que el login se hace en el ordenador y al servidor solo se suben los tokens.
Una conexión que no se rompe en silencio
La API de Garmin no es oficial y puede cambiar en cualquier momento. Un vigilante la comprueba, un panel enseña el estado de cada parte y, si algo falla, llega un aviso al móvil antes del día de salir a correr.
Garmin aislado en un solo módulo
Solo un módulo habla con Garmin. Si mañana hay que cambiar de vía, por ejemplo a la API oficial, el resto de la aplicación no se toca.
Tres puertas, tres protecciones
La web va detrás de Cloudflare Access, que la aplicación vuelve a verificar, y de un PIN o Face ID. El reloj se empareja una vez con un código de seis cifras y recibe un token revocable del que el servidor solo guarda el hash. Claude entra con OAuth.
Solo lo necesario sale fuera
A Anthropic solo van las instrucciones, la conversación y los resultados de las herramientas que pide el modelo; a OpenAI, el audio de cada orden. Los contenedores corren sin root y con el sistema de ficheros de solo lectura.
Hablemos.
Para proyectos, charlas o para hablar de cómo hacer software e IA que funcionen en producción.