
Roni Review
An unofficial, self-hostable AI coaching companion for Tonal fitness machines built on Next.js and Convex.
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_URLJWT_PRIVATE_KEY+JWKSGOOGLE_GENERATIVE_AI_API_KEYTOKEN_ENCRYPTION_KEY
Optional: AUTH_RESEND_KEY, NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN, NEXT_PUBLIC_SENTRY_DSN.
How to Test
The documented test flow is:
- Verify
http://localhost:3000shows the landing page. - Complete Convex deployment and JWT configuration to enable signup/login.
- Register an account and connect a Tonal profile.
- Generate a weekly workout plan and review AI-selected exercises.
- Push an approved workout to Tonal and verify it appears on the device.
- 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
