<?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: Bhavik Thakkar</title>
    <description>The latest articles on DEV Community by Bhavik Thakkar (@bhavik_thakkar_63c824f01b).</description>
    <link>https://dev.to/bhavik_thakkar_63c824f01b</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3958686%2F179adad6-7b1e-4791-b491-a55158f292ac.jpg</url>
      <title>DEV Community: Bhavik Thakkar</title>
      <link>https://dev.to/bhavik_thakkar_63c824f01b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhavik_thakkar_63c824f01b"/>
    <language>en</language>
    <item>
      <title>Groq deleted every Llama model last week. My Electron app didn't notice.</title>
      <dc:creator>Bhavik Thakkar</dc:creator>
      <pubDate>Sat, 22 Aug 2026 07:09:01 +0000</pubDate>
      <link>https://dev.to/bhavik_thakkar_63c824f01b/groq-deleted-every-llama-model-last-week-my-electron-app-didnt-notice-2b9p</link>
      <guid>https://dev.to/bhavik_thakkar_63c824f01b/groq-deleted-every-llama-model-last-week-my-electron-app-didnt-notice-2b9p</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F32776gadfi7975z6mg5x.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F32776gadfi7975z6mg5x.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last Sunday, Groq switched off every Llama model on its free and dev tiers.&lt;/p&gt;

&lt;p&gt;My desktop app runs on Groq. Every AI button in it had been calling &lt;code&gt;llama-3.3-70b-versatile&lt;/code&gt; since launch. On August 16 that model stopped existing.&lt;/p&gt;

&lt;p&gt;Nothing happened. No error reports, no broken installs, no bad-review-shaped Monday.&lt;/p&gt;

&lt;p&gt;That's not luck, and it's not a brag about my architecture — it's about four hours of unglamorous work I did a month earlier. Here's what that work actually was.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;## The thing that makes desktop different&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I found the deprecation notice in a changelog in July. If &lt;a href="https://github.com/bhavik8025/BEBO-the-PET" rel="noopener noreferrer"&gt;BEBO&lt;/a&gt; were a web app, this is a twenty-minute fix: change a string, redeploy, everyone's on the new version before lunch.&lt;/p&gt;

&lt;p&gt;Desktop doesn't work like that. &lt;strong&gt;The code is on their machine, not mine.&lt;/strong&gt; Someone who installed BEBO in June and never looked at GitHub again has no idea a deadline exists. Do nothing, and their app just… stops working one Sunday, with no explanation and no path forward.&lt;/p&gt;

&lt;p&gt;So the job was never "pick a new model." It was four jobs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick a new model&lt;/li&gt;
&lt;li&gt;Make the failure survivable if the new one has a bad day&lt;/li&gt;
&lt;li&gt;Get &lt;em&gt;existing&lt;/em&gt; users onto the new version at all&lt;/li&gt;
&lt;li&gt;Update every place the old model was named&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Number 4 took the longest. We'll get there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picking the replacement
&lt;/h2&gt;

&lt;p&gt;My constraints were narrow, which made this easy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Still free, no credit card — that's BEBO's entire pitch&lt;/li&gt;
&lt;li&gt;Fast enough that a desktop utility feels instant&lt;/li&gt;
&lt;li&gt;Good enough at short writing tasks: summarize, fix grammar, simplify&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I moved to &lt;strong&gt;&lt;code&gt;openai/gpt-oss-120b&lt;/code&gt;&lt;/strong&gt;. On Groq's LPUs it runs around &lt;strong&gt;500 tokens/second&lt;/strong&gt;, which keeps a typical task at about a second end to end. The free tier allows &lt;strong&gt;1,000 requests/day&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Worth putting that in human terms: 1,000/day is roughly &lt;strong&gt;40 tasks an hour, sustained,forever&lt;/strong&gt; — far more than anyone puts through a writing utility. My older docs quoted a higher figure that didn't survive a check against Groq's current rate-limit page, so v2 ships the number I can point at. More on that sweep later.&lt;/p&gt;

&lt;h2&gt;
  
  
  The decision I'd repeat: a list, not a swap
&lt;/h2&gt;

&lt;p&gt;Here's the part worth stealing.&lt;/p&gt;

&lt;p&gt;I didn't replace one hardcoded model with another hardcoded model. I made the model an &lt;strong&gt;ordered list&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;GROQ_MODELS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;openai/gpt-oss-120b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// primary  — best quality, ~500 tok/s&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;openai/gpt-oss-20b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;   &lt;span class="c1"&gt;// fallback — lighter, ~970 tok/s, separate quota&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And the request walks it:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;GROQ_MODELS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;callGroq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isRetryable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// rate limited / busy → try the next one&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                      &lt;span class="c1"&gt;// real error → surface it&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwmkbayy6jeula3z3i8kg.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwmkbayy6jeula3z3i8kg.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Three things this buys me.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The 20B model draws on a separate quota.&lt;/strong&gt; If someone exhausts the 120B allowance, BEBO drops to the smaller model instead of showing a dead button. Users notice dead buttons. They don't notice 120B vs 20B on &lt;em&gt;"fix this paragraph."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It catches the thing that started all of this.&lt;/strong&gt; Look at what else trips the fall-through: a 404, or an error mentioning &lt;em&gt;decommissioned&lt;/em&gt; or &lt;em&gt;deprecated&lt;/em&gt;. If Groq retires &lt;code&gt;gpt-oss-120b&lt;/code&gt; next year, BEBO doesn't break — it walks down the list and keeps working while I ship an update. I wrote that check the same week I was hand-migrating off a retired model, which is the only reason I thought to write it at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The next migration is a one-line diff.&lt;/strong&gt; The real lesson isn't "use GPT-OSS" — that recommendation has a shelf life too. It's that &lt;strong&gt;a hardcoded model name is a single point of failure with someone else's deprecation calendar attached to it.&lt;/strong&gt; A list costs nothing and turns the next announcement into a config change.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting existing users across
&lt;/h2&gt;

&lt;p&gt;A migration nobody installs is not a migration.&lt;/p&gt;

&lt;p&gt;So v2.0 also shipped an &lt;strong&gt;in-app update checker&lt;/strong&gt; that pings the GitHub releases API, plus a "What's new" popup on first launch after updating. That's the only channel I have to reach someone who installed the app and moved on.&lt;/p&gt;

&lt;p&gt;One small thing that made this much less painful — I made the installer artifacts &lt;strong&gt;version-less&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BEBO.the.PET.Setup.exe   ← not BEBO.the.PET.Setup.2.0.1.exe
BEBO-portable.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now &lt;code&gt;releases/latest&lt;/code&gt; links from the site, the README, and the in-app updater never rot. I don't have to remember to update download links across five surfaces every release — which means I won't forget to.&lt;/p&gt;
&lt;h2&gt;
  
  
  The unglamorous part: your docs are the product
&lt;/h2&gt;

&lt;p&gt;This is where it actually got long.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;llama-3.3-70b&lt;/code&gt; wasn't only in &lt;code&gt;ai-service.js&lt;/code&gt;. It was in the README. The website hero. Two FAQ answers. The pitch deck. The LinkedIn carousel. The app's own footer label, rendered on every launch.&lt;/p&gt;

&lt;p&gt;And a spec-sheet PNG with the model name &lt;strong&gt;baked into the image&lt;/strong&gt;, where no text search would ever find it. I did a full pass across every surface, regenerating images. It was boring and it took longer than the code did.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;code being right while the marketing is stale is its own kind of bug — and it's the one users hit first.&lt;/strong&gt; Someone landing on a page promising Llama 3.3 and downloading an app running GPT-OSS has been misinformed, even though the app works perfectly.&lt;/p&gt;

&lt;p&gt;If you take one process habit from this post: when you change a dependency, grep your &lt;em&gt;docs&lt;/em&gt; as hard as you grep your &lt;em&gt;source&lt;/em&gt;. Then go look at your images.&lt;/p&gt;
&lt;h2&gt;
  
  
  While I was in there
&lt;/h2&gt;

&lt;p&gt;Since v2.0 was already a disruptive release, I fixed what v1 left rough:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Colour-coded action buttons&lt;/strong&gt; — each of the six tools has its own accent, so you hit the right one without reading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dark / light theme&lt;/strong&gt; that remembers your choice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remappable global shortcuts&lt;/strong&gt; — all three, from inside the app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice input via Windows' own dictation&lt;/strong&gt; (Win + H) — zero new APIs, zero new cost; the OS already does this well, I just had to add a hint and get out of the way&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-monitor support&lt;/strong&gt; — BEBO wakes on whichever screen you're actually on&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT license + a GitHub Actions build pipeline&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of those had a hidden dependency. BEBO's "hide" shortcut used to be &lt;code&gt;Ctrl+Shift+H&lt;/code&gt;. Once I started pointing people at &lt;code&gt;Win+H&lt;/code&gt; for dictation, a near-identical hide key became a trap. Moved it to &lt;code&gt;Ctrl+Shift+B&lt;/code&gt;. &lt;strong&gt;Shortcut choices are product choices&lt;/strong&gt;, especially when you're borrowing the OS's.&lt;/p&gt;
&lt;h2&gt;
  
  
  The honesty fix
&lt;/h2&gt;

&lt;p&gt;v1's README said BEBO had &lt;strong&gt;"zero telemetry."&lt;/strong&gt; True when I wrote it.&lt;/p&gt;

&lt;p&gt;In v2 I added an anonymous install counter, because I wanted to know whether anyone was actually using this thing. The tempting move is to add the counter and leave the old sentence alone. Nobody reads READMEs that closely.&lt;/p&gt;

&lt;p&gt;I rewrote every place that claim appeared instead. BEBO now states exactly what it sends: &lt;strong&gt;a version number and a random id, once a day. Never your text, never anything personal.&lt;/strong&gt; One tick-box in settings turns it off.&lt;/p&gt;

&lt;p&gt;Same instinct as the "14,400 requests" number I'd published without checking. A counter is worth having. A claim you've quietly outgrown isn't.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I'd tell past me
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Watch your upstream.&lt;/strong&gt; I found this deadline in a changelog, not from an angry user. That was luck, and luck is a bad monitoring strategy — subscribe to your providers' deprecation feeds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never hardcode a single model.&lt;/strong&gt; A list with a fallback is barely more code and deletes an entire class of outage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship the docs with the code.&lt;/strong&gt; Including the images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A deprecation is a good excuse.&lt;/strong&gt; BEBO v2 is a much better app than v1, and it exists because a vendor forced my hand. The deadline was the reason; the polish was the opportunity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Deadline day was completely uneventful. That was the whole goal.&lt;/p&gt;


&lt;h3&gt;
  
  
  If you're running BEBO v1
&lt;/h3&gt;

&lt;p&gt;Your AI buttons stopped working on August 16. The fix takes under a minute and your saved key still works:&lt;/p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60dv2rh233afn3q5ciyo.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60dv2rh233afn3q5ciyo.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://github.com/bhavik8025/BEBO-the-PET/releases/latest" rel="noopener noreferrer"&gt;https://github.com/bhavik8025/BEBO-the-PET/releases/latest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BEBO is free and open source — issues and PRs welcome.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bhavik8025" rel="noopener noreferrer"&gt;
        bhavik8025
      &lt;/a&gt; / &lt;a href="https://github.com/bhavik8025/BEBO-the-PET" rel="noopener noreferrer"&gt;
        BEBO-the-PET
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🤖 BEBO the PET — An animated AI desktop companion that lives on your Windows desktop. Always on top, always ready. Click to open a sleek AI panel powered by GPT-OSS 120B via Groq. Summarize, humanize, simplify, draft emails, fix grammar &amp;amp; ask anything. Built with Electron + Node.js.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🤖 BEBO the PET — AI Desktop Companion&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/bhavik8025/BEBO-the-PET/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9dd3298b58af1f667ee8b2e5bbd3caefc067435521e129afd7504a78ac67ee0f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f62686176696b383032352f4245424f2d7468652d5045542f746f74616c3f7374796c653d666f722d7468652d626164676526636f6c6f723d376335636663266c6162656c3d444f574e4c4f414453" alt="Downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bhavik8025/BEBO-the-PET/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ed09372ad24339d989a4991e2aebcf8b4cf7d3d9d42e0c073ccccd6efd15cac3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f62686176696b383032352f4245424f2d7468652d5045543f7374796c653d666f722d7468652d626164676526636f6c6f723d323264336565266c6162656c3d4c4154455354" alt="Latest Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bhavik8025/BEBO-the-PET/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f16d90741c9af3b637cd5f31246e2989cf3a78c8f25afdab2306e734e6d80540/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c4943454e53452d4d49542d3130623938313f7374796c653d666f722d7468652d6261646765" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A tiny animated AI pet that lives on your Windows desktop. Click it, get superpowers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://bhavik8025.github.io/BEBO-the-PET/" rel="nofollow noopener noreferrer"&gt;https://bhavik8025.github.io/BEBO-the-PET/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://github.com/bhavik8025/BEBO-the-PET/releases/latest" rel="noopener noreferrer"&gt;https://github.com/bhavik8025/BEBO-the-PET/releases/latest&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is BEBO?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;BEBO is a &lt;strong&gt;desktop AI productivity assistant&lt;/strong&gt; disguised as an adorable animated pet. It lives in the corner of your screen at all times — always on top, always ready. One click opens a sleek assistant panel powered by &lt;strong&gt;GPT-OSS 120B&lt;/strong&gt; via the &lt;strong&gt;Groq API&lt;/strong&gt;, letting you summarize documents, write emails, fix grammar, simplify complex text, humanize AI-generated content, or ask anything — all without switching windows or opening a browser.&lt;/p&gt;
&lt;p&gt;Built entirely with &lt;strong&gt;Electron + Node.js&lt;/strong&gt;, BEBO runs natively on Windows with zero browser needed.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🐾 Animated Desktop Pet&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Lives permanently on your Windows desktop — always on top, always visible&lt;/li&gt;
&lt;li&gt;Smooth CSS animations — idle float, happy bounce, thinking pulse, excited wiggle, and more&lt;/li&gt;
&lt;li&gt;Fully…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bhavik8025/BEBO-the-PET" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Has an upstream deprecation ever broken something you'd already shipped? I'm curious how other people handle the "users have the old binary" problem — it feels like the part of shipping desktop software nobody warns you about.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>electron</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a free AI desktop pet for Windows powered by Llama 3.3 70B</title>
      <dc:creator>Bhavik Thakkar</dc:creator>
      <pubDate>Mon, 01 Jun 2026 08:07:08 +0000</pubDate>
      <link>https://dev.to/bhavik_thakkar_63c824f01b/i-built-a-free-ai-desktop-pet-for-windows-powered-by-llama-33-70b-2j8i</link>
      <guid>https://dev.to/bhavik_thakkar_63c824f01b/i-built-a-free-ai-desktop-pet-for-windows-powered-by-llama-33-70b-2j8i</guid>
      <description>&lt;p&gt;I built &lt;strong&gt;BEBO the PET&lt;/strong&gt;, a free open-source AI desktop companion for Windows.&lt;/p&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%2Fdz5ktnl05jzgqin0frvm.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%2Fdz5ktnl05jzgqin0frvm.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple: instead of opening a browser every time you need quick AI help, BEBO lives on your desktop as a small animated assistant. Click it, and a compact panel opens with focused writing tools: summarize, draft email, fix grammar, simplify text, humanize AI-written text, and ask general questions.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://bhavik8025.github.io/BEBO-the-PET/" rel="noopener noreferrer"&gt;https://bhavik8025.github.io/BEBO-the-PET/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/bhavik8025/BEBO-the-PET" rel="noopener noreferrer"&gt;https://github.com/bhavik8025/BEBO-the-PET&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="https://github.com/bhavik8025/BEBO-the-PET/releases/tag/v1.0.0" rel="noopener noreferrer"&gt;BEBO the PET v1.0.0 for Windows&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I kept running into the same tiny productivity friction: I wanted AI help, but I did not always want to open a browser, switch tabs, sign in somewhere, paste text into a large chat window, and then switch back to what I was doing.&lt;/p&gt;

&lt;p&gt;Most AI tools are powerful, but they still feel like a separate destination. I wanted something closer to a desktop utility: always nearby, fast to open, and focused on the small writing tasks people repeat every day.&lt;/p&gt;

&lt;p&gt;That became BEBO.&lt;/p&gt;

&lt;h2&gt;
  
  
  What BEBO does
&lt;/h2&gt;

&lt;p&gt;BEBO currently has six focused actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summarize&lt;/strong&gt;: turn long text into a clear short summary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draft Email&lt;/strong&gt;: turn notes or intent into a professional email&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix Grammar&lt;/strong&gt;: clean grammar, spelling, and punctuation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplify&lt;/strong&gt;: rewrite complex text in plain language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Humanize&lt;/strong&gt;: make robotic AI text sound more natural&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask AI&lt;/strong&gt;: use a general prompt when the fixed tools are not enough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also supports keyboard shortcuts, a system tray menu, draggable positioning, and a resizable assistant panel.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;BEBO is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Electron&lt;/strong&gt; for the Windows desktop app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; for the main process and app logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla HTML, CSS, and JavaScript&lt;/strong&gt; for the pet and assistant panel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Groq API&lt;/strong&gt; for fast inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Llama 3.3 70B Versatile&lt;/strong&gt; as the model behind the AI actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I kept the frontend simple on purpose. For this kind of app, speed and reliability matter more than framework complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the app is structured
&lt;/h2&gt;

&lt;p&gt;The app uses two main windows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A transparent pet window that stays on the desktop&lt;/li&gt;
&lt;li&gt;An assistant panel window that opens near the pet when needed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The pet communicates with the main Electron process through IPC. When the user clicks BEBO or uses a shortcut, the main process toggles the assistant panel. When the user runs an AI task, the panel sends the input to the main process, which calls the Groq API and returns clean plain text back to the UI.&lt;/p&gt;

&lt;p&gt;That structure made the app feel more native and less like a webpage wrapped in a desktop shell.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small UX decision I cared about
&lt;/h2&gt;

&lt;p&gt;I did not want BEBO to become another giant chatbot window. The panel is intentionally focused around tasks people actually repeat:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"summarize this"&lt;/li&gt;
&lt;li&gt;"make this email sound professional"&lt;/li&gt;
&lt;li&gt;"fix this paragraph"&lt;/li&gt;
&lt;li&gt;"explain this more simply"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That constraint helped keep the app lightweight.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;The biggest lesson was that desktop AI tools need a different rhythm from web AI tools. On the desktop, the assistant should feel fast, nearby, and low-friction. If opening the tool feels heavy, people will just go back to the browser.&lt;/p&gt;

&lt;p&gt;I also learned that small product details matter a lot in Electron apps: panel positioning, always-on-top behavior, tray actions, keyboard shortcuts, and clean IPC boundaries all affect whether the app feels polished.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would like feedback on
&lt;/h2&gt;

&lt;p&gt;I would love feedback from developers and Windows users on three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the desktop-pet interface useful, or should the app become more minimal?&lt;/li&gt;
&lt;li&gt;Which AI actions should be added next?&lt;/li&gt;
&lt;li&gt;Should BEBO stay a lightweight utility, or grow into a larger productivity assistant?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is free and open-source, so issues, ideas, and pull requests are welcome.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://bhavik8025.github.io/BEBO-the-PET/" rel="noopener noreferrer"&gt;BEBO the PET&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/bhavik8025/BEBO-the-PET" rel="noopener noreferrer"&gt;bhavik8025/BEBO-the-PET&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
