Roni
AI Fitness Coach / Strength TrainingTypeScript / Next.jsMIT

Roni Review

An unofficial, self-hostable AI coaching companion for Tonal fitness machines built on Next.js and Convex.

Deployability
2/5
Value
3/5
Privacy
3/5

Each review covers deployability, value versus commercial alternatives, and privacy model. Tools that can run locally were started and exercised; mobile or backend-dependent tools were assessed from published builds, source code, and deploy guides. Ratings reflect what we were able to verify.

Roni — Unofficial AI Coach for Tonal Fitness Machines

A Next.js 16 + Convex self-hostable AI coaching companion for Tonal, with Gemini-powered workout programming, progressive overload tracking, and one-click workout push. Last updated: 2026-06-21.

One-sentence verdict: A niche but well-architected open-source coach for Tonal owners — useful if you already own the hardware and are comfortable deploying Convex + Vercel.


What the System Is

Roni is an AI coaching companion for Tonal fitness machines. The repository shows:

  • Next.js 16 + React 19 + TypeScript frontend with Tailwind CSS v4 and shadcn/ui.
  • Convex serverless backend for queries, mutations, actions, and real-time sync.
  • @convex-dev/auth for password-based authentication with optional Resend OTP.
  • Vercel AI SDK + Google Gemini for the AI coach with Tonal-specific tools.
  • Custom weekly training plans with periodization (Building, Deload, Testing blocks).
  • Exercise library: 800+ AI-designed movements with equipment and injury-constraint awareness.
  • One-click workout push directly to a connected Tonal machine.
  • Shared-key or bring-your-own-key (BYOK) Gemini API key support.

The deploy guide states the frontend started on http://localhost:3000, but only the landing page could be shown because login requires a real Convex project with JWT keys configured.

Key data
Category AI Fitness Coach / Strength Training
Language TypeScript / Next.js
License MIT
Self-hosted Yes (frontend + Convex backend)
AI Google Gemini via Vercel AI SDK
Database Convex (serverless)
Deployment Next.js dev server + Convex cloud project

How to Install and Deploy

cd /data2/docker/going-global/repos/roni
npm install
npx convex dev
npm run dev

Create .env.local with at least:

NEXT_PUBLIC_CONVEX_URL=https://your-deployment-name.convex.cloud
CONVEX_DEPLOYMENT=dev:your-deployment-name

Additional Convex settings required in the Convex dashboard or CLI:

  • SITE_URL
  • JWT_PRIVATE_KEY + JWKS
  • GOOGLE_GENERATIVE_AI_API_KEY
  • TOKEN_ENCRYPTION_KEY

Optional: AUTH_RESEND_KEY, NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN, NEXT_PUBLIC_SENTRY_DSN.


How to Test

The documented test flow is:

  1. Verify http://localhost:3000 shows the landing page.
  2. Complete Convex deployment and JWT configuration to enable signup/login.
  3. Register an account and connect a Tonal profile.
  4. Generate a weekly workout plan and review AI-selected exercises.
  5. Push an approved workout to Tonal and verify it appears on the device.
  6. Use the chat coach to ask about workout history or adjustments.

Because the current environment lacks a real Convex project, only the landing page was verified.


Privacy & Compliance

Roni is designed for personal fitness data, not PHI. It is not HIPAA compliant. The self-hosted model lets you control the Next.js frontend and Convex project, but Tonal credentials and workout data pass through your Convex deployment. Review Convex's terms and your own key-handling practices before storing sensitive data.


Roni vs Commercial Fitness Coaching

Dimension Roni Commercial AI Coach / Tonal Content
Cost Free / open source (BYOK or shared key) Subscription through Tonal or coaching service
Open source Yes (MIT) No
Tonal integration Connects to Tonal account; pushes workouts Official, native content
AI provider Google Gemini (BYOK or deployment key) Vendor-controlled
Setup effort High: Convex + JWT + Gemini + Tonal auth Low: sign up
Hardware requirement Tonal machine Tonal or other equipment

Who Should Use It

  • Tonal owners who want custom, AI-programmed workouts outside the official catalog.
  • Developers interested in a modern Next.js + Convex + Vercel AI SDK stack.
  • Privacy-conscious users willing to self-host their fitness coach.

Who Shouldn't Use It

  • People who do not own a Tonal machine.
  • Users who want a turnkey coaching experience without cloud backend setup.
  • Anyone needing HIPAA-compliant handling of health data.

FAQ

Is Roni officially affiliated with Tonal?

No. Roni is an independent, unofficial tool. The README explicitly states it is not affiliated with, endorsed by, or sponsored by Tonal Systems, Inc.

Can I use my own Gemini API key?

Yes. The project supports bring-your-own-key (BYOK) mode in addition to a shared deployment key.

Do I need a Convex account?

Yes. The backend runs on Convex, and authentication requires Convex deployment plus JWT key configuration.


Verdict

Roni is a niche but well-architected AI coach for Tonal owners. The Next.js + Convex + Gemini stack is modern, and the one-click workout push is a genuinely useful feature for the target audience. The barrier to entry is high: you need a Tonal, a Convex project, and JWT/Gemini setup. For that audience, it is a credible alternative to official coaching content.

Ratings: Deployability 2/5 · Value vs Commercial 3/5 · Privacy Compliance 3/5