<?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: Aadi Jain</title>
    <description>The latest articles on DEV Community by Aadi Jain (@thrizzio).</description>
    <link>https://dev.to/thrizzio</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%2F4155676%2F83d71bbf-37b8-4151-b159-4842955e0f83.png</url>
      <title>DEV Community: Aadi Jain</title>
      <link>https://dev.to/thrizzio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thrizzio"/>
    <language>en</language>
    <item>
      <title>SlothOps: An Autonomous AI Coding Factory That Works While You Sleep</title>
      <dc:creator>Aadi Jain</dc:creator>
      <pubDate>Sat, 24 Oct 2026 18:32:24 +0000</pubDate>
      <link>https://dev.to/thrizzio/slothops-an-autonomous-ai-coding-factory-that-works-while-you-sleep-3k3j</link>
      <guid>https://dev.to/thrizzio/slothops-an-autonomous-ai-coding-factory-that-works-while-you-sleep-3k3j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest"&gt;Hacktoberfest Open-Source AI Challenge&lt;/a&gt; Week 3: Slow and Steady&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;SlothOps&lt;/strong&gt; is an autonomous software-maintenance system that takes repetitive GitHub issue-to-PR work off a developer's hands. Instead of manually investigating every issue, tracing dependencies, implementing fixes, running tests, and writing PR descriptions, you queue up eligible issues and let the factory work through them.&lt;/p&gt;

&lt;p&gt;The goal is simple: &lt;strong&gt;wake up to investigated issues, isolated code changes, test results, and draft pull requests ready for human review.&lt;/strong&gt; This is not another chatbot suggesting code snippets. It is a persistent engineering workflow that carries tasks across multiple steps, recovers from failures, and preserves progress without requiring a human to supervise every tool call.&lt;/p&gt;

&lt;p&gt;The project is deliberately conservative about irreversible actions. It prepares code and draft PRs, but it does not merge its own work. Reliability and verifiability matter more than PR volume.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Working project under active development.&lt;/em&gt; The current development target is &lt;code&gt;Recon-OS&lt;/code&gt;, a repository with multiple issues involving data loaders and document ingestion. The factory has been used to prepare feature PRs for plain text, Markdown, JSON, HTML, CSV, and remote URL ingestion.&lt;/p&gt;

&lt;p&gt;Live end-to-end demonstration with real workers and review feedback is the next milestone. Recent smoke tests encountered provider timeouts and free-tier limits, which is exactly the kind of failure the orchestration layer is designed to handle gracefully.&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&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/Thrizzio" rel="noopener noreferrer"&gt;
        Thrizzio
      &lt;/a&gt; / &lt;a href="https://github.com/Thrizzio/agent-factory" rel="noopener noreferrer"&gt;
        agent-factory
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;agent-factory&lt;/h1&gt;

&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Thrizzio/agent-factory" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python orchestrator and SQLite:&lt;/strong&gt; Python acts as the control plane. SQLite stores durable task state and supports recovery, retry tracking, and reconciliation. The model is not the source of truth for whether a task completed—that status must come from recorded state and verifiable outcomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple AI workers:&lt;/strong&gt; The system uses different workers for reasoning, implementation, and review. The current setup has explored &lt;code&gt;OmniRush&lt;/code&gt;, &lt;code&gt;Antigravity&lt;/code&gt;, and the &lt;code&gt;OpenCode CLI&lt;/code&gt;, with different models and availability constraints. Worker selection and fallback distinguish successful execution from errors, timeouts, unavailable services, and situations requiring human intervention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git and GitHub integration:&lt;/strong&gt; Git worktrees provide task isolation—concurrent or unfinished tasks cannot contaminate one another. GitHub is used to retrieve issues, communicate progress, push branches, and create or update draft PRs. The factory reconciles remote state before retrying operations, so an interruption after a successful GitHub action does not produce duplicate comments or PRs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Reliability Problems I Am Trying to Solve
&lt;/h3&gt;

&lt;p&gt;Building the happy path is only part of the project. Much of the engineering effort goes into the failure cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long-running subprocesses:&lt;/strong&gt; Workers may stall or fail without useful messages. The orchestrator needs real deadlines, non-blocking supervision, bounded output collection, and process cleanup. A silent log is not proof that a process is stuck.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worker availability and fallback:&lt;/strong&gt; AI services run out of capacity, hit usage limits, or become unavailable. The system classifies failures, applies bounded retries with backoff, and preserves work instead of endlessly launching new attempts. Fallback is not permission to weaken the review policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotent GitHub operations:&lt;/strong&gt; An operation can succeed remotely even if the local process crashes before recording the result. The factory reconciles GitHub comments and PR state with SQLite records before retrying.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changes across multiple PRs:&lt;/strong&gt; Several PRs may modify related interfaces. The system detects stale branches, resolves conflicts carefully, reruns checks, and obtains fresh reviews when code changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quality and Safety Gates
&lt;/h3&gt;

&lt;p&gt;The factory is designed around deliberate constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No automatic merging&lt;/strong&gt; or automatic merge enablement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Required reviewers&lt;/strong&gt; must approve the exact same final commit SHA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changes made after review&lt;/strong&gt; require fresh review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failed or unavailable reviewers&lt;/strong&gt; do not count as approvals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repair attempts&lt;/strong&gt; are bounded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uncertain or unsafe situations&lt;/strong&gt; are marked as &lt;code&gt;blocked&lt;/code&gt; instead of being silently treated as success.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;An autonomous coding system should be allowed to do repetitive work, but it should not be allowed to redefine success just because it ran out of time or model capacity.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;The broader goal is to make autonomous coding workflows inspectable, adaptable, and less dependent on a single proprietary service. Open-source agent tooling and open-weight models make it possible to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inspect and customize the execution harness:&lt;/strong&gt; A developer should understand and change how the automation works, rather than accepting an opaque agent's decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swap models or providers&lt;/strong&gt; when availability, cost, or quality changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run suitable models locally&lt;/strong&gt; or on infrastructure under the developer's control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep repository code and task data&lt;/strong&gt; within a chosen environment when the deployment supports it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproduce and improve the workflow&lt;/strong&gt; without depending entirely on a closed, fixed implementation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Note on the current implementation:&lt;/em&gt; The orchestration layer is Python and SQLite, but some workers rely on hosted AI services. The current system should not be described as fully offline, fully local, or entirely powered by open-weight models. Those are deployment possibilities to investigate and demonstrate, not claims to make without evidence.&lt;/p&gt;

&lt;p&gt;The open-source approach matters because the developer should be able to understand and change how the automation works. A closed API would make the workflow a black box—you could submit issues and hope for PRs, but you could not inspect the review logic, modify the safety gates, or run the entire pipeline on your own hardware.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;DevRelay session coming soon.&lt;/em&gt; This project was built in an extended pair-programming session exploring orchestration architecture, failure classification, and worktree isolation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SlothOps&lt;/strong&gt; is designed to reward a developer for doing less repetitive work without lowering the quality bar.&lt;/p&gt;

&lt;p&gt;Software maintenance involves a surprising amount of tedious work. Even a small issue can require reading unfamiliar code, tracing dependencies, reproducing a bug, implementing a fix, running the correct checks, preparing a PR, and responding to feedback. That is a &lt;strong&gt;15–25 minute context-rebuild tax&lt;/strong&gt; before any real engineering starts—&lt;em&gt;per issue&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;With SlothOps, you queue an eligible issue and return to review the evidence and proposed changes. The factory handles the investigation and implementation workflow. You spend your attention on architecture, difficult decisions, and the changes that actually require human judgment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The central idea:&lt;/strong&gt; Laziness and engineering discipline do not have to conflict. Good automation handles the repetitive work while preserving the checks that make the result trustworthy.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Categories pending final review of partner requirements. Primary fit:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Open-Source AI&lt;/strong&gt; — SlothOps is built around the principle that autonomous coding workflows should be inspectable, adaptable, and not locked to a single provider. The orchestration layer and safety gates are fully open, and the architecture explicitly supports swapping models and providers.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;SlothOps is a work in progress. The goal is to establish that the factory can reliably complete a task, not merely that it can start one. The strongest demonstration would begin with a real, appropriately scoped issue and end with a draft PR that includes a clear explanation, an isolated reviewable implementation, reproducible test results, independent review against the final commit, natural GitHub communication, a recoverable task history, and no hidden bypasses when a worker fails.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Focus67Dumby: A 100% Offline, Vision-Aware Sticky Note That Tells Coding Tutorials from Brain-Rot</title>
      <dc:creator>Aadi Jain</dc:creator>
      <pubDate>Sat, 17 Oct 2026 19:00:28 +0000</pubDate>
      <link>https://dev.to/thrizzio/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials-from-brain-rot-49h5</link>
      <guid>https://dev.to/thrizzio/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials-from-brain-rot-49h5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  The Problem: The "Coding Tutorial vs. Brain-Rot" Dilemma
&lt;/h3&gt;

&lt;p&gt;As developers, students, and freelancers, we all know the pain of opening YouTube to watch a 15-minute system design breakdown or documentation walkthrough—and waking up 45 minutes later deep in a YouTube Shorts or gaming rabbit hole. &lt;/p&gt;

&lt;p&gt;Existing productivity tools fail developers in two ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Traditional Website Blockers (Cold Turkey, Freedom):&lt;/strong&gt; They are blunt hammers. They block &lt;em&gt;all&lt;/em&gt; of YouTube or Reddit indiscriminately, which immediately breaks your workflow when you actually need a coding tutorial or debugging thread.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud AI Activity Trackers (Rize, Reclaim):&lt;/strong&gt; They charge $15+/month subscriptions to continuously stream your window titles, private repo names, and screen activity to third-party servers—an absolute non-starter for privacy-conscious engineers or freelancers working under client NDAs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Solution: Focus67Dumby
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Focus67Dumby&lt;/strong&gt; is an ultra-lightweight, 100% offline floating sticky-note accountability companion powered by local open-weight models (&lt;code&gt;gemma4:e2b&lt;/code&gt;, &lt;code&gt;gemma4:e4b&lt;/code&gt;, &lt;code&gt;qwen3-vl:2b&lt;/code&gt;, &lt;code&gt;gemma3:1b&lt;/code&gt;, and &lt;code&gt;gemma3:270m&lt;/code&gt;) via &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It sits quietly in the corner of your screen like a minimalist &lt;code&gt;350x530&lt;/code&gt; dark-amber sticky note. You lock in what you are working on (e.g., &lt;em&gt;"Fix Express auth middleware"&lt;/em&gt;), pick a sprint duration (&lt;code&gt;25m&lt;/code&gt;), and choose your local Ollama model. In the background, it observes your active window transitions and downscaled in-memory screenshots (&lt;code&gt;512x288&lt;/code&gt;) to distinguish productive work and relevant tutorials from off-task entertainment—nudging you back on track without ever sending a single byte of data to the cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Would Pay For It? (The Side Hustle Model)
&lt;/h3&gt;

&lt;p&gt;Developers, indie hackers, and remote freelancers suffer from horrific subscription fatigue. Because &lt;strong&gt;Focus67Dumby&lt;/strong&gt; runs 100% on the user's local hardware via Ollama, our marginal cloud inference cost is &lt;strong&gt;$0.00&lt;/strong&gt;. That allows us to sell the packaged Pro Desktop Edition as a &lt;strong&gt;$19 One-Time Lifetime License&lt;/strong&gt; (zero recurring monthly fees, zero cloud telemetry) alongside a free self-built open-source edition.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Product Landing Page &amp;amp; Interactive Checkout Demo:&lt;/strong&gt; &lt;a href="https://focus67dumby-landing-page.onrender.com/" rel="noopener noreferrer"&gt;https://focus67dumby-landing-page.onrender.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Desktop Application &amp;amp; Source Code:&lt;/strong&gt; &lt;a href="https://github.com/Thrizzio/Focus67Dumby" rel="noopener noreferrer"&gt;https://github.com/Thrizzio/Focus67Dumby&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Tip: On the live landing page, you can interact with the Sticky Note preview directly, test the checkout flow, and explore the local architecture!)&lt;/em&gt;&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%2F3mgj3429yvd5lu1jwz0z.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%2F3mgj3429yvd5lu1jwz0z.png" alt="Focus67Dumby live product landing page and floating desktop sticky note preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&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/Thrizzio" rel="noopener noreferrer"&gt;
        Thrizzio
      &lt;/a&gt; / &lt;a href="https://github.com/Thrizzio/Focus67Dumby" rel="noopener noreferrer"&gt;
        Focus67Dumby
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A tiny, privacy-first desktop accountability widget that uses local open-weight AI (Ollama + Gemma) to tell coding tutorials apart from YouTube rabbit holes.
    &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;📌 FocusDumbyDumb (FocusSticky)&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Stop blocking all of YouTube. Just block the brain-rot.&lt;/strong&gt;&lt;br&gt;
An ultra-lightweight, 100% offline floating sticky-note accountability partner powered by tiny local open-weight models (&lt;code&gt;gemma3:270m&lt;/code&gt; / &lt;code&gt;gemma2:2b&lt;/code&gt;) via Ollama.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;💡 Why This Exists&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Traditional website blockers are blunt hammers—they either block YouTube completely (breaking your workflow when you need a system design breakdown or documentation tutorial) or let you slip into a 45-minute Shorts rabbit hole. Meanwhile, cloud AI productivity trackers stream your private window titles and screen data to third-party servers while charging a monthly subscription.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FocusDumbyDumb&lt;/strong&gt; lives as a tiny, frameless sticky note in the corner of your screen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Lock in your goal &amp;amp; timer&lt;/strong&gt; (e.g., &lt;em&gt;"Fix Express auth middleware — 45 mins"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick your local model&lt;/strong&gt; dynamically from your Ollama installation (&lt;code&gt;gemma3:270m&lt;/code&gt; uses &amp;lt;400MB RAM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay accountable privately:&lt;/strong&gt; A background watcher evaluates active window changes locally in ~40ms. Coding tutorials pass…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Thrizzio/Focus67Dumby" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Focus67Dumby&lt;/strong&gt; was engineered around small, fast open-weight models running locally through the &lt;strong&gt;Ollama REST API&lt;/strong&gt; (&lt;code&gt;http://127.0.0.1:11434&lt;/code&gt;), wrapped in a modular Python 3.11 desktop architecture (&lt;code&gt;CustomTkinter&lt;/code&gt; + &lt;code&gt;Win32 ctypes&lt;/code&gt; + &lt;code&gt;Pillow&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Local Open-Weight Models Used (Gemma &amp;amp; Qwen)
&lt;/h3&gt;

&lt;p&gt;Through live discovery via Ollama's &lt;code&gt;GET /api/tags&lt;/code&gt;, the sticky note dynamically populates a dropdown so users can hot-swap models based on their hardware:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;gemma4:e2b&lt;/code&gt; &amp;amp; &lt;code&gt;gemma4:e4b&lt;/code&gt; (Primary Multimodal Vision + Text Engine):&lt;/strong&gt; Google's compact open-weight Gemma models evaluate both the foreground window title and a compressed &lt;code&gt;512x288&lt;/code&gt; base64 screenshot payload via &lt;code&gt;POST /api/generate&lt;/code&gt; in strict JSON mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;gemma3:270m&lt;/code&gt; &amp;amp; &lt;code&gt;gemma3:1b&lt;/code&gt; (Ultra-Edge Text Mode):&lt;/strong&gt; For users on low-spec laptops running on battery, &lt;code&gt;gemma3:270m&lt;/code&gt; (~290MB footprint) evaluates window titles in sub-50ms using almost zero RAM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;qwen3-vl:2b&lt;/code&gt; &amp;amp; &lt;code&gt;qwen3.5:2b&lt;/code&gt;:&lt;/strong&gt; Supported as drop-in open-weight vision alternatives for reading small UI text inside split-screen browser tabs.&lt;/li&gt;
&lt;/ul&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%2Fjyjkotoztiepcnaqcgo6.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%2Fjyjkotoztiepcnaqcgo6.png" alt="Focus67Dumby sticky note running locally alongside Ollama models in PowerShell" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Solving Real-World Desktop Edge Cases
&lt;/h3&gt;

&lt;p&gt;Building a local AI watcher that actually feels good to use required solving several gnarly systems challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;👁️ Hybrid Vision + Perceptual Diff Caching (&lt;code&gt;&amp;lt;3%&lt;/code&gt; Threshold):&lt;/strong&gt; Window titles alone can be deceptive (e.g., Chrome just saying &lt;code&gt;"LinkedIn"&lt;/code&gt; when you're actually playing the LinkedIn Zip puzzle game, or watching a coding tutorial with a vague title). In Vision Mode, &lt;code&gt;window_watcher.py&lt;/code&gt; grabs an in-memory screenshot, resizes it to &lt;code&gt;512x288&lt;/code&gt; (JPEG quality 65), and computes a fast &lt;code&gt;16x9&lt;/code&gt; grayscale perceptual signature. If the screen pixels change by &lt;code&gt;&amp;lt;3%&lt;/code&gt; and the window title is identical (like reading static documentation), it hits the local session cache (&lt;code&gt;0ms&lt;/code&gt; latency, &lt;code&gt;0&lt;/code&gt; GPU calls).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⏱️ 30-Second Workspace Calibration &amp;amp; Multi-Window Breadcrumbs:&lt;/strong&gt; Real engineering tasks span multiple windows (VS Code + Terminal + Localhost Browser + Google OAuth popups). During the first 30 seconds of a sprint, Focus67Dumby enters a &lt;strong&gt;Workspace Calibration Phase&lt;/strong&gt;, automatically whitelisting the windows you touch into a trusted workspace (&lt;code&gt;0ms&lt;/code&gt; instant switching), plus tracking a rolling 4-window breadcrumb trail so the model understands when a secondary login popup was spawned from your primary task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🚨 Two-Strike Grace Period &amp;amp; Escalating Interference:&lt;/strong&gt; Quick Alt-Tabbing never triggers a false alarm. If you stay on an unaligned distraction for 2 consecutive checks (&lt;code&gt;Strikes 2, 4, 6...&lt;/code&gt;), it fires your chosen interference level:

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;Gentle Toast&lt;/code&gt; (Native Windows notification with custom auto-generated &lt;code&gt;.ico&lt;/code&gt; icon)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Toast + Sound&lt;/code&gt; (System audio alert + toast)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Popup Takeover + Sound&lt;/code&gt; (Forces the sticky note to the front via Win32 &lt;code&gt;WS_EX_APPWINDOW&lt;/code&gt;, flashes the border bright red, and physically shakes the widget horizontally on screen until you get back to work).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🐧 Headless Linux &amp;amp; Docker Determinism:&lt;/strong&gt; All GUI (&lt;code&gt;customtkinter&lt;/code&gt;), screen-capture (&lt;code&gt;Pillow&lt;/code&gt;), and Win32 (&lt;code&gt;ctypes.windll&lt;/code&gt;) imports are lazily guarded so the app runs a deterministic offline CLI simulation (&lt;code&gt;python -m src.main --headless --demo&lt;/code&gt;) and passes all unit tests inside a clean headless Linux Docker container in &lt;code&gt;0.75s&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&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%2Flj6pkz2en31o8r4m354g.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%2Flj6pkz2en31o8r4m354g.png" alt="Focus67Dumby detecting active window context and evaluating focus sprint alignment" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;This is a product category that &lt;strong&gt;literally cannot exist as a sustainable, trustworthy business on closed-source cloud APIs&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Data Sovereignty (Zero Screen-Spying):&lt;/strong&gt;
To know whether you are watching a React tutorial or scrolling memes, an AI needs to see your window titles and screen context. Sending screenshots of a developer's desktop every 10 seconds to a closed cloud API means leaking &lt;code&gt;.env&lt;/code&gt; files, proprietary company source code, private messages, and banking tabs to external servers. Running &lt;code&gt;gemma4:e2b&lt;/code&gt; or &lt;code&gt;gemma3:270m&lt;/code&gt; locally on &lt;code&gt;127.0.0.1&lt;/code&gt; guarantees that screenshots never even touch the disk—they are evaluated in RAM/VRAM and immediately discarded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unit Economics That Make a $19 One-Time Price Possible:&lt;/strong&gt;
Polling a frontier vision API every 10 seconds across an 8-hour workday equals &lt;strong&gt;2,880 multimodal API calls per user per day&lt;/strong&gt;. With closed API pricing, a single heavy user would burn through $20–$40+ in token costs every single month, forcing a bloated recurring SaaS subscription. By running open-weight Gemma models locally on the user's existing hardware, inference costs &lt;strong&gt;$0.00 forever&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Vendor Lock-In &amp;amp; Offline Freedom:&lt;/strong&gt;
Whether a user has an 8GB VRAM GPU running &lt;code&gt;gemma4:e2b&lt;/code&gt; in Vision Mode or an older laptop running &lt;code&gt;gemma3:270m&lt;/code&gt; on CPU while studying on a train with zero Wi-Fi, the open-weight architecture adapts to them—and still includes a deterministic heuristic fallback if Ollama isn't running.&lt;/li&gt;
&lt;/ol&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%2Ftwa1a10r7p4yev3h9mfh.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%2Ftwa1a10r7p4yev3h9mfh.png" alt="Terminal output showing all pytest unit tests passing and deterministic headless demo execution" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built and verified this project using an agent-driven workflow anchored by strict repository guardrails (&lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;ARCHITECTURE.md&lt;/code&gt;, &lt;code&gt;MISTAKES.md&lt;/code&gt;, and a custom &lt;code&gt;focus67dumby-master&lt;/code&gt; skill specification). &lt;/p&gt;

&lt;p&gt;Instead of letting coding agents hallucinate monolithic spaghetti code, the master skill enforced thread-safe &lt;code&gt;queue.Queue()&lt;/code&gt; / &lt;code&gt;root.after()&lt;/code&gt; UI marshaling, sub-60-word structured JSON prompts tailored for small models, Win32 foreground window detection, and an 8-point clean-Linux Docker rebuild gate verified by a 15-test &lt;code&gt;pytest&lt;/code&gt; suite.&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%2F64xjsa0qmu89ss64dq9i.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%2F64xjsa0qmu89ss64dq9i.png" alt="VS Code workspace and agent session showing Focus67Dumby architecture and skill files" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;I put &lt;strong&gt;Focus67Dumby&lt;/strong&gt; in front of its first real user—a college mate of mine who constantly battles the exact "open YouTube for a lecture/tutorial, end up watching random videos for an hour" loop during study and coding blocks.&lt;/p&gt;

&lt;h3&gt;
  
  
  How the Test Went:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What clicked immediately:&lt;/strong&gt; He loved the floating sticky-note form factor and the fact that it wasn't a heavy browser extension or a full-screen dashboard app. Seeing the widget distinguish between a legitimate task window and off-topic browsing—plus the &lt;strong&gt;"Popup Takeover + Shake"&lt;/strong&gt; interference mode physically shaking the sticky note on screen when he drifted off-task—got him genuinely excited about using it for daily sprints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-world friction we discovered during testing:&lt;/strong&gt; Early in our testing, we noticed that real workflows involve bouncing between multiple windows (like opening a secondary login popup or switching between a browser puzzle/task and a terminal), and that unchecking "Always on Top" on a frameless Windows widget could hide it behind the browser. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What we iterated on next:&lt;/strong&gt; That feedback directly inspired our &lt;strong&gt;30-Second Workspace Calibration&lt;/strong&gt; feature (where the app automatically learns and trusts the tabs/windows you open in the first 30 seconds of a sprint) and our native Win32 taskbar persistence fix (&lt;code&gt;WS_EX_APPWINDOW&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Would they pay?&lt;/strong&gt; For students and indie devs, monthly subscriptions are a dealbreaker, which validated positioning the packaged desktop installer as a low, one-time lifetime utility while keeping the core repo 100% open-source.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; &lt;strong&gt;Focus67Dumby&lt;/strong&gt; is built around Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; family (&lt;code&gt;gemma4:e2b&lt;/code&gt; and &lt;code&gt;gemma4:e4b&lt;/code&gt; for local multimodal vision-and-title classification, plus &lt;code&gt;gemma3:270m&lt;/code&gt; and &lt;code&gt;gemma3:1b&lt;/code&gt; for ultra-low-memory CPU edge classification) served locally via Ollama with strict JSON schema validation and &lt;code&gt;keep_alive&lt;/code&gt; VRAM management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Entire:&lt;/strong&gt; Shared the full agent-driven engineering workflow, session history, and repository memory artifacts (&lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;ARCHITECTURE.md&lt;/code&gt;, &lt;code&gt;MISTAKES.md&lt;/code&gt;, and &lt;code&gt;focusDumby67-skill.md&lt;/code&gt;) that governed why each module, thread-safety queue, and headless fallback exists in the codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; Deployed and hosted the &lt;strong&gt;Focus67Dumby&lt;/strong&gt; interactive product front-end, sticky-note state simulator, and license checkout portal on &lt;strong&gt;Render&lt;/strong&gt; with automated GitHub continuous deployment.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>StrideQuest: Touch Grass, With a Little Help From On-Device AI</title>
      <dc:creator>Aadi Jain</dc:creator>
      <pubDate>Sun, 11 Oct 2026 13:56:30 +0000</pubDate>
      <link>https://dev.to/thrizzio/stridequest-touch-grass-with-a-little-help-from-on-device-ai-3o9e</link>
      <guid>https://dev.to/thrizzio/stridequest-touch-grass-with-a-little-help-from-on-device-ai-3o9e</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Most applications compete to monopolize your screen time. &lt;strong&gt;StrideQuest is built on the inverse premise:&lt;/strong&gt; use open-weight AI to nudge you out the door, turn your attention toward the physical world, and then get out of the way.&lt;/p&gt;

&lt;p&gt;StrideQuest is a local-first outdoor scavenger hunt Progressive Web App (PWA). It transforms an everyday walk into a mini-expedition: select a quest, step outside, search for specific natural elements in your surroundings, and log what you discover. Browser-based image classification assists with identifying observations, while an integrated journal and progression loop make those outdoor discoveries rewarding to catalog.&lt;/p&gt;




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

&lt;p&gt;StrideQuest unifies a modular expedition engine, lightweight field journaling, and in-browser edge AI into a single installable web application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7 Field Expeditions:&lt;/strong&gt; &lt;em&gt;Forest Floor&lt;/em&gt;, &lt;em&gt;Waterside Explorer&lt;/em&gt;, &lt;em&gt;Urban Nature&lt;/em&gt;, &lt;em&gt;Seasonal Scout&lt;/em&gt;, &lt;em&gt;Rock &amp;amp; Mineral Hunt&lt;/em&gt;, &lt;em&gt;Wildlife Watch&lt;/em&gt;, and &lt;em&gt;Micro-Adventure&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;38 Curated Collectibles:&lt;/strong&gt; A structured field catalog of botanical, geological, and natural features to observe across different biomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPS &amp;amp; Elapsed-Time Tracking:&lt;/strong&gt; Active session monitoring with threshold-based accuracy filtering and stationary drift rejection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camera-Based Observation Loop:&lt;/strong&gt; Direct capture flow with viewfinder preview, retake options, and an upload fallback for legacy devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Field Journal:&lt;/strong&gt; Observations and camera image blobs stored directly in IndexedDB, featuring filters for discovery state, category, and rarity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progression System:&lt;/strong&gt; Earn XP, level up, and unlock eight distinct achievement badges tied to genuine outdoor activity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expedition History &amp;amp; Telemetry:&lt;/strong&gt; Revisit past expeditions with logged duration, distance, and itemized findings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Recovery &amp;amp; Session Controls:&lt;/strong&gt; Pause, resume, complete, or cancel expeditions on the fly; active sessions automatically recover across browser reloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty:&lt;/strong&gt; Full JSON import and export tooling for local journal data and metadata backups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PWA &amp;amp; Offline Foundations:&lt;/strong&gt; Includes a Web App Manifest, Service Worker caching, adaptive app icons, and an active network status indicator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety &amp;amp; Privacy Guidance:&lt;/strong&gt; Transparent notices detailing on-device storage mechanics and encouraging safe, non-intrusive outdoor exploration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to keep users staring at a screen mid-walk. The interface helps plan the outing and record discoveries, leaving the actual exploration entirely to the person on the trail.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live PWA:&lt;/strong&gt; &lt;a href="https://gamified-irl-quest-system.vercel.app/" rel="noopener noreferrer"&gt;https://gamified-irl-quest-system.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; StrideQuest is designed for mobile screens, where camera workflows and geolocation APIs function naturally. WebGPU availability, model download performance, and hardware camera behavior vary across operating systems and browsers.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The project is fully open-source on GitHub:&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/Thrizzio" rel="noopener noreferrer"&gt;
        Thrizzio
      &lt;/a&gt; / &lt;a href="https://github.com/Thrizzio/gamified-irl-quest-system" rel="noopener noreferrer"&gt;
        gamified-irl-quest-system
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;StrideQuest&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;StrideQuest is a local-first outdoor scavenger-hunt PWA for the DEV Hacktoberfest Week 1 &lt;strong&gt;Touch Grass&lt;/strong&gt; challenge. It turns a short walk through a park, trail, garden, or city block into a lightweight field expedition: choose a target, put the phone away, photograph something only after stopping safely, and build a personal journal of what you noticed.&lt;/p&gt;
&lt;p&gt;Challenge tags: &lt;code&gt;#devchallenge&lt;/code&gt; &lt;code&gt;#hf26challenge&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run locally&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install
npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open the localhost URL in a modern browser. Production checks are:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm &lt;span class="pl-c1"&gt;test&lt;/span&gt;
npm run build
npm run preview&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Camera, GPS, wake lock, and service-worker behavior require HTTPS when deployed. &lt;code&gt;localhost&lt;/code&gt; is treated as a secure context by browsers during development.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is implemented&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Dashboard with level/XP progress, a daily invitation, recent field notes, collection progress, measured distance, and local-model readiness.&lt;/li&gt;
&lt;li&gt;Seven data-driven expeditions: Forest Floor, Waterside Explorer, Urban Nature, Seasonal Scout, Rock &amp;amp; Mineral Hunt, Wildlife Watch, and Micro-Adventure.&lt;/li&gt;
&lt;li&gt;38 catalogue…&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/Thrizzio/gamified-irl-quest-system" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The repository includes the complete client source, data models, test suites, and project documentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;StrideQuest is built with &lt;strong&gt;React, Vite, JavaScript, and Tailwind CSS&lt;/strong&gt;, leaning directly on modern web APIs for device hardware access and local storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local-First Architecture and Privacy
&lt;/h3&gt;

&lt;p&gt;StrideQuest operates without a custom backend server or a remote cloud vision API. All field observations, geographic metrics, and raw image blobs are stored client-side in &lt;strong&gt;IndexedDB&lt;/strong&gt;, while interface configurations live in &lt;strong&gt;localStorage&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;There are essential network considerations to note: the application bundle must be downloaded on first load, and the AI model weights and runtime assets are fetched from Hugging Face on demand. The local-first design ensures that user data and photos are not dispatched to a central analytics or storage server, rather than asserting that the initial download is zero-network.&lt;/p&gt;

&lt;p&gt;The Service Worker caches the core application shell for subsequent visits. &lt;strong&gt;Offline AI inference has not yet been benchmarked end-to-end on a physical handset&lt;/strong&gt;; complete disconnected inference requires all model chunks and runtime dependencies to be fully downloaded and cached locally before venturing off-grid.&lt;/p&gt;

&lt;h3&gt;
  
  
  On-Device Image Classification
&lt;/h3&gt;

&lt;p&gt;The vision pipeline runs entirely in-browser using &lt;strong&gt;Transformers.js v3&lt;/strong&gt; and &lt;strong&gt;ONNX Runtime Web&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vision Model:&lt;/strong&gt; &lt;a href="https://huggingface.co/onnx-community/mobilenetv4_conv_small.e2400_r224_in1k" rel="noopener noreferrer"&gt;&lt;code&gt;onnx-community/mobilenetv4_conv_small.e2400_r224_in1k&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution Strategy:&lt;/strong&gt; The classifier initializes lazily on first observation and operates as a shared singleton. It requests WebGPU acceleration when exposed by the browser environment and defaults to the multi-threaded WASM runtime otherwise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model is a generalized &lt;strong&gt;ImageNet-1K classifier&lt;/strong&gt;, not a specialized taxonomic or botanical authority. Because generalized labels do not always map 1:1 to outdoor field objectives, StrideQuest implements confidence-weighted objective matching, surfaces top predictions transparently, communicates uncertainty honestly, and allows users to save manual observation entries whenever the model output is ambiguous.&lt;/p&gt;

&lt;p&gt;Real-world latency, initial weight transfer sizes, and hardware thermal characteristics have not yet been rigorously benchmarked on physical mobile chips.&lt;/p&gt;

&lt;h3&gt;
  
  
  Persistence and Session Reliability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IndexedDB:&lt;/strong&gt; Persists structured records for field observations, captured image blobs, completed expeditions, and achievement progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session Safeguards:&lt;/strong&gt; Expeditions handle pause, resume, finish, and interrupt flows, while localStorage maintains an active expedition checkpoint to restore state after accidental tab closures or mobile browser refreshes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPS Filtering:&lt;/strong&gt; Haversine calculations discard positional updates with poor horizontal accuracy or stationary GPS drift.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Verification and Test Suite
&lt;/h3&gt;

&lt;p&gt;Development verification included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npm test&lt;/code&gt; — 4 test suites passed (6 tests verifying distance calculations, progression logic, and persistence schemas)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npm run build&lt;/code&gt; — Clean production bundle generated (with standard ONNX/Transformers.js bundle size notices)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npm run dev -- --host 127.0.0.1&lt;/code&gt; — Dev server, web app manifest, and service worker validated with HTTP 200 responses&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;StrideQuest explores what happens when open-weight models and web standards meet experiences outside the traditional screen-first paradigm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edge Intelligence:&lt;/strong&gt; Running open-weight models in the browser shifts inference directly to consumer hardware, removing per-request cloud API dependencies and server hosting bills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability &amp;amp; Transparency:&lt;/strong&gt; Open codebases and open weights mean users and contributors can inspect the prompt mappings, see confidence thresholds, and review exactly how their data is processed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intentional Technology:&lt;/strong&gt; Open tooling allows developers to build software that serves as a quiet utility—documenting and encouraging physical activity—rather than optimizing for maximum screen engagement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterative Community Growth:&lt;/strong&gt; Contributors can readily test domain-specific fine-tunes (such as dedicated flora or fungi classifiers), refine objective heuristics, and optimize WASM/WebGPU pipelines across varied mobile hardware.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;Development architecture, state persistence schemas, and test suites were refined interactively with an AI coding assistant. Because this was completed in a local workflow without an external public DevRelay session link, no unverified third-party session URL is included.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Track:&lt;/strong&gt; Hacktoberfest Week 1: Touch Grass Challenge (Overall Submission)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Step outside, keep your phone in your pocket between milestones, and let the real world be the main event.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>pwa</category>
    </item>
    <item>
      <title>LifeOS: Giving AI Persistent Personal Context with Local Open-Source AI and MCP</title>
      <dc:creator>Aadi Jain</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:46:48 +0000</pubDate>
      <link>https://dev.to/thrizzio/lifeos-giving-ai-persistent-personal-context-with-local-open-source-ai-and-mcp-3fil</link>
      <guid>https://dev.to/thrizzio/lifeos-giving-ai-persistent-personal-context-with-local-open-source-ai-and-mcp-3fil</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Most AI coding assistants suffer from severe amnesia. Every time you open a new conversation, context resets completely. You spend the first ten minutes re-explaining your tech stack, your active projects, your career goals, and how you want the AI to talk to you. Worse, when you hit burnout or feel stuck, commercial closed chatbots resort to generic, hollow reassurance: &lt;em&gt;"You're doing great! Keep going!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;LifeOS&lt;/strong&gt; for a close friend and fellow developer who was tired of repeating themselves across coding sessions and wanted an assistant grounded in their actual goals and ground-truth progress.&lt;/p&gt;

&lt;p&gt;LifeOS is not another chatbot. It is a &lt;strong&gt;local-first personal context and memory layer&lt;/strong&gt; built on top of the open &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;. It indexes a local vault of plain Markdown files into a local PostgreSQL + &lt;code&gt;pgvector&lt;/code&gt; instance using local ONNX embeddings, allowing any MCP-compatible agent (like Antigravity or local open-weight models) to retrieve personal context with strict provenance.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Interaction Policy:&lt;/strong&gt; Reads an explicit &lt;code&gt;how_i_want_ai_to_treat_me.md&lt;/code&gt; user document that instructs the AI to separate emotion from evidence, challenge weak plans, and avoid empty reassurance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable Provenance:&lt;/strong&gt; Every retrieved memory returns exact source paths and headings (e.g., &lt;code&gt;[Source: projects/chronolog.md | Heading: Architecture]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quarantined Memory Writes:&lt;/strong&gt; Prevents agents from silently hallucinating or overwriting canonical user files—all agent-authored memories are strictly isolated to &lt;code&gt;vault/memory/&lt;/code&gt; with timestamps and metadata.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Here is an example interaction showing how LifeOS changes agent behavior:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;User:&lt;/strong&gt; &lt;em&gt;"I feel like I'm wasting my time and making zero progress on my projects."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standard Chatbot:&lt;/strong&gt; &lt;em&gt;"Don't be hard on yourself! Coding is tough, you're doing amazing!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antigravity with LifeOS:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent calls &lt;code&gt;lifeos_get_instructions()&lt;/code&gt; and &lt;code&gt;lifeos_get_context()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It identifies the user's explicit rule: &lt;em&gt;Do not give empty reassurance; distinguish feelings from evidence; verify recent project milestones.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Agent calls &lt;code&gt;lifeos_search("recent progress Chronolog PhysioEvidence")&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response:&lt;/strong&gt; 
&amp;gt; &lt;em&gt;"Let's separate how you feel right now from what the evidence says. According to &lt;code&gt;projects/chronolog.md&lt;/code&gt;, you finalized the backend architecture this week. In &lt;code&gt;learning/ai.md&lt;/code&gt;, you completed your embeddings implementation. What specifically stalled today—was it the auth bug in Chronolog, or are you feeling overwhelmed by context switching? Here is the smallest next action to take..."&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────────────┐
│ LIFEOS ARCHITECTURE                          │
│                                              │
│  Markdown Vault (Canonical Truth)            │
│       │                                      │
│       ▼                                      │
│  FastEmbed (BAAI/bge-small-en-v1.5)          │
│       │                                      │
│       ▼                                      │
│  PostgreSQL + pgvector (Derived Search)      │
│       │                                      │
│       ▼                                      │
│  LifeOS MCP Server (stdio protocol purity)   │
│       │                                      │
│  ┌────┴───────────────────────────┐          │
│  ▼                                ▼          │
│ Antigravity Agent            Local Ollama    │
│ (Cloud Reasoning)          (Gemma 2 / Qwen)  │
└──────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&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/Thrizzio" rel="noopener noreferrer"&gt;
        Thrizzio
      &lt;/a&gt; / &lt;a href="https://github.com/Thrizzio/LifeOS-MCP-Local-first-agent-context-" rel="noopener noreferrer"&gt;
        LifeOS-MCP-Local-first-agent-context-
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;LifeOS — Local-First Personal Context Layer for AI Agents&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI agents are powerful, but they have amnesia.&lt;/strong&gt;&lt;br&gt;
Every new conversation starts with zero knowledge of the person they are helping. Users are forced to re-explain their background, their goals, their active projects, and how they want to be spoken to.&lt;br&gt;
&lt;strong&gt;LifeOS&lt;/strong&gt; solves this by providing a local-first personal context and memory layer that gives AI agents access to the user's canonical knowledge through the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;    +-------------------------------------------------------------+
    |                      AI Reasoning Layer                     |
    |       Google Antigravity Agent  OR  Local Open LLM (Ollama) |
    +-------------------------------------------------------------+
                                   ▲
                          JSON-RPC │ over stdio
                                   ▼
    +-------------------------------------------------------------+
    |                      LifeOS MCP Server                      |
    |  - lifeos_get_context()         - lifeos_search()           |
    |  - lifeos_read_file()           - lifeos_get_instructions() |
    |  - lifeos_list_topics()         - lifeos_add_memory()       |
    +-------------------------------------------------------------+
            │                                             │
      Path Validation                               Vector Search
            ▼                                             ▼
+───────────────────────────+                 +───────────────────────────+
│   Canonical Truth Store   │                 │   Derived Vector Index    │
│   Plain Markdown&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Thrizzio/LifeOS-MCP-Local-first-agent-context-" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;The repository includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complete Python implementation (&lt;code&gt;lifeos/&lt;/code&gt;)&lt;/strong&gt; with strict &lt;code&gt;stdio&lt;/code&gt; protocol cleanliness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fully automated tests&lt;/strong&gt; (24 passed unit and security tests covering path traversal and memory write isolation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Committed synthetic public sample vault (&lt;code&gt;examples/sample_vault/&lt;/code&gt;)&lt;/strong&gt; with 17 realistic documents so anyone can clone and test it immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antigravity integration configurations&lt;/strong&gt; (&lt;code&gt;examples/antigravity/mcp_config.json&lt;/code&gt;) supporting workspace and global agent setups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Compose configuration&lt;/strong&gt; for local PostgreSQL + &lt;code&gt;pgvector&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;LifeOS is engineered from the ground up around open-source AI and open standards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Embedding Engine:&lt;/strong&gt; FastEmbed running &lt;code&gt;BAAI/bge-small-en-v1.5&lt;/code&gt; locally via ONNX Runtime, generating 384-dimensional dense vectors with zero cloud API dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector Indexing:&lt;/strong&gt; PostgreSQL with the &lt;code&gt;pgvector&lt;/code&gt; extension running locally via Docker, using HNSW index lookups for fast cosine similarity search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Protocol Interface:&lt;/strong&gt; An stdio-based server using the official Python MCP SDK exposing 6 core tools: &lt;code&gt;lifeos_get_context&lt;/code&gt;, &lt;code&gt;lifeos_search&lt;/code&gt;, &lt;code&gt;lifeos_read_file&lt;/code&gt;, &lt;code&gt;lifeos_get_instructions&lt;/code&gt;, &lt;code&gt;lifeos_list_topics&lt;/code&gt;, and &lt;code&gt;lifeos_add_memory&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional Local Open-Weight Reasoning:&lt;/strong&gt; A modular fallback to &lt;strong&gt;Ollama&lt;/strong&gt; running Google's &lt;strong&gt;Gemma 2&lt;/strong&gt; (&lt;code&gt;gemma2:2b&lt;/code&gt; / &lt;code&gt;gemma2:9b&lt;/code&gt;), enabling complete offline execution without sending tokens to any cloud API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time Synchronization:&lt;/strong&gt; Built-in &lt;code&gt;watchdog&lt;/code&gt; file observer that monitors vault edits and updates database hashes idempotently.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation is not just a feature of LifeOS; it is the entire reason the project works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Privacy for Vulnerable Personal Data:&lt;/strong&gt; A personal context layer holds journal entries, mental burnout patterns, unfinished project drafts, and career ambitions. Trusting proprietary vector databases and third-party cloud LLM APIs with unencrypted personal journals is unacceptable. Open-weight models and local embeddings guarantee that sensitive user context never leaves local disk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canonical Truth Inversion (Zero Vendor Lock-in):&lt;/strong&gt; In closed platforms, your memory is trapped inside a vendor's black-box database. In LifeOS, plain Markdown files on disk are the canonical source of truth. The database is merely a disposable index. If the database is deleted or an embedding model is upgraded, the entire vector store can be regenerated from scratch with &lt;code&gt;python scripts/index.py --rebuild&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Independence:&lt;/strong&gt; The user owns their memory layer. Whether Antigravity is using an advanced coding model, or you are running an open-weight Gemma 2 model offline on an RTX GPU on a train with zero Wi-Fi, the user's context remains identical and portable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200 USD):&lt;/strong&gt; LifeOS provides a dedicated local reasoning path powered by Ollama running Google's open-weight Gemma models (&lt;code&gt;gemma2:2b&lt;/code&gt; / &lt;code&gt;gemma2:9b&lt;/code&gt;), allowing the entire context-and-reasoning loop to run 100% offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Tiger Data ($100 USD):&lt;/strong&gt; LifeOS uses PostgreSQL and &lt;code&gt;pgvector&lt;/code&gt; with HNSW vector indexing to store high-dimensional embeddings and execute similarity searches over local vault chunks.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
