Workout as Code

Tu entrenamiento,
como código.
Your training,
written as code.

RawTrainer es un motor de entrenamientos dirigido por archivos YAML legibles. Preparas la sesión una vez; durante el entreno la app solo la ejecuta —sin menús, sin registrar series a mano, sin distracciones. RawTrainer is a workout engine driven by human-readable YAML files. You prepare the session once; during training the app just runs it — no menus, no logging sets by hand, no distractions.

Beta privada, por invitación. Se entra con un código de un solo uso enviado a tu email — sin contraseña que recordar. Private beta, invite only. You get in with a one-time code sent to your email — no password to remember.

# Datos en YAMLYAML data # Se instala como appInstalls as an app # Retos y gruposChallenges & groups # CLI ultrarrápidaBlazing-fast CLI # Un solo motorOne engine
El problemaThe problem

La interfaz no debería competir con tu entrenamiento.The interface shouldn't compete with your workout.

En la mayoría de apps, buena parte de la sesión se va en tocar la pantalla: buscar el ejercicio, registrar cada serie, esperar animaciones. RawTrainer invierte el flujo.In most apps, a big part of the session goes into tapping the screen: finding the exercise, logging every set, waiting for animations. RawTrainer flips the flow.

Otras trainer appsOther trainer apps

  • La interfaz interrumpe: tocar, buscar, registrar serie a serie mientras entrenas.The UI interrupts: tap, search, log set-by-set while you train.
  • Requieren cuenta y sincronizan tus datos en su nube.They require an account and sync your data to their cloud.
  • Tus datos viven en un formato propietario que no controlas.Your data lives in a proprietary format you don't control.
  • Preparar y repetir una rutina exacta es engorroso.Preparing and repeating an exact routine is clunky.

RawTrainer

  • El workout se prepara antes. En la sesión solo pulsas ENTER; la app cronometra y registra por ti.The workout is prepared beforehand. In session you just press ENTER; the app times and logs for you.
  • 100% offline. Sin cuenta, sin registro, sin nube.100% offline. No account, no sign-up, no cloud.
  • Tus datos son archivos YAML en tu disco: legibles, versionables con git, tuyos.Your data is YAML files on your disk: readable, git-versionable, yours.
  • Una rutina es un archivo: cópiala, edítala, reutilízala, compártela.A routine is a file: copy it, edit it, reuse it, share it.
Cómo funcionaHow it works

Escribe. Valida. Ejecuta. Analiza.Write. Validate. Run. Analyze.

Un mismo motor, cuatro pasos, siempre sobre archivos que puedes leer. Abajo se ve en la terminal; los mismos cuatro pasos existen en la app web, botón a botón.One engine, four steps, always over files you can read. Below it's shown in the terminal; the same four steps exist in the web app, button for button.

01

EscribeWrite

Defines el entreno en YAML: WORKOUT → STAGES → JOBS → EXERCISES. En tu editor de siempre, o directamente en la app si prefieres rellenar huecos.Define the workout in YAML: WORKOUT → STAGES → JOBS → EXERCISES. In your own editor, or right in the app if you'd rather fill in blanks.

vim upper_a.yaml
02

ValidaValidate

JSON Schema comprueba la estructura; el pretty-print te muestra la sesión formateada antes de empezar.JSON Schema checks the structure; the pretty-print shows you the formatted session before you start.

rawtrainer preview-v2 upper_a.yaml
03

EjecutaRun

El runner interactivo te guía bloque a bloque. Cronometra cada uno, admite notas y solo te pide ENTER.The interactive runner guides you block by block. It times each one, takes notes, and only asks for ENTER.

rawtrainer run-v2 upper_a.yaml
04

AnalizaAnalyze

Cada sesión se guarda como log. Las stats agregan tiempo total y medio, workouts distintos y desglose.Every session is saved as a log. Stats aggregate total & average time, distinct workouts and a breakdown.

rawtrainer stats-v2
YAMLvalidarvalidatepreviewpreviewrun (terminal o móvil) (terminal or phone)log JSONJSON logstatsretoschallenges
La appThe app

La misma sesión, en el móvil del gimnasio.The same session, on your gym phone.

La CLI sigue ahí, pero ahora hay una app web sobre el mismo motor: la instalas en la pantalla de inicio y se abre a pantalla completa, sin barra de navegador. Nada de menús: eliges el entreno y empiezas.The CLI is still there, but there's now a web app on top of the same engine: install it to your home screen and it opens full screen, no browser bar. No menus: pick the workout and start.

SE INSTALAINSTALLABLE
PWA · sin tienda de appsno app store

Icono propio, pantalla completa y arranque instantáneo. Sin descargas de 200 MB ni permisos raros.Its own icon, full screen, instant start. No 200 MB download, no odd permissions.

CRONÓMETRODRIVEN TIMER
modo DRIVEN o a tu ritmoDRIVEN or own-pace

El motor construye la secuencia entera y la app la recorre: cuenta atrás por bloque, avisos de audio, vibración y la pantalla que no se apaga a mitad de serie.The engine builds the whole sequence and the app walks it: per-block countdown, audio cues, haptics, and a screen that won't sleep mid-set.

SIN PERDER NADANOTHING LOST
cola offlineoffline queue

¿Se cae el wifi del gimnasio al terminar? La sesión se guarda en el dispositivo y se sincroniza sola cuando vuelve la señal.Gym wifi drops as you finish? The session is stored on the device and syncs itself when the signal is back.

TU BIBLIOTECAYOUR LIBRARY
privada, más un fondo comúnprivate, plus a shared pool

Cada persona tiene su biblioteca y su historial, invisibles para el resto. Encima hay un fondo de entrenos compartidos que todos pueden ejecutar.Everyone has their own library and history, invisible to the rest. On top there's a shared pool of workouts anyone can run.

HISTORIAL Y PRsHISTORY & PRs
stats · marcas personalespersonal records

Cada sesión queda registrada; la app agrega tiempos, sesiones por entreno y te avisa cuando bates una marca.Every session is logged; the app aggregates times, sessions per workout, and tells you when you beat a mark.

8 TEMAS8 THEMES
claro y oscurolight and dark

Tipografía grande y contraste alto pensados para leerse de un vistazo, sudando y a un metro del suelo.Big type and high contrast, meant to be read at a glance, sweating, a metre off the floor.

Dos maneras de usarlo. En local (CLI o el servidor en tu propia máquina) sigue siendo 100 % offline y sin login: los datos no salen de tu equipo. En la beta alojada entras con un código de un solo uso y tus datos viven en un único servidor propio — sin terceros, sin analítica, sin publicidad. Two ways to run it. Locally (CLI or the server on your own machine) it stays 100% offline with no login: your data never leaves your computer. On the hosted beta you sign in with a one-time code and your data lives on a single self-run server — no third parties, no analytics, no ads.
ModosModes

Todos los formatos que entrenas, en un campo.Every format you train, in one field.

Cada bloque declara su MODE y el motor sabe cómo cronometrarlo y ejecutarlo.Each block declares its MODE and the engine knows how to time and run it.

CUSTOM
custom_sets

Series, reps, descansos y cadencia a tu medida. El modo base para fuerza e hipertrofia.Sets, reps, rests and cadence your way. The base mode for strength and hypertrophy.

TABATA
20s work / 10s rest

Intervalos de alta intensidad con rondas fijas de trabajo y descanso.High-intensity intervals with fixed work/rest rounds.

EMOM
Every Minute On the Minute

Arrancas cada minuto con un trabajo pautado; el resto del minuto, descanso.Start each minute with a set piece of work; rest the remainder.

AMRAP
As Many Rounds As Possible

Máximo de rondas o reps del circuito dentro de un tiempo dado.Max rounds or reps of the circuit within a set time.

FT
For Time

Completa el trabajo prescrito lo más rápido posible; el cronómetro manda.Complete the prescribed work as fast as possible; the clock rules.

EDT
Escalating Density Training

Máximo volumen de calidad en una ventana fija de tiempo.Maximum quality volume within a fixed time window.

LADDER
ascendente / descendenteascending / descending

Las reps suben o bajan en cada ronda con el incremento que definas.Reps climb or drop every round by the increment you define.

INTERVAL
trabajo / descanso fijosfixed work / rest

Intervalos a medida cuando el 20/10 de un Tabata no es lo que necesitas.Your own intervals, for when a Tabata's 20/10 isn't what you need.

CARRY
distancia o tiempo con cargadistance or time under load

Farmer walks y acarreos: metros o segundos bajo el peso, con sus descansos.Farmer walks and loaded carries: metres or seconds under load, with their rests.

¿No te sabes las claves de memoria? No hace falta: la guía de bloques explica modo por modo qué campos admite y qué hace el motor con ellos, con ejemplos que puedes copiar tal cual. Don't know the keys by heart? You don't have to: the block guide walks through every mode — which fields it takes and what the engine does with them, with examples you can copy as-is.
Retos, tests y gruposChallenges, tests & groups

Competir sin convertirlo en una red social.Competing without turning it into a social network.

Entrenar solo está bien; medirse contra alguien, mejor. Pero sin muros, ni likes, ni seguidores: sólo una tabla con marcas y un alias.Training alone is fine; measuring yourself against someone is better. But with no walls, no likes, no followers: just a table of marks and an alias.

RETOSCHALLENGES
tabla compartidashared leaderboard

Un workout, una tabla, un ranking. Si el reto está enlazado a un entreno, terminas la sesión en el player y la marca se ofrece sola — no la tecleas.One workout, one board, one ranking. If the challenge is linked to a workout, you finish it in the player and the mark offers itself — you don't type it.

TESTS
tu marca contra tu marcayour mark vs your mark

Benchmarks para repetir cada pocas semanas: dominadas máximas, dead hang, 2K de remo. El progreso se mide, no se recuerda.Benchmarks to repeat every few weeks: max pull-ups, dead hang, a 2K row. Progress is measured, not remembered.

GRUPOSGROUPS
privados, por invitaciónprivate, invite only

Creas un círculo, invitas por email y la tabla es sólo vuestra. Tu caja, tus colegas, tu gente del box — no el mundo entero.Create a circle, invite by email, and the board is yours alone. Your crew, your box — not the whole internet.

Tu email no se muestra nunca. En las clasificaciones apareces con el alias público que tú elijas; el email sólo sirve para entrar y para que te inviten a un grupo. Your email is never shown. On leaderboards you appear as the public alias you pick; the address is only used to sign in and to be invited to a group.
Qué aportaWhat it adds

Lo que RawTrainer hace y otras apps no.What RawTrainer does that others don't.

No es otra app de registro. Es un enfoque distinto: velocidad, privacidad y control total de tus datos.It's not another logging app. It's a different approach: speed, privacy and full control of your data.

CaracterísticaFeature RawTrainer Strong / Hevy / WOD apps *Strong / Hevy / WOD apps *
Sin registro ni contraseñasNo sign-up, no passwords En local, ni login. En la beta, un código de un solo uso.Locally, no login at all. On the beta, a one-time code. Cuenta + contraseñaAccount + password
Dónde viven tus datosWhere your data lives En tu equipo, o en un único servidor propio. Sin terceros ni analítica.On your machine, or on a single self-run server. No third parties, no analytics. Nube del fabricanteVendor cloud
Datos en formato abiertoOpen data format YAML legible + logs JSONReadable YAML + JSON logs Formato propietarioProprietary format
Versionable con gitGit-versionable Historial, diffs, ramasHistory, diffs, branches
Fricción durante la sesiónIn-session friction Cero: solo ENTERZero: just ENTER Registro manual por serieManual per-set logging
Rutinas reproducibles / plantillasReproducible routines / templates Son archivos: copia y reutilizaThey're files: copy and reuse Limitado a la appLimited to the app
Competir con quien tú quierasCompeting with whoever you choose Retos y grupos privados, con alias públicoChallenges and private groups, with a public alias Feed social o nadaSocial feed, or nothing
PrivacidadPrivacy Sin rastreo, sin publicidad, sin reventa de datosNo tracking, no ads, no data resale Datos en sus servidoresData on their servers

* Comparativa basada en el modelo habitual de estas apps (cuenta + nube). Cada una tiene sus fortalezas; RawTrainer prioriza deliberadamente velocidad, privacidad y control de datos sobre funciones sociales o de sincronización.* Comparison based on the typical model of these apps (account + cloud). Each has its strengths; RawTrainer deliberately prioritizes speed, privacy and data control over social or sync features.

FilosofíaPhilosophy

"Raw": sin capas innecesarias entre tú y el trabajo."Raw": no needless layers between you and the work.

El entrenamiento ya está pensado antes de empezar. Durante la sesión no configuras, no buscas, no registras: solo entrenas. La herramienta desaparece y deja el foco donde importa. The workout is already thought through before you start. During the session you don't configure, search or log: you just train. The tool disappears and leaves the focus where it matters.
01 · workout as code

Legible y versionableReadable & versionable

Tu entreno es texto plano: se lee, se edita y se versiona como código.Your workout is plain text: read, edit and version it like code.

02 · offline-first

Privado por defectoPrivate by default

Sin nube ni cuentas. Tus datos no salen de tu equipo.No cloud, no accounts. Your data never leaves your machine.

03 · zero friction

Sin distraccionesNo distractions

La interfaz mínima indispensable. En sesión, solo ENTER.The bare-minimum interface. In session, just ENTER.

04 · data-driven

Todo queda registradoEverything is logged

Cada sesión genera datos; el progreso se mide, no se intuye.Every session generates data; progress is measured, not guessed.

05 · you own it

Tus datos son tuyosYour data is yours

Formatos abiertos. Sin lock-in, sin intermediarios.Open formats. No lock-in, no middlemen.

06 · one engine

CLI, web y móvilCLI, web and mobile

Un único motor debajo y tres pieles finas encima. Lo que corre en el móvil es exactamente lo que corre en la terminal.One engine underneath, three thin skins on top. What runs on the phone is exactly what runs in the terminal.

Beta privadaPrivate beta

Cómo se entrabetaHow you get inbeta

La beta es pequeña y por invitación: prefiero poca gente entrenando de verdad y contándome qué falla, a mucha gente mirando. Pedir sitio cuesta un email.The beta is small and invite-only: I'd rather have a handful of people actually training and telling me what breaks than a crowd watching. Asking for a spot costs one email.

01

Pide sitioAsk for a spot

Dejas tu email y, si quieres, cómo entrenas. Nada más: ni contraseña, ni tarjeta, ni perfil.Leave your email and, if you like, how you train. Nothing else: no password, no card, no profile.

beta.rawtrainer.eu/join
02

Te doy de altaI let you in

Reviso las peticiones a mano y te aviso a ese mismo email cuando tu dirección esté habilitada.I go through the requests by hand and write to that same address once yours is enabled.

respuesta manualanswered by hand
03

Entra con un códigoSign in with a code

Pones tu email, recibes un código de un solo uso y ya estás dentro. La sesión dura un mes, así que no lo repites cada día.Type your email, get a one-time code, and you're in. The session lasts a month, so you're not doing this daily.

beta.rawtrainer.eu
04

Instálala y entrenaInstall it and train

Añádela a la pantalla de inicio, importa tus YAML (o tira de los compartidos) y a entrenar.Add it to your home screen, import your YAML files (or use the shared ones), and go train.

añadir a inicioadd to home screen

Entrena a la velocidad de una terminal.Train at terminal speed.

RawTrainer es un proyecto personal, hecho por y para quien quiere entrenar sin fricción. Se construye en abierto sobre estos principios — y con lo que cuenta quien lo usa.RawTrainer is a personal project, built by and for anyone who wants to train without friction. It's built in the open around these principles — and around what the people using it report.

¿Prefieres hablar antes? Escríbeme por codeengtools.eu. Rather talk first? Reach me through codeengtools.eu.