<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: hari balaji</title>
    <description>The latest articles on DEV Community by hari balaji (@haribalaji_b).</description>
    <link>https://dev.to/haribalaji_b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F829424%2F3aad78fc-b59d-4082-ada5-4ee1c0535b61.jpeg</url>
      <title>DEV Community: hari balaji</title>
      <link>https://dev.to/haribalaji_b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/haribalaji_b"/>
    <language>en</language>
    <item>
      <title>How I built my own Personal AI Coach — For Free and stopped paying for fitness apps</title>
      <dc:creator>hari balaji</dc:creator>
      <pubDate>Tue, 02 Jun 2026 17:02:44 +0000</pubDate>
      <link>https://dev.to/haribalaji_b/how-i-built-my-own-personal-ai-coach-for-free-and-stopped-paying-for-fitness-apps-2ocg</link>
      <guid>https://dev.to/haribalaji_b/how-i-built-my-own-personal-ai-coach-for-free-and-stopped-paying-for-fitness-apps-2ocg</guid>
      <description>&lt;h2&gt;
  
  
  A bit about me
&lt;/h2&gt;

&lt;p&gt;I am a regular runner and I use these apps frequently -  Strava, Runna, and Garmin connect.&lt;/p&gt;

&lt;p&gt;These are the gears I use:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Garmin vivoactive 4&lt;/li&gt;
&lt;li&gt;Skechers go run consistent&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My workflow
&lt;/h2&gt;

&lt;p&gt;I record my activity using my watch and it uploads it to Garmin connect. I've already enabled the Garmin-Strava integration so all activities are automatically pushed to Strava. For workout plans, I used to rely on Garmin Connect's workouts and Runna's workouts. The former is free but the experience is not very intuitive. And Runna's was very good and is very interactive. But you have to pay Runna to access it. While I enjoyed my trial period with Runna, I did not want to pay for both Strava and Runna.&lt;/p&gt;

&lt;p&gt;And I ended up setting up an Agent that acts as a Coach who's available 24x7 on telegram. &lt;/p&gt;

&lt;h3&gt;
  
  
  This is how I have been using it:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I tell my goal and get a workout plan. This is calculated based on my previous activities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvae8481o97qle7qdrkdh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvae8481o97qle7qdrkdh.png" alt="chat image" width="738" height="1672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Last week I had to travel all of a sudden which disrupted my workout plan. So asked it for a modified plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83b3wzqg6hhtgw3r1na1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83b3wzqg6hhtgw3r1na1.png" alt="chat image" width="756" height="942"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I ask it to review my latest activity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqwnhy1fwxe9n6ujc0hd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqwnhy1fwxe9n6ujc0hd.png" alt="chat image" width="800" height="1303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I spoke to it literally. I informed that my legs are sore and asked it's advice. This is what it had to say to me:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmd3rli88911vwxd1xych.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmd3rli88911vwxd1xych.png" alt="chat image" width="800" height="962"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This suits very well for me and now, onto the setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Set Up My AI Coach
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Installed Picoclaw
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.picoclaw.io/docs/installation/" rel="noopener noreferrer"&gt;Picoclaw&lt;/a&gt; is the brain of the operation. It's a lightweight, open-source AI assistant that runs locally on your machine. I followed the &lt;a href="https://docs.picoclaw.io/docs/installation/" rel="noopener noreferrer"&gt;installation guide&lt;/a&gt; to get it running on my setup.&lt;/p&gt;

&lt;p&gt;Picoclaw connects to your AI model of choice and gives you a local chat interface — think of it as your coach's "home base."&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Added Skills
&lt;/h3&gt;

&lt;p&gt;Skills extend what the coach can do. Here's what I installed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Garmin Health Analysis&lt;/strong&gt; — [&lt;a href="https://clawhub.ai/eversonl/garmin-health-analysis" rel="noopener noreferrer"&gt;Install&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;I use a Garmin watch, so this skill was essential. It connects my Garmin data to the AI coach. Once installed, my coach could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read my workout history&lt;/strong&gt; — every run, ride, swim, and walk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze metrics&lt;/strong&gt; — heart rate zones, pace trends, sleep quality, Body Battery, HRV, and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track progress over time&lt;/strong&gt; — "How's my 5K pace trending over the last month?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My coach uses this data to make &lt;strong&gt;informed decisions&lt;/strong&gt; about my training plan. It's not guessing — it's looking at my actual numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weather&lt;/strong&gt; — [&lt;a href="https://clawhub.ai/steipete/weather" rel="noopener noreferrer"&gt;Install&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;I added this one so the coach would know the weather before building my daily plan. Now it factors in temperature, humidity, and conditions — so my interval session doesn't land on the hottest day of the week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS Local Voice&lt;/strong&gt; &lt;em&gt;(optional, recommended if you use a mac)&lt;/em&gt; — [&lt;a href="https://clawhub.ai/strrl/macos-local-voice" rel="noopener noreferrer"&gt;Install&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Typing after a run with sweaty fingers is annoying. This skill lets me send voice messages that the coach transcribes and responds to — using Apple's native Speech framework, fully offline. No API keys needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Connected a Telegram Bot using the below steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram and search for &lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Send &lt;code&gt;/newbot&lt;/code&gt; and follow the prompts to create a bot&lt;/li&gt;
&lt;li&gt;Copy the &lt;strong&gt;API token&lt;/strong&gt; BotFather gives you&lt;/li&gt;
&lt;li&gt;Add the token to your Picoclaw config&lt;/li&gt;
&lt;li&gt;Restart Picoclaw&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  And that's it !
&lt;/h3&gt;

&lt;p&gt;The whole setup takes about 30 minutes. You get a coach that knows your body, checks the weather, adapts to your life, and never charges you a rupee.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openclaw</category>
      <category>fitness</category>
      <category>programming</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>hari balaji</dc:creator>
      <pubDate>Mon, 16 Feb 2026 18:21:42 +0000</pubDate>
      <link>https://dev.to/haribalaji_b/-4khl</link>
      <guid>https://dev.to/haribalaji_b/-4khl</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/axrisi/chromes-webmcp-early-preview-the-end-of-ai-agents-clicking-buttons-b6e" class="crayons-story__hidden-navigation-link"&gt;Chrome’s WebMCP Early Preview: the end of “AI agents clicking buttons”&lt;/a&gt;
    &lt;div class="crayons-article__cover crayons-article__cover__image__feed"&gt;
      &lt;iframe src="https://www.youtube.com/embed/-Hr7EPcaS8s" title="Chrome’s WebMCP Early Preview: the end of “AI agents clicking buttons”"&gt;&lt;/iframe&gt;
    &lt;/div&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/axrisi" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3226798%2F0c0a8594-658c-4146-a639-8068ede85f67.jpg" alt="axrisi profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/axrisi" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nikoloz Turazashvili (@axrisi)
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nikoloz Turazashvili (&lt;a class="mentioned-user" href="https://dev.to/axrisi"&gt;@axrisi&lt;/a&gt;)
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3245166" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/axrisi" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3226798%2F0c0a8594-658c-4146-a639-8068ede85f67.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nikoloz Turazashvili (@axrisi)&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/axrisi/chromes-webmcp-early-preview-the-end-of-ai-agents-clicking-buttons-b6e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 10&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/axrisi/chromes-webmcp-early-preview-the-end-of-ai-agents-clicking-buttons-b6e" id="article-link-3245166"&gt;
          Chrome’s WebMCP Early Preview: the end of “AI agents clicking buttons”
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/news"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;news&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/axrisi/chromes-webmcp-early-preview-the-end-of-ai-agents-clicking-buttons-b6e" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;64&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/axrisi/chromes-webmcp-early-preview-the-end-of-ai-agents-clicking-buttons-b6e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              13&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>ai</category>
      <category>news</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
