C:\OKQ\BLOG.EXE _×
« C:\OKQ\MAXIME.EXE \ BLOG \ ERGY-BUILT-FOR-MYSELF
> 2026-06-08   ERGYAI

I built the tool I needed for my own training

First post in a series where I build ergy.coach in public.

A few weeks ago I put a rowing machine in my living room and started training, without a gym or a coach. I wanted to get back in shape without overthinking it. I got hooked fast, and one line stuck: having fun is good, getting better is better.

Tunturi FitRow 90i rowing machine

My erg: the Tunturi FitRow 90i by Fluid.

Then I set a target. Indoor rowing has one benchmark every rower knows, the 2000 meters. Your “2k” is your ID card. Mine became a healthy obsession: break 8 minutes. The number is clear and measurable, and ambitious enough to pull me forward each session.

A coach in a chat box, with no memory

At first I ran my training by chatting with an AI, one session at a time. The advice held up, but nothing stuck around. Each chat opened from zero, with no record of my niggles or my progress. I had an amnesiac coach.

So I started building what I wanted, ergy.coach, for the one user who matters at the start: me.

What I built

Two layers for the foundation: data and agent.

An AdonisJS API stores my sessions and holds a real user profile: my target (the 2k), my constraints, my preferences, my history. Bootstrapping the basics — npm create adonisjs@latest, migrations, typed routes — is one command. I keep reaching for it because it lets me create and prototype fast: auth, validation, Lucid ORM, and a typed stack in one repo, without gluing a backend to a separate frontend. I wrote about that in I Built a SaaS with AdonisJS 7, and I Loved It.

The database is PostgreSQL on Supabase’s free tier: real Postgres in a dedicated VM, not a JSON blob store — extensions, SQL console, Row Level Security if you need it later. The free plan gives you two active projects and 500 MB of actual data (tables and indexes, not file storage) before read-only mode kicks in; for a one-user coach logging sessions, that’s years of headroom. Supabase is also open source, so the escape hatch is self-hosting if you ever outgrow the hosted tier. The data lives in one source of truth instead of a chat thread.

Meet Ergy

The coach has a name: Ergy — hard g, like erg, not energy. ergy.coach is an indoor-rowing coxswain with one job: get you faster on the erg without the gym-bro noise.

Ergy is not a generic chatbot with a system prompt pasted on top. The identity is versioned like code: a language-neutral core (who Ergy is, what it optimises for, what it will never do) plus a voice module per language. At runtime Ergy loads the core and the module for the rower’s language — English and French today, Dutch on the roadmap. Same spine, different costume. Ergy answers in your language and never mixes them inside a message.

The agent platform

OpenClaw is what runs Ergy — not just a chat window, but the agentic platform underneath. A self-hosted gateway between messaging apps and AI agents: sessions, memory, tool use, routing. That’s where Ergy lives, calls my API, and keeps context across weeks of training. I’ll probably centralise chat in Telegram for the moment — same agent, the app already in my pocket. After a row I tell Ergy how I felt (“heavy legs,” “back’s tight,” “great rhythm today”), and it takes that into account.

The part I care about most: the agent bootstraps a plan over several weeks from my goal. I tell it “I want to break 8:00 on the 2k by the end of summer, I can row five times a week,” and it builds a structured progression across endurance, intervals, technique, and recovery.

Why start with myself

I row with this thing every session, on my own training. If it doesn’t help me get better, it won’t help anyone. And if it shaves seconds off my 2k, I have something worth opening up.

What’s next in this series

In Part 2, I get session data out of a machine that exposes no API — over Bluetooth instead.

In Part 3, I go from numbers to stroke form with a browser-based proof of concept.

★ SHARE THIS ARTICLE ★