<?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: Abhinav Mishra</title>
    <description>The latest articles on DEV Community by Abhinav Mishra (@abhinav202104).</description>
    <link>https://dev.to/abhinav202104</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%2F4207096%2F26bbafce-8297-4fca-8565-66d8b11dc036.jpg</url>
      <title>DEV Community: Abhinav Mishra</title>
      <link>https://dev.to/abhinav202104</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhinav202104"/>
    <language>en</language>
    <item>
      <title>SlothOS: The 100% Offline, Zero-Effort Git Shipper &amp; 9 AM Standup Agent 🦥</title>
      <dc:creator>Abhinav Mishra</dc:creator>
      <pubDate>Mon, 26 Oct 2026 07:40:00 +0000</pubDate>
      <link>https://dev.to/abhinav202104/slothos-the-100-offline-zero-effort-git-shipper-9-am-standup-agent-e87</link>
      <guid>https://dev.to/abhinav202104/slothos-the-100-offline-zero-effort-git-shipper-9-am-standup-agent-e87</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Let’s be honest about the two chores every software engineer dreads the most:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The 6:00 PM Exhaustion Commit:&lt;/strong&gt; You’ve been coding for six hours across multiple files. You are way too tired to stage chunks cleanly, write meaningful Conventional Commits, and draft a thorough Pull Request description. So you type &lt;code&gt;git commit -m "wip fix stuff"&lt;/code&gt; and close your laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 8:58 AM Standup Panic:&lt;/strong&gt; You roll out of bed two minutes before the daily Zoom standup, staring blankly at your screen with zero recollection of what you actually accomplished yesterday.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In honor of International Sloth Day and the &lt;strong&gt;Slow and Steady&lt;/strong&gt; challenge, I built &lt;strong&gt;SlothOS&lt;/strong&gt;—a 100% local, open-source autonomous developer harness powered by &lt;strong&gt;Ollama (&lt;code&gt;qwen2.5-coder:7b&lt;/code&gt; / open-weight models)&lt;/strong&gt;, &lt;strong&gt;Node.js&lt;/strong&gt;, and a &lt;strong&gt;React/Tailwind&lt;/strong&gt; dashboard. &lt;/p&gt;

&lt;p&gt;SlothOS moves at a calm, steady pace on &lt;code&gt;localhost&lt;/code&gt; to do the heavy lifting so you don't have to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🌙 Night Mode (&lt;code&gt;SlothShip&lt;/code&gt;):&lt;/strong&gt; Inspects your messy, uncommitted &lt;code&gt;git diff&lt;/code&gt; across any local repository, runs a &lt;strong&gt;Local Secret Redactor Guardrail (&lt;code&gt;SlothGuard&lt;/code&gt;)&lt;/strong&gt; to strip out accidental API keys or &lt;code&gt;.env&lt;/code&gt; secrets, splits your chaos into logical &lt;strong&gt;Atomic Commits&lt;/strong&gt; with clear reasoning, executes those commits in one click, and writes a ready-to-paste Markdown PR description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;☕ Morning Mode (&lt;code&gt;SlothStandup&lt;/code&gt;):&lt;/strong&gt; Digests your local Git commit history overnight and hands you a 3-column &lt;strong&gt;"Yesterday / Today / Blockers"&lt;/strong&gt; cheat sheet—complete with a built-in *&lt;em&gt;Web Speech API voice synthesizer *&lt;/em&gt; that reads your verbatim 30-second Zoom script out loud while you make coffee.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;&lt;em&gt;(SlothShip Atomic Commits + Auto-Generated PR Description)&lt;/em&gt;&lt;br&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%2Fwyjqmstxek0y6y21n4cw.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%2Fwyjqmstxek0y6y21n4cw.png" alt="SlothOS SlothShip dashboard view running on localhost:5500, displaying the 28-minute laziness score, the SlothGuard privacy warning confirming API key redaction, proposed atomic commit groups sorted by routes and UI components, and the auto-generated Markdown PR description" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(9 AM Standup Cheat Sheet + Voice Script)&lt;/em&gt;&lt;br&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%2Fbt662b50ysez8xlh0sfe.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%2Fbt662b50ysez8xlh0sfe.png" alt="SlothOS 9 AM Standup Prep view, displaying the 3-column Yesterday, Today, and Blockers cheat sheet synthesized from local Git commit logs, alongside the verbatim Zoom script and the text-to-speech voice reader control" width="799" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; ]&lt;/p&gt;

&lt;h2&gt;
  
  
  (&lt;a href="https://github.com/Abhinav202104/sloth-os" rel="noopener noreferrer"&gt;https://github.com/Abhinav202104/sloth-os&lt;/a&gt;)
&lt;/h2&gt;

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

&lt;p&gt;SlothOS is built around a lightweight agent harness (&lt;code&gt;server.js&lt;/code&gt;) and a zero-build reactive dashboard (&lt;code&gt;index.html&lt;/code&gt;). Here is a snippet of how the local agent inspects Git state and enforces structured JSON reasoning:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
javascript
// Local agent harness analyzing uncommitted diffs offline
app.post('/api/sloth-ship', async (req, res) =&amp;gt; {
  try {
    const { repoPath, model } = req.body;
    const targetDir = getValidGitRepo(repoPath);
    const rawDiff = runGit('git diff', targetDir) + '\n' + runGit('git diff --staged', targetDir);
    const combinedDiff = redactSecrets(rawDiff.slice(0, 10000));

    const prompt = `You are SlothGit, an autonomous developer agent. Analyze these changes and group them into atomic commits. Return ONLY valid JSON.`;
    const { result, usedModel } = await askSlothAgent(prompt, model, fallbackPlan);
    res.json({ status: 'ready', usedModel, plan: result });
  } catch (error) {
    res.status(400).json({ error: error.message });
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>opensource</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
