This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
Meet TouchGrass Duck (aw-touchgrass)—a desktop system tray utility designed for developers and power users who spend way too many hours glued to their monitors. Here is a small video showing how it works: Youtube Link
It works by combining your actual screen-time telemetry from ActivityWatch with local, lightweight open-weight models running via Ollama. When you’ve been deep in a coding rabbit hole for too long, the app triggers animated Tkinter overlays featuring an unforgiving, witty digital duck that delivers personalized, highly contextual local AI roasts to forcefully remind you to step away, touch grass, and reset.
Code
You can check out the source code directly on GitHub:
GitHub Repo.
How I Built It
The application is built as a lightweight Python desktop app packaged cleanly via PyInstaller:
Telemetry Layer: Integrates with ActivityWatch to pull live window and activity data, detecting long, uninterrupted screen sessions.
AI Engine: Leverages local LLMs via Ollama (utilizing models like Qwen or Gemma) to dynamically generate savage, customized roasts based on how long you've been sitting down.
UI & Overlay: Built using Tkinter to render cute, lightweight animated overlays directly on the Windows system tray and desktop without hogging system memory.
Why Does Open Innovation Matter?
Building an app like TouchGrass Duck relies heavily on complete local control and privacy. Because it reads live screen telemetry and system activity, routing user behavior data through a closed third-party cloud API would be a massive privacy nightmare.
Open-weight models and local inference via Ollama make it possible to run custom intelligence directly on the user's local machine. It ensures total data privacy while enabling zero-cost, offline-first agentic behavior without API rate limits or recurring subscription fees.
Prize Categories
Open-Source AI (Local Inference & Ollama Integration)
Productivity & Desktop Utilities
Top comments (0)