{"slug": "a-buddy-that-helps-you-before-procrastination-gets-you", "title": "A buddy that helps you before procrastination gets you.", "summary": "A developer built SlothGuard, an open-source ambient agent that captures low-resolution screenshots every few seconds, uses SSIM comparison in scikit-image to detect when the screen has barely changed, and then asks a local open-weight model via Ollama (moondream or gemma2:2b) for a short tip delivered through offline Piper TTS and a non-blocking on-screen overlay. The project runs entirely on local tooling — mss, Pillow, tkinter and Python — to avoid sending code, stack traces and terminal output to a third-party API.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady](https://dev.to/challenges/hacktoberfest-week3-2026-10-19)*\n\nSlothGuard is an ambient local agent that quietly watches your screen and only speaks up when you appear stuck.\n\nMost AI tools force you to break focus: select text, switch windows, write a prompt, and wait. \n\nSlothGuard flips that. It runs in the background, takes low-resolution screenshots every few seconds, and detects when the screen has barely changed for a while (you’re staring at the same error, the same docs, or the same failing test). When that happens, it asks a local open-weight model for one short, calm tip and speaks it through local text-to-speech. Then it goes silent again.\n\nIt exists so developers (especially the ones coding late at night) can stay a little lazier. You don’t have to notice you’re stuck. You don’t have to decide to ask for help. The agent notices the stagnation and offers a gentle nudge only when it might actually be useful.\n\n```\n https://github.com/tan-byte/slothguard\n```\n\nSlothGuard was built entirely around local, open-source AI. Rather than utilizing a closed API, every component was picked with privacy, offline capability, and customizability in mind.\n\n| Component | Tool(s) Used | Purpose | \n|---|---|---|\n| Screen Capture | `mss` +`Pillow` | Fast, cross-platform, and low-resolution captures to minimize CPU usage. | \n| Stagnation Detection | `scikit-image` (SSIM) | Compares perceptual similarity between grayscale, downscaled frames to detect when the screen has stayed nearly identical. | \n| Local Inference | [Ollama](https://ollama.com/) with`moondream` (preferred) or`gemma2:2b` | Generates a short, context-aware tip based off of the \"stuck\" signal. Vision capable models can utilize a cropped screenshot for better context. | \n| Text-to-Speech | [Piper TTS](https://github.com/rhasspy/piper) (`en_US-lessac-medium` ) | Completely offline, neural TTS to audibly deliver the tip. | \n| On-Screen Overlay | `tkinter` ,`ctypes` , and Windows MessageBox fallbacks | A non-blocking, always-on-top popup to display the tip alongside audio for better visibility. | \n| Orchestration | `Python 3.10+` ,`PyYAML` ,`NumPy` ,`Requests` | Config loading, timing, cooldowns, and API calls to the local Ollama instance. | \n\n`config.yaml`, allowing for easy tuning between \"real use\" and \"demo\" modes.\nThe open-weight model isn't an optional add on for this project, it's the core. Without it, SlothGuard would only be a timer playing a static message. With it, a generic \"stuck\" signal is transformed into a contextually relevant nudge.\n\nA closed API version of SlothGuard would require sending screenshots containing my actual code, stack traces, terminal output, and debugging sessions to a third-party server. For something designed to run all day in the background, this was a non-negotiable privacy concern.\n\nUtilizing open-weight models locally allows for the following benefits:\n\nThis level of autonomy, privacy, and flexibility is only possible due to the open-weight ecosystem and the tools that allow for local inference.\n\nThe value of SlothGuard isn't measured by saving minutes on a singular task, it's measured by removing the miniscule bits of friction that add up over the course of a day.\n\nTraditionally, to get help when stuck, you have to go through a loop of: noticing you're stuck, deciding it's worth breaking flow for, switching contexts to ask an AI, formulating a prompt, and returning to your work.\n\nSlothGuard cuts all of these steps out. By the time your brain registers that you've been circling the same bug for far too long, there's already a gentle, local tip being spoken to you. It's not about automating the solution, it's about automating the moment of asking for help. Less self-monitoring, less activation energy, and just a tiny nudge exactly when it's needed. That is the lazy payoff.", "url": "https://wpnews.pro/news/a-buddy-that-helps-you-before-procrastination-gets-you", "canonical_source": "https://dev.to/tanishka0745/a-buddy-that-helps-you-before-procrastination-gets-you-2noj", "published_at": "2026-10-24 18:34:56+00:00", "updated_at": "2026-10-24 18:44:41.892838+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "artificial-intelligence"], "entities": ["SlothGuard", "Ollama", "moondream", "gemma2:2b", "Piper TTS", "scikit-image", "GitHub", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/a-buddy-that-helps-you-before-procrastination-gets-you", "markdown": "https://wpnews.pro/news/a-buddy-that-helps-you-before-procrastination-gets-you.md", "text": "https://wpnews.pro/news/a-buddy-that-helps-you-before-procrastination-gets-you.txt", "jsonld": "https://wpnews.pro/news/a-buddy-that-helps-you-before-procrastination-gets-you.jsonld"}}