← All Borrowed Recipes

Recipe notebook icon

Borrowed Recipe

A pixel hero with a new water nag every break

⁠ · ~6 min read

Break reminders you won’t learn to tune out, with a new nag every time, written on your own computer.

Install Python and Ollama, copy the Break Buddy app, pull one small Gemma model, and a pixel hero pops up to tell you to drink water, rest your eyes or stretch, in the tone you pick.

A big thank-you to Kumuda Sri P for building it, sharing the code and writing up what broke along the way; you only copy commands and type one sentence.

🧾 What’s cooking

  • Why: by their account, reminder apps repeat the same sentence until your brain learns to skip it. Their fix is a reminder that’s worded differently every time.
  • The dish: Break Buddy, a Windows app that runs in the background. When a break is due, a pixel-art hero points at an RPG-style message box and types out a fresh message (Break Buddy README).
  • What it does, per the README:
    • you set it up by typing one sentence that lists each reminder, how often it comes, and the tone you want
    • a tone of your choice (sarcastic friend, calm coach, pirate and so on)
    • it holds reminders during Zoom, Google Meet, Teams and Webex windows, then shows one combined popup after the call
    • a nudge to take a proper break after 2 hours of continuous computer time
    • Snooze (10 minutes) and Done on every popup, plus a tray icon to pause, resume or quit
  • How setup reads your sentence: by their account, Pydantic and Ollama’s structured output force setup to return valid JSON, which is checked and retried up to 3 times. The README adds that it runs at temperature 0 with thinking off and shows you the result before saving.
  • Secret ingredient: the model runs on your machine through Ollama, so window titles never leave it, per the README. The message writer only sees a label like “coding” and a number of minutes, never the title itself.
  • It’s their entry in DEV’s Hacktoberfest Open-Source AI Challenge, Week 3, whose “Slow and Steady” theme asks for open-weight builds that reward laziness (DEV: Hacktoberfest Open-Source AI Challenge, Week 3).

🍳 Difficulty · ⏱️ Prep time

No coding
Difficulty 🟡 Comfortable copying commands into a terminal
Prep About 30 minutes, mostly downloads; the author puts clone to first popup at about five minutes

🛒 Ingredients

👩‍🍳 Method: no coding, just commands

  1. Install Python, Git and Ollama from the Ingredients links. Once installed, Ollama runs in the background and the ollama command works in Command Prompt or PowerShell (Ollama docs: Windows).
  2. Copy the app with the README’s first two commands below: git clone downloads the Break Buddy repo, and cd steps into its folder.
  3. The next two make a private Python space for the app and switch it on, then pip install adds the app’s parts. Python recommends a separate space like this for each project (Python docs: using Python on Windows). In PowerShell the switch-on script is Activate.ps1, and you may need to allow scripts first (Python docs: venv).
  4. ollama pull gemma4:e4b downloads the model, the app’s default (README).
  5. python setup.py asks what reminders you want. Type one sentence; it prints what it understood, and you answer y to save it (README). The first run is slow while the model loads.
  6. python breakbuddy.py starts the app. A blue icon appears near the clock; check the ^ arrow if you don’t see it (README). The commands are below, in the README’s order.
git clone https://github.com/kumudasrip/Break-Buddy.git
cd Break-Buddy
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
ollama pull gemma4:e4b
python setup.py
python breakbuddy.py

Two of the README’s example sentences, to paste at the setup prompt:

remind me to stand up every 30 min, pirate voice
drink water every hour and a half, angry gym bro

Want it to start with Windows? The README’s own last step: press Win+R, type shell:startup, add a shortcut to the app’s pythonw.exe and breakbuddy.py, then set Start in to the app folder. The README says the app can’t find your settings without that last part.

😋 Taste test

  • Quick try: set TEST_MODE = True near the top of breakbuddy.py, and minutes become seconds. Set it back to False for real use (README).
  • By their account, the small model was enough: it matched or beat the bigger ones on window labels and message quality, and caught all 7 test meetings with no false alarms.
  • Generic messages like “Time to stretch!” mean Ollama isn’t running or the model isn’t pulled (README troubleshooting).
  • Misread sentence? Answer n and rephrase (README).

🔥 Watch the stove

  • Windows only (README).
  • Meeting detection reads window titles. The README says Zoom’s home screen also holds reminders, and a call’s short “Connecting…” screen can let one slip through.
  • Idle time counts as a break, so a long video without touching the keyboard resets the screen-time counter. Reminders still pop up while you’re away and close after 25 seconds (README).
  • A solid magenta popup background? Set USE_HERO = False in breakbuddy.py for a plain popup (README).
  • Their own caveat: their model test was small (10 sentences, 36 window titles), and they wrote the correct answers themselves.

📎 Where this came from