{"repo":"JeffOtano/roni","free":true,"listed":false,"github":"https://github.com/JeffOtano/roni","clone":"git clone https://github.com/JeffOtano/roni.git","description":"Unofficial AI coach for Tonal fitness machines. Self-host your own copy or bring your own Gemini API key. Not affiliated with Tonal Systems, Inc.","language":"TypeScript","stars":23,"topics":["ai-coach","byok","convex","fitness","gemini","nextjs","self-hosted","tonal","typescript","workout-planner"],"license":null,"category":"self-hosted-apps","readme_excerpt":"Roni AI-powered custom workouts, compatible with your Tonal roni.coach [!IMPORTANT] Not affiliated with Tonal Systems, Inc. Roni is an independent, unofficial tool that works with Tonal fitness machines. \"Tonal\" is a trademark of Tonal Systems, Inc., used here under nominative fair use. This project is not endorsed by, sponsored by, or associated with Tonal Systems, Inc. in any way. What this is Roni is an AI coaching companion for Tonal fitness machines. Connect your Tonal account, and the app reads your training history, strength scores, and workout data to program custom weekly workout plans. The coach uses Google Gemini models to select exercises, manage periodization, and push approved workouts directly to Tonal with no manual builder work. It is built on Next.js and Convex with real-time sync. Who it's for This project is open-source for two reasons: technical users who want to self-host their own copy on free-tier infrastructure, and anyone who wants to audit the code to understand exactly how their Tonal credentials and workout data are handled. The code is the answer to \"are you storing my password?\" How the open-source model works Self-host. Clone the repo, spin up a Convex deployment, set the required server secrets, and run locally or deploy to Vercel. You control the infrastructure, secrets, and data handling. Instructions are in the Self-Host Setup section below. Operator-managed deployments. The codebase supports both a shared server-side Gemini key and per-use","default_branch":null,"files":null,"tree":[],"storefront":"/r/JeffOtano","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/JeffOtano/roni/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}