TouchGrass ๐ฟ โ Your Best Debugging Tool Might Be a Break
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
What I Built
Developers know the loop: a bug refuses to cooperate, one tab becomes twelve, and suddenly an hour has gone by without real progress. We often keep pushing because we're focused on solving the problemโnot noticing that our current approach may no longer be productive.
TouchGrass is an AI-powered cognitive-reset companion for developers. It is a browser extension that observes lightweight activity signals, such as tab-switching patterns and active/idle time, and sends a concise activity summary to a hosted backend for AI evaluation. When the pattern looks worth interrupting, TouchGrass offers a contextual break suggestion instead of relying only on a rigid timer.
The developer stays in control. They can accept the suggestion or choose โNot now.โ When they take a break, a dedicated break screen shows the countdown and allows them to return early. The reflection flow then helps them reconnect with the work they stepped away from.
The idea is simple: stepping away isn't giving up on a difficult problem. Sometimes it's part of solving it. TouchGrass is designed for developers who get deep into debugging, lose track of time, or find themselves switching between tabs without making progress. Its signals are only clues for the AI to evaluateโnot proof that a person is struggling or a diagnosis of their mental state.
Demo
- Live website: https://getoffcode.tech
- YouTube demo: https://youtu.be/ki9WYvnFCS4
- Download the extension: https://getoffcode.tech/downloads/touchgrass-extension.zip
The recording shows the real user journey: opening the website, downloading and installing the extension, enabling it, seeing an activity-based break suggestion, and using the break experience. The video is an unedited product walkthrough so viewers can see the actual implementation and behavior.
Code
GitHub repository: https://github.com/RishabhGupta949/GetOffCode-Hacktoberfest
The repository contains the browser extension, Python/FastAPI backend, landing page, and tests. The public website distributes the extension package. The backend and landing page are hosted on Render, so end users do not need to install Python or run a local server.
How I Built It
- Browser extension: Chrome Manifest V3 with JavaScript, HTML, and CSS for browser activity signals, the break experience, and the return flow.
- Backend: Python and FastAPI coordinate activity evaluation, state transitions, AI requests, and the existing application flow.
- Persistence and cache: SQLite supports application state and cache records in the current implementation.
- AI: An open-weight model is accessed through OpenRouter from the backend. Model credentials stay on the server rather than being embedded in the browser extension.
- Hosting: Render hosts the FastAPI service and static landing page.
- Domain: The live product is published at https://getoffcode.tech, using a .TECH domain as its public product address.
- Development workflow: I used OpenCode as an agent-assisted coding workflow and 21st.dev components to help create a polished landing-page experience, then tested the product manually in the browser.
A key design choice was keeping model interaction behind the backend. That lets the extension focus on the user's browser experience while model configuration and API credentials remain server-side. The normal workflow is activity signals โ AI evaluation โ user-controlled suggestion โ break โ return/reflection.
Why Does Open Innovation Matter?
An open-weight model makes the AI layer more adaptable. I can experiment with models and change the model behind the backend without rebuilding the extension around one proprietary model API. Keeping inference behind a small FastAPI boundary also separates the product's browser UX from the details of a particular model provider.
Open innovation matters for the project beyond model choice: the source code is public, the architecture can be inspected, and developers can propose improvements to how activity context is summarized and evaluated. The current version uses hosted inference through OpenRouter; it does not claim to run fully offline or keep every request on the user's device. Being transparent about that is part of building something people can trust.
Most importantly, the AI doesn't force a break. It offers a suggestion, and the user decides what happens next. The aim is to make a short reset feel like a practical part of focused workโnot another system demanding attention.
My Agent Session
Prize Categories
- Best Use of Render โ the FastAPI backend and public landing page are deployed on Render.
-
Best Use of .TECH โ the project uses
getoffcode.techas its live public domain for the product website and extension-download experience.
TouchGrass: notice the loop, take a break, come back clearer. ๐ฟ
Top comments (0)