<?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: Kaashvi </title>
    <description>The latest articles on DEV Community by Kaashvi  (@kaashviw3spaces).</description>
    <link>https://dev.to/kaashviw3spaces</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%2F4172446%2F808a0a15-1b43-47f8-bcbd-db9ce93ce8ea.png</url>
      <title>DEV Community: Kaashvi </title>
      <link>https://dev.to/kaashviw3spaces</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kaashviw3spaces"/>
    <language>en</language>
    <item>
      <title>A Workflow Is a Graph. An Execution Is a State Problem: The Hidden Complexity of n8n.</title>
      <dc:creator>Kaashvi </dc:creator>
      <pubDate>Tue, 27 Oct 2026 00:55:11 +0000</pubDate>
      <link>https://dev.to/kaashviw3spaces/a-workflow-is-a-graph-an-execution-is-a-state-problem-the-hidden-complexity-of-n8n-327b</link>
      <guid>https://dev.to/kaashviw3spaces/a-workflow-is-a-graph-an-execution-is-a-state-problem-the-hidden-complexity-of-n8n-327b</guid>
      <description>&lt;p&gt;A workflow fails. I fix the configuration and click Execute Node.&lt;/p&gt;

&lt;p&gt;But what should happen next?&lt;/p&gt;

&lt;p&gt;The selected node might depend on three upstream nodes. One succeeded, another produced incomplete data, and the third hasn't run at all.&lt;/p&gt;

&lt;p&gt;Should the engine rerun everything? Reuse previous results? Wait for missing inputs?&lt;/p&gt;

&lt;p&gt;These questions turn a seemingly simple debugging operation into a problem of dependency analysis, execution-state reconstruction, and data consistency.&lt;/p&gt;

&lt;p&gt;While exploring n8n's execution engine, I became interested in how it handles this problem, particularly when partial executions interact with nodes that receive multiple inputs.&lt;/p&gt;

&lt;p&gt;Consider an example of a workflow I created&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%2Fyr6914frgufn90o8hsl6.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%2Fyr6914frgufn90o8hsl6.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If Generate report fails, restarting the entire workflow might repeat unnecessary API calls or external side effects. Running only that node, however, may fail because its required inputs are unavailable.&lt;/p&gt;

&lt;p&gt;The engine must reason about three separate things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Graph topology&lt;/li&gt;
&lt;li&gt;Its Execution history&lt;/li&gt;
&lt;li&gt;Its Execution eligibilty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The workflow's execution state changes with every run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Partial execution is a state-reconstruction problem
&lt;/h2&gt;

&lt;p&gt;Partial execution allows developers to run a selected portion of a workflow instead of repeating the entire process.&lt;/p&gt;

&lt;p&gt;The challenge is deciding which previous results can be reused and which dependencies must be evaluated again.&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%2F9ii8sugi84z39aml2xlp.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%2F9ii8sugi84z39aml2xlp.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data stored in execution history isn't always valid for subsequent runs—upstream parameters can change, and past contexts can drift.&lt;/p&gt;

&lt;p&gt;Recomputing everything wastes resources; reusing everything risks incorrect results.&lt;/p&gt;

&lt;p&gt;Similar to incremental computation that is recalculating only what changed, workflow engines face extra complexity because nodes trigger external side effects, call APIs, and follow split data paths.&lt;/p&gt;

&lt;p&gt;Ultimately, the core problem isn't just deciding which node to run, but determining &lt;strong&gt;which execution state is valid to reach that node safely.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why multi-input nodes complicate scheduling
&lt;/h2&gt;

&lt;p&gt;Here's a node that combines customer data with order data in this workflow&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%2Ffyy8ka0nirxrbq673l4n.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%2Ffyy8ka0nirxrbq673l4n.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A simplified scheduler might assume that a node is ready when all its parents have executed. Real execution semantics are more complicated.&lt;/p&gt;

&lt;p&gt;An upstream node might have executed but returned zero items. Another might not have executed at all. A third might be waiting for data from another branch.&lt;/p&gt;

&lt;p&gt;Scheduling cannot always be reduced to checking whether a node's immediate parents have run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside n8n's execution engine
&lt;/h2&gt;

&lt;p&gt;A useful starting point for investigating this behaviour is the WorkflowExecute implementation in n8n's core package:&lt;/p&gt;

&lt;p&gt;workflow-execute.ts.&lt;/p&gt;

&lt;p&gt;Two areas are particularly interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Its Execution Stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The engine tracks scheduled node work and processes nodes as execution progresses. After a node produces output, the engine must inspect its outgoing connections and determine whether downstream work is ready.&lt;/p&gt;

&lt;p&gt;Consider this flowchart &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A ["Select runnable node"] --&amp;gt; B["Prepare inputs"]
B --&amp;gt; C["Execute node"]
C --&amp;gt; D["Record output"]
D --&amp;gt; E{"Downstream node ready?"}
E --&amp;gt;|Yes| F["Schedule node"]
E --&amp;gt;|No| G["Wait for required input"]
F --&amp;gt; A
G --&amp;gt; A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;This is a conceptual representation, not a complete reproduction of n8n's internal implementation.&lt;/p&gt;

&lt;p&gt;The important detail is that producing output and scheduling the next node are separate responsibilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Reconstructing partial execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The same file contains runPartialWorkflow2, which provides a concrete entry point for examining partial workflow execution.&lt;/p&gt;

&lt;p&gt;At a high level, this path involves resolving a destination, identifying a relevant subgraph, accounting for existing run data, and preparing the execution stack and waiting input state.&lt;/p&gt;

&lt;p&gt;The goal is to execute the required portion of the workflow without blindly replaying unrelated operations.&lt;/p&gt;

&lt;p&gt;This introduces a correctness requirement: the engine must select the appropriate nodes and supply them with the appropriate data and context.&lt;/p&gt;
&lt;h2&gt;
  
  
  Exploring the n8n repository and going through its PRs
&lt;/h2&gt;

&lt;p&gt;I explored a few n8n pull requests and came across #10758, titled “fix(core) handle nodes with multiple inputs and partial data correctly during partial executions.”&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%2Fvjxotjdmrvon9xupo6ds.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%2Fvjxotjdmrvon9xupo6ds.png" alt=" " width="800" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The PR  basically ensures nodes with multiple inputs(like a merge node) handle data correctly during partial workflow execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And why is this an interesting engineering problem?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During partial execution, a Merge node might have some upstream data ready while other inputs are still pending. The engine's job is to figure out if it has enough context to safely schedule the node.&lt;/p&gt;

&lt;p&gt;While a Merge node shows the problem, the real challenge is with execution scheduling and state reconstruction.&lt;/p&gt;

&lt;p&gt;To look into this, I'd check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The exact code changes.&lt;/li&gt;
&lt;li&gt;Edge-case test coverage.&lt;/li&gt;
&lt;li&gt;Review the notes on execution-stack reconstruction.&lt;/li&gt;
&lt;li&gt;The PR status (currently marked as a Draft, so it's a proposed idea, not a finished fix).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main takeaway? Features like partial execution, multi-input nodes, and saved execution data work fine on their own, but keeping their logic intact when they interact is where things will get tricky.&lt;/p&gt;
&lt;h2&gt;
  
  
  A deeper lesson
&lt;/h2&gt;

&lt;p&gt;This investigation connects workflow automation to several broader concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incremental computation&lt;/strong&gt;: Recalculating only the work affected by a change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data provenance&lt;/strong&gt;: Preserving information about where data originated and how it reached a node.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scheduling&lt;/strong&gt;: Determining which operations are eligible to execute next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State consistency&lt;/strong&gt;: Ensuring that reused execution data remains appropriate for the current run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability&lt;/strong&gt;: Making enough execution information available to investigate failures and reproduce behaviour.&lt;/p&gt;

&lt;p&gt;These concerns are tightly connected. A scheduler can select the correct node but still produce an incorrect result if it supplies stale or incomplete inputs.&lt;/p&gt;

&lt;p&gt;A workflow debugger is therefore more than a visual editor. It is also a tool for inspecting and manipulating execution state.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The more I explored partial execution, the less I saw it as a convenience feature and the more I saw it as a test of the execution engine's underlying model.&lt;/p&gt;

&lt;p&gt;The challenge is not simply to execute fewer nodes. It is to execute the correct subset of nodes with the correct inputs and the right interpretation of prior state.&lt;/p&gt;

&lt;p&gt;Multi-input nodes expose this complexity particularly well because they force the engine to reason about dependencies, data availability, and execution history together.&lt;/p&gt;

&lt;p&gt;That is what makes workflow engine development interesting. Correctness often depends on the interactions between features, not just on whether each feature works independently.&lt;/p&gt;
&lt;h2&gt;
  
  
  Further exploration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/n8n-io/n8n" rel="noopener noreferrer"&gt;n8n Source Repository&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/n8n-io/n8n/blob/master/packages/core/src/execution-engine/workflow-execute.ts" rel="noopener noreferrer"&gt;Execution engine&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/n8n-io/n8n/pull/10758" rel="noopener noreferrer"&gt;Pull request #10758&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  My Work: REBOOTX
&lt;/h2&gt;

&lt;p&gt;My exploration of automation reliability also connects to &lt;a href="https://dev.to/kaashviw3spaces/one-broken-api-can-disrupt-a-business-so-i-built-something-to-help-32jp"&gt;REBOOTX — Autonomous Automation Recovery Platform&lt;/a&gt;, a project I built to investigate what happens after an automation fails.&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/Kaashviw3spaces" rel="noopener noreferrer"&gt;
        Kaashviw3spaces
      &lt;/a&gt; / &lt;a href="https://github.com/Kaashviw3spaces/Rebootx-ai" rel="noopener noreferrer"&gt;
        Rebootx-ai
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      REBOOTX — An open-source AI-powered automation recovery engine that detects failed workflows, diagnoses errors using Gemma, and autonomously executes safe recovery strategies with Temporal.
    &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;💜 REBOOTX — Automation Recovery Platform&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;When automations break, recovery shouldn't be guesswork.&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;Small businesses and developers depend on automation every day. But when an API fails or a workflow stops working, fixing everything manually can take time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REBOOTX is an open-source, self-hosted platform that helps detect failures, manage recovery attempts, verify results, and keep a record of what happened.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of blindly retrying everything, REBOOTX combines recovery workflows, safety checks, and outcome verification to make automation failures easier to handle.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Current status:&lt;/strong&gt; Mock recovery is enabled by default. Real n8n recovery is optional and is still partially implemented. REBOOTX does not automatically fix every failure.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ What can REBOOTX do?&lt;/h2&gt;
&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;🔎 &lt;strong&gt;Detect failures&lt;/strong&gt; — Receive alerts when an automation fails.&lt;/li&gt;

&lt;li&gt;🧠 &lt;strong&gt;Diagnose problems&lt;/strong&gt; — Use rule-based checks and AI-assisted diagnosis.&lt;/li&gt;

&lt;li&gt;🔄 &lt;strong&gt;Manage recovery&lt;/strong&gt; — Coordinate recovery steps using Temporal.&lt;/li&gt;

&lt;li&gt;🛡️ &lt;strong&gt;Apply safety checks&lt;/strong&gt; — Check permissions and rules…&lt;/li&gt;

&lt;/ul&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Kaashviw3spaces/Rebootx-ai" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;REBOOTX connects n8n's error path to a FastAPI backend using PostgreSQL, Temporal, and a React dashboard to handle webhooks, validate schemas, track incidents, and coordinate recovery.&lt;br&gt;&lt;br&gt;
It tests AI diagnosis, audit logs, and recovery safety checks, using mock actions. &lt;/p&gt;

&lt;p&gt;The key distinction is that detecting a failure, diagnosing its cause, and safely recovering a business process are three different engineering problems.&lt;/p&gt;

&lt;p&gt;REBOOTX explores how those responsibilities can be coordinated while keeping recovery actions observable and accountable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kaashviw3spaces/Rebootx-ai" rel="noopener noreferrer"&gt;Explore REBOOTX on GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>opensource</category>
      <category>automation</category>
      <category>programming</category>
    </item>
    <item>
      <title>This is How I Automated My Digital Chores To Get More Hours Of Sleep (Python + Ollama)</title>
      <dc:creator>Kaashvi </dc:creator>
      <pubDate>Mon, 26 Oct 2026 09:17:44 +0000</pubDate>
      <link>https://dev.to/kaashviw3spaces/this-is-how-i-automated-my-digital-chores-to-get-more-hours-of-sleep-2dfa</link>
      <guid>https://dev.to/kaashviw3spaces/this-is-how-i-automated-my-digital-chores-to-get-more-hours-of-sleep-2dfa</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Idler is a local-first AI assistant that helps people do everyday computer housekeeping tasks using plain English instead of complicated commands or endless clicking.&lt;/p&gt;

&lt;p&gt;One desktop. 143 files. Where do we even start?&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%2Fzu9uxhiupbkknj4uvalg.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%2Fzu9uxhiupbkknj4uvalg.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple: tell IDLER what needs doing, review its plan, and decide whether it should go ahead.&lt;/p&gt;

&lt;p&gt;But there's an important design decision here.&lt;/p&gt;

&lt;p&gt;I don't want an AI model to have unrestricted access to someone's computer. A model can misunderstand a request, suggest an incorrect action, or produce an output that looks convincing but isn't safe to execute.&lt;/p&gt;

&lt;p&gt;So Idler follows a more controlled approach: the AI proposes a plan, deterministic checks validate it, the user approves the proposed changes, and restricted tools carry out the permitted operations.&lt;/p&gt;

&lt;p&gt;The goal isn't to make AI magically trustworthy. It's to build a system where the AI can be useful without being given unlimited power.&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%2Fw4kby4g6wbyegiz3563j.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%2Fw4kby4g6wbyegiz3563j.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, instead of manually going through a folder containing hundreds of files, you could ask:&lt;/p&gt;

&lt;p&gt;"Help me organise these files into sensible folders."&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;"Find duplicate files in this directory so I can review them."&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%2Fv03js57t1fukd9hroa62.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%2Fv03js57t1fukd9hroa62.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of the housekeeping tasks I'm building around include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File organisation&lt;/strong&gt;: Make cluttered folders easier to navigate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Duplicate detection&lt;/strong&gt;: Identify repeated files and help users review them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spreadsheet housekeeping&lt;/strong&gt;: Inspect CSV files and surface useful information, including potential data-quality issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Project housekeeping&lt;/strong&gt;: Help inspect project folders and identify things that may need attention.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Action history and undo&lt;/strong&gt;: Keep track of supported operations and provide a way to reverse eligible changes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Kaashviw3spaces/Idler/releases/tag/v0.2.4" rel="noopener noreferrer"&gt;Download Latest Release (v0.2.4)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/fe2giXmT2Ik?si=rKRTynAJEiTnQw-X" rel="noopener noreferrer"&gt;Watch the Video Demo on YouTube&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/Kaashviw3spaces" rel="noopener noreferrer"&gt;
        Kaashviw3spaces
      &lt;/a&gt; / &lt;a href="https://github.com/Kaashviw3spaces/Idler" rel="noopener noreferrer"&gt;
        Idler
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Idler takes care of the computer chores you’d rather not do — tidying folders, finding duplicate files, checking messy spreadsheets, and keeping things in order.  It gets stuff done, with you in control.
    &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;🦥 Idler&lt;/h1&gt;
&lt;/div&gt;


&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Your computer is a mess. Your sloth has a broom.&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;
  A digital housekeeper for all the computer chores you've been avoiding.
  &lt;br&gt;
  &lt;i&gt;Less mess. Less busywork. More time for absolutely anything else.&lt;/i&gt;
&lt;/p&gt;

&lt;p&gt;
  🧹 File housekeeping &amp;nbsp;·&amp;nbsp; 🔎 Duplicate hunting &amp;nbsp;·&amp;nbsp; 📊 Spreadsheet checks
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/Kaashviw3spaces/Idler/releases/tag/v0.2.4" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/772156294af633e21b0310c32411cbbfa524d02cfe23e7a1944f231c071bb62e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656c656173652d76302e322e342d3338626466383f7374796c653d666c61742d737175617265" alt="Latest Release v0.2.4"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5a3bd3dade732e3ddfbbd0ed98a0833db0692bd16a871596f757482a6493b6e0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374617475732d496e253230446576656c6f706d656e742d3942393143383f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/5a3bd3dade732e3ddfbbd0ed98a0833db0692bd16a871596f757482a6493b6e0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374617475732d496e253230446576656c6f706d656e742d3942393143383f7374796c653d666c61742d737175617265" alt="In development"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/77aaf34e2a85546f539634cbfb0bf16929df1935d15d821e7055b54b0b3c7511/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d4c6f63616c2d2d46697273742d3843423843393f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/77aaf34e2a85546f539634cbfb0bf16929df1935d15d821e7055b54b0b3c7511/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d4c6f63616c2d2d46697273742d3843423843393f7374796c653d666c61742d737175617265" alt="Local-first AI"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/27d83cf1b09a050e7bd41f8513a7a039df1b1b1532c238a9d2fa6f7bb36ec4b6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d466173744150492d3744414639433f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/27d83cf1b09a050e7bd41f8513a7a039df1b1b1532c238a9d2fa6f7bb36ec4b6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d466173744150492d3744414639433f7374796c653d666c61742d737175617265" alt="FastAPI"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d139002336eeccb8527674bec4304b10f4c977acbb687e7da73226677f629614/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d4630433641353f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/d139002336eeccb8527674bec4304b10f4c977acbb687e7da73226677f629614/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d4630433641353f7374796c653d666c61742d737175617265" alt="MIT License"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;So... your downloads folder looks like this?&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;Downloads/
├── final.pdf
├── final_FINAL.pdf
├── final_FINAL_v2.pdf
├── final_FINAL_v2_ACTUAL_FINAL.pdf
├── new_folder/
├── new_folder_2/
├── new_folder_2_REAL/
├── random_screenshot_8472.png
└── spreadsheet_use_this_please.csv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You needed one file.&lt;/p&gt;
&lt;p&gt;You now have a small archaeological site.&lt;/p&gt;
&lt;p&gt;And somewhere in that mess is the document you actually need, three copies of a spreadsheet, and a screenshot you took six months ago for reasons nobody remembers.&lt;/p&gt;
&lt;p&gt;We've all been there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Idler is here to help with the little digital messes that somehow become tomorrow's problem.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It's an AI-powered computer housekeeping assistant that takes instructions in plain English, prepares a plan, and helps carry out supported tasks with…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Kaashviw3spaces/Idler" 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;Idler is built on a decoupled, resilient architecture consisting of an Electron native shell, a high-performance React 18 UI, a standalone compiled FastAPI engine, and an atomic SQLite ledger.&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%2F1a6nt1pq71cb5ofifdeq.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%2F1a6nt1pq71cb5ofifdeq.png" alt=" " width="800" height="1186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every move was guarded: previewed first, logged before modification, verified on disk, and instantly reversible.&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%2Fa1h22ck65szsa19nrqc9.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%2Fa1h22ck65szsa19nrqc9.png" alt=" " width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because Squirrel.Mac requires paid Apple Developer certificates ($99/yr) to apply updates, we engineered a native, zero-dependency updater for macOS and Windows that requires zero external services.&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%2Fgxbwoedrjw149yeru5nu.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%2Fgxbwoedrjw149yeru5nu.png" alt=" " width="799" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&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%2Fqd0u1nk1oownnzps34xv.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%2Fqd0u1nk1oownnzps34xv.png" alt=" " width="799" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Automated Testing &amp;amp; Rigorous Verification&lt;/strong&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%2Flztehnhs1ml2qjp0bnbt.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%2Flztehnhs1ml2qjp0bnbt.png" alt=" " width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My Hacktober Timeline &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%2Fwt3wlj1n7x0pwlc12lof.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%2Fwt3wlj1n7x0pwlc12lof.png" alt=" " width="800" height="1211"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Open innovation matters because it encourages collaboration, knowledge-sharing, and the exchange of ideas beyond organisational boundaries. It reduces development costs, accelerates problem-solving, and makes technology more accessible. By combining diverse perspectives and expertise, it helps create better solutions and drives continuous improvement.&lt;/p&gt;

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

&lt;p&gt;My computer has 143 files on its desktop. At some point, “I’ll organise these later” became a long-term storage strategy.&lt;/p&gt;

&lt;p&gt;Idler was my attempt to break that cycle.&lt;/p&gt;

&lt;p&gt;Instead of manually dragging files into folders, hunting for duplicate downloads, or opening spreadsheets just to figure out what’s wrong with them, I can ask for help in plain English. Idler plans the task, lets me review the proposed changes, and only executes actions I approve.&lt;/p&gt;

&lt;p&gt;The real payoff? Less clicking, less repetitive housekeeping, and fewer reasons to procrastinate.&lt;/p&gt;

&lt;p&gt;Is it a scientifically verified productivity revolution? Not yet. Is it an attempt to make my computer slightly less embarrassing? Absolutely.&lt;/p&gt;

&lt;p&gt;My desktop still has problems. At least now, my sloth has a broom. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — For Idler's open-weight AI approach, using Gemma through local inference to help interpret user requests and plan computer housekeeping tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Use of GitHub Copilot&lt;/strong&gt; — If GitHub Copilot was meaningfully used to build or improve Idler, in accordance with the category requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team Member
&lt;/h2&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/saksham_malik_2606"&gt;@saksham_malik_2606&lt;/a&gt; &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>python</category>
    </item>
    <item>
      <title>One Broken API Can Disrupt a Business. So I Built Something to Help.</title>
      <dc:creator>Kaashvi </dc:creator>
      <pubDate>Mon, 19 Oct 2026 00:08:54 +0000</pubDate>
      <link>https://dev.to/kaashviw3spaces/one-broken-api-can-disrupt-a-business-so-i-built-something-to-help-32jp</link>
      <guid>https://dev.to/kaashviw3spaces/one-broken-api-can-disrupt-a-business-so-i-built-something-to-help-32jp</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;p&gt;Imagine running a small business where your inventory updates automatically, customer notifications go out through workflows, and different tools stay in sync without you having to do everything manually.&lt;/p&gt;

&lt;p&gt;Now imagine one API fails.&lt;/p&gt;

&lt;p&gt;An order doesn't get processed. Inventory stops updating. A customer never receives their notification. And suddenly, you're spending time digging through logs instead of running your business.&lt;/p&gt;

&lt;p&gt;For a small business, even a minor automation failure can turn into a frustrating operational problem.&lt;/p&gt;

&lt;p&gt;That got me thinking: &lt;strong&gt;what if there were a system that could detect these failures, figure out what went wrong, and safely handle recovery whenever possible?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the idea behind REBOOTX.&lt;/p&gt;

&lt;p&gt;I built it as an open-source, self-hosted automation recovery engine that currently integrates with n8n. I focused on getting the components to work together, testing the recovery flows, and making the system easier to run locally.&lt;/p&gt;

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

&lt;p&gt;📥 GitHub Release: &lt;a href="https://github.com/sakshammalik260-cse/Rebootx-ai/releases/tag/v0.1.0" rel="noopener noreferrer"&gt;Install REBOOTX&lt;/a&gt;&lt;br&gt;
🎥 Video Demo: &lt;a href="https://youtu.be/eo3veYcJ_to?si=1leeNLec6GU08aHK" rel="noopener noreferrer"&gt;See it in action&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/sakshammalik260-cse" rel="noopener noreferrer"&gt;
        sakshammalik260-cse
      &lt;/a&gt; / &lt;a href="https://github.com/sakshammalik260-cse/Rebootx-ai" rel="noopener noreferrer"&gt;
        Rebootx-ai
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      REBOOTX — An open-source AI-powered automation recovery engine that detects failed workflows, diagnoses errors using Gemma, and autonomously executes safe recovery strategies with Temporal.
    &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;💜 REBOOTX — Automation Recovery Platform&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;When automations break, recovery shouldn't be guesswork.&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Small businesses and developers depend on automation every day. But when an API fails or a workflow stops working, fixing everything manually can take time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REBOOTX is an open-source, self-hosted platform that helps detect failures, manage recovery attempts, verify results, and keep a record of what happened.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Instead of blindly retrying everything, REBOOTX combines recovery workflows, safety checks, and outcome verification to make automation failures easier to handle.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Current status:&lt;/strong&gt; Mock recovery is enabled by default. Real n8n recovery is optional and is still partially implemented. REBOOTX does not automatically fix every failure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ What can REBOOTX do?&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🔎 &lt;strong&gt;Detect failures&lt;/strong&gt; — Receive alerts when an automation fails.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Diagnose problems&lt;/strong&gt; — Use rule-based checks and AI-assisted diagnosis.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Manage recovery&lt;/strong&gt; — Coordinate recovery steps using Temporal.&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Apply safety checks&lt;/strong&gt; — Check permissions and rules…&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/sakshammalik260-cse/Rebootx-ai" 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;Here's the high-level architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;n8n&lt;/strong&gt; → &lt;strong&gt;FastAPI&lt;/strong&gt; → &lt;strong&gt;PostgreSQL&lt;/strong&gt; &lt;strong&gt;+ Transactional Outbox&lt;/strong&gt; → &lt;strong&gt;Temporal&lt;/strong&gt; → &lt;strong&gt;Recovery Worker&lt;/strong&gt;→ &lt;strong&gt;Verification&lt;/strong&gt; → &lt;strong&gt;Dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each component handles a different part of the incident lifecycle.&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%2Fh44xnb5286bbt2wgg31n.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%2Fh44xnb5286bbt2wgg31n.png" alt=" " width="799" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Separating these responsibilities makes the system easier to reason about and gives each component a clear job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Tech Stack Used&lt;/strong&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%2Fb8plhwv0gqirbbn2lr57.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%2Fb8plhwv0gqirbbn2lr57.png" alt=" " width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;End-to-end incident lifecycle&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For failure to recovery, in 8 steps:&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%2Fsqwdo0t0f5qfm82d5nol.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%2Fsqwdo0t0f5qfm82d5nol.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Security, safety, and tenancy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tenant authentication&lt;/strong&gt;: Read tokens are securely hashed before storage in PostgreSQL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Webhook security&lt;/strong&gt;: HMAC-SHA256 protects incoming events; secrets stay in environment variables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data isolation&lt;/strong&gt;: Tenant-scoped operations and idempotency controls protect data and prevent duplicate processing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Safe defaults&lt;/strong&gt;: Mock recovery and mock AI are enabled by default.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Controlled changes&lt;/strong&gt;: Real n8n workflow changes require explicit authorisation and fingerprint matching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Credential protection&lt;/strong&gt;: .env files and runtime credentials are excluded from version control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Known limitation&lt;/strong&gt;: Temporal’s internal-network TLS exception needs hardening before exposure to untrusted networks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What has actually been built and verified?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The checkpoints:&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%2Ftzt6hbhqn7eykjyiycak.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%2Ftzt6hbhqn7eykjyiycak.png" alt=" " width="798" height="214"&gt;&lt;/a&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%2F1893wk2ehj3oh9skeka0.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%2F1893wk2ehj3oh9skeka0.png" alt=" " width="799" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simulation, test and verification report | v0.1.0 | 18 October 2026:&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%2F71fwy8akuighwgvjfnzw.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%2F71fwy8akuighwgvjfnzw.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These results gave me confidence that the core incident-to-resolution pipeline was working in the tested environment.&lt;/p&gt;

&lt;p&gt;There is an important limitation, though: one recovered incident out of two simulated scenarios is not a meaningful estimate of real-world recovery performance. We deliberately selected the scenarios to test different paths.&lt;/p&gt;

&lt;p&gt;The project still needs broader load testing, failure-infrastructure testing, independent security review, and clean-install verification on another machine before I can make stronger claims about production readiness.&lt;/p&gt;

&lt;p&gt;I would rather be clear about those limitations than claim that a successful test suite proves everything is ready for production.&lt;/p&gt;

&lt;p&gt;[Insert Image 4: A screenshot of your actual terminal showing the backend and frontend test results, with any secrets or personal paths hidden.]&lt;/p&gt;

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

&lt;p&gt;Small businesses should not need expensive enterprise software to manage automation failures. &lt;br&gt;
Open innovation makes my approach possible. Developers can inspect the code, contribute improvements, extend integrations, and adapt the system to different business needs instead of depending on a single proprietary solution. Docker Compose also makes self-hosted deployment more accessible.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hacktoberfest Open-Source AI Challenge — Week 2:&lt;/strong&gt; Side Hustle &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Use of Temporal&lt;/strong&gt; — REBOOTX uses Temporal to orchestrate durable recovery workflows, track execution, and coordinate incident recovery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — REBOOTX includes a Gemma diagnosis-provider integration path for AI-assisted failure analysis. The default configuration uses a mock provider.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Team Members
&lt;/h2&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/saksham_malik_2606"&gt;@saksham_malik_2606&lt;/a&gt; for ideating and building it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Outside or else! Here's how we made AI pets bribe and threaten users to go Touch Grass</title>
      <dc:creator>Kaashvi </dc:creator>
      <pubDate>Sun, 11 Oct 2026 21:44:29 +0000</pubDate>
      <link>https://dev.to/kaashviw3spaces/outside-or-else-the-unhinged-ai-pet-that-bribes-and-threatens-you-to-touch-grass-4of0</link>
      <guid>https://dev.to/kaashviw3spaces/outside-or-else-the-unhinged-ai-pet-that-bribes-and-threatens-you-to-touch-grass-4of0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ugh man i just always feel like doomscrolling to relax my mind, I wish someone would look me dead in the eyes and say 'go outside or else' while slowly loading a paintball gun.&lt;br&gt;&lt;br&gt;
-a known friend&lt;/p&gt;
&lt;/blockquote&gt;

&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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Most wellness and habit-tracking apps fail for a simple reason: they act like boring productivity managers. They send polite notifications that everyone swipes away after two days.&lt;/p&gt;

&lt;p&gt;My friend Prachi stays inside working at her desk for several hours a day. She loves cozy aesthetics, and silly internet pet humor. I wanted to build something for her that makes going outside feel like a cute mini-game backed by a pet that speaks in unhinged broken cat logic and escalates to chaotic demands if you try to ignore it. &lt;/p&gt;

&lt;p&gt;That is Outside or else!: a cozy, ambient PWA built with open-weight local AI, OpenStreetMap data, and Google Font Gaego.&lt;/p&gt;

&lt;p&gt;The entire app is built on a simple idea: screen time should be the shortest part of the experience. You pick an outdoor goal, and your pet guides you outside, locks your app during your walk, verifies your outdoor selfie locally on your phone, and remembers your journeys in a scrapbook. But if you ignore it twice? The pet dies of extreme sadness. You pet's love for you increase with every selfie you add to its memory book, once it dies you lose the bond and the memories.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;📥 &lt;strong&gt;Download APK:&lt;/strong&gt; &lt;a href="https://github.com/sakshammalik260-cse/Outside-or-Else-/releases" rel="noopener noreferrer"&gt;Get the latest Android release&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎥 &lt;strong&gt;Video Demo:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=flZ_dq0i2ZM" rel="noopener noreferrer"&gt;Watch the app in action&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&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/sakshammalik260-cse" rel="noopener noreferrer"&gt;
        sakshammalik260-cse
      &lt;/a&gt; / &lt;a href="https://github.com/sakshammalik260-cse/Outside-or-Else-" rel="noopener noreferrer"&gt;
        Outside-or-Else-
      &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;Outside or else!&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Your pet has one mission. Get you outside.&lt;/p&gt;
&lt;p&gt;A mobile-first React + TypeScript cozy outdoor companion game built around on-device local AI models, privacy-first offline persistence, and open map data.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🌟 Overview&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Outside or Else! turns stepping outside into a tiny adventure. Adopt a pet, nurture a bond, and receive chaotic, unhinged reminders to step away from your screen. Screen time should be the shortest part of the game.&lt;/p&gt;
&lt;p&gt;OUTSIDE OR ELSE! PWA&lt;/p&gt;
&lt;p&gt;FRONTEND &amp;amp; UI&lt;br&gt;
│ • React + Vite + TypeScript&lt;br&gt;
│ • Hand-drawn Gaegu Font&lt;br&gt;
│ • SunCalc (Ambient Lighting)&lt;br&gt;
│ • OpenStreetMap / Overpass API&lt;/p&gt;
&lt;p&gt;NATIVE ANDROID (CAPACITOR)&lt;br&gt;
│ • llama.cpp (Qwen3-0.6B GGUF AI)&lt;br&gt;
│ • Native Camera &amp;amp; Local Photos&lt;br&gt;
│ • Local Notification Engine&lt;br&gt;
│ • On-Device File Persistence.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;✨ Features Included&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;7-Step Onboarding &amp;amp; Pet Selection: Short skippable splash screen guiding users through companion choice, naming, activity preferences, outdoor time…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sakshammalik260-cse/Outside-or-Else-" 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;Outside or Else! is built around on-device local AI models and open map data to ensure zero tracking and 100% offline functionality:&lt;/p&gt;

&lt;p&gt;Local On-Device AI Generation (Qwen3-0.6B + llama.cpp):&lt;/p&gt;

&lt;p&gt;The Android app bundles a quantized Qwen3-0.6B open-weight model and runs it locally using native llama.cpp integration. The pet generates new replies offline in airplane mode with zero cloud chat APIs or external downloads.&lt;/p&gt;

&lt;p&gt;Ask Cat a question or trigger a response?&lt;/p&gt;

&lt;p&gt;Cat generates replies locally: "human. you have legs. why are they not moving? MEOW HEEK!"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grounded Suggestions &amp;amp; Real Walks&lt;/strong&gt; (OpenStreetMap Overpass API + SunCalc):&lt;/p&gt;

&lt;p&gt;Using SunCalc for dynamic room lighting and local OpenStreetMap queries via Overpass API, Cat calculates nearby walkable parks and sky timing, generating grounded suggestions in its unhinged voice:&lt;/p&gt;

&lt;p&gt;"sky orange at 5:42. like big salmon. go to park now."&lt;/p&gt;

&lt;p&gt;It even suggests users to try out a new place or landmark scanned by the model within the users proximity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI &amp;amp; Styling&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Typography&lt;/strong&gt;: Set to Google Font Gaegu with bold, oversized headers (text-4xl) and subheaders (text-2xl).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visuals&lt;/strong&gt;: Warm pastel ambient lighting, soft  borders, and an integrated bottom navigation bar (Nest, Outside, Brain Folder, Knobs).&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;React&lt;/code&gt; • &lt;code&gt;TypeScript&lt;/code&gt; • &lt;code&gt;Vite&lt;/code&gt; • &lt;code&gt;Capacitor&lt;/code&gt; • &lt;code&gt;Android&lt;/code&gt; • &lt;code&gt;Qwen3-0.6B&lt;/code&gt; • &lt;code&gt;GGUF&lt;/code&gt; • &lt;code&gt;llama.cpp&lt;/code&gt; • &lt;code&gt;OpenStreetMap&lt;/code&gt; • &lt;code&gt;SunCalc&lt;/code&gt; • &lt;code&gt;Gaegu&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Open-weight AI puts a real model inside your phone. Here is why closed APIs couldn't do this:   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Works 100% Offline&lt;/strong&gt;: Closed APIs need internet. Bundling llama.cpp and Qwen3-0.6B lets your pet chat in airplane mode or on a trail.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total Privacy&lt;/strong&gt;: Closed APIs send your data to cloud servers. Open-weight AI keeps your pet chats, photos, and walks strictly on your device.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero API Costs&lt;/strong&gt;: Closed APIs charge per request. Open-weight AI and OpenStreetMap run completely free forever without server bills.   &lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of Open-Source AI: Built with a bundled, quantized Qwen3-0.6B model running 100% locally on-device via llama.cpp—zero cloud dependencies, zero external APIs, and full offline support in airplane mode. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of Gemma: Tested with a quantized Gemma GGUF model on llama.cpp&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of GitHub Copilot: Assisted in writing React, TypeScript, llama.cpp native Android integration code&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What I Learned &amp;amp; Final Thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A cute concept is easy to pitch, but making an offline AI model run on real Android hardware, preserving local state during upgrades, and handling native permissions takes real engineering.&lt;/p&gt;

&lt;p&gt;Most apps want you to stay. Outside or Else! wants you to leave. Take a short walk, watch the sky, bring back a photo, and let your pet greet you with an unreasonable demand:&lt;/p&gt;

&lt;p&gt;😼 "HUMAN. DOOR EXISTS. LEGS EXIST. GO TOUCH GRASS. HEEK!"  &lt;/p&gt;

&lt;h2&gt;
  
  
  Team Members
&lt;/h2&gt;

&lt;p&gt;Built with &lt;a class="mentioned-user" href="https://dev.to/saksham_malik_2606"&gt;@saksham_malik_2606&lt;/a&gt; (consistently advocates touching grass)&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>showdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
