<?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: Aneesh Grover</title>
    <description>The latest articles on DEV Community by Aneesh Grover (@aneeshgrover).</description>
    <link>https://dev.to/aneeshgrover</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%2F4158329%2Fe3e2ada8-c40d-479a-8f5b-24b1dde94b68.jpg</url>
      <title>DEV Community: Aneesh Grover</title>
      <link>https://dev.to/aneeshgrover</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aneeshgrover"/>
    <language>en</language>
    <item>
      <title>An agent that fixes your servers, repairs configs and asks before anything risky (MHacks 26)</title>
      <dc:creator>Aneesh Grover</dc:creator>
      <pubDate>Wed, 07 Oct 2026 20:22:00 +0000</pubDate>
      <link>https://dev.to/aneeshgrover/an-agent-that-fixes-your-servers-updates-softwareconfig-and-asks-before-anything-risky-mhacks-26-3em6</link>
      <guid>https://dev.to/aneeshgrover/an-agent-that-fixes-your-servers-updates-softwareconfig-and-asks-before-anything-risky-mhacks-26-3em6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/mlh-hackathon"&gt;MLH x DEV Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Nightshift is an agent that has terminal access to your machines while their owner is away. It finds the problem and proposes the fix. A gate decides whether the fix may run, and a small board on the desk is where a human says yes.&lt;/p&gt;

&lt;p&gt;A service dies. Within a few seconds the agent has read the logs, checked a library of known fixes and written a log. If the fix is safe, it runs alone. If it needs a person, the FREE-WILi board turns orange and shows APPROVE. A green press lets that one command run, exactly once. The device snapshots itself first, checks its health afterwards, and rolls back by itself if the check fails.&lt;/p&gt;

&lt;p&gt;The model never decides what it may do. A policy file does, so a confused or manipulated model can't talk its way up a level. Ask it to delete files and the request hits a rule; nothing runs.&lt;/p&gt;

&lt;p&gt;Devices dial out to the database, so none of them opens an inbound port. Fixes earn trust one at a time: after three verified successes a fix stops asking and the board says EARNED. One failure sends it back to asking.&lt;/p&gt;

&lt;p&gt;Approvals are live rows, so the board, a phone page and the dashboard change together. The phone can approve over mobile data through a private Tailscale link. And two hard shakes of the board revoke everything the agent was allowed to do.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Devpost: &lt;a href="https://devpost.com/software/nightshift-4ob27k" rel="noopener noreferrer"&gt;https://devpost.com/software/nightshift-4ob27k&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/Aneesh-382005/nightshift" rel="noopener noreferrer"&gt;https://github.com/Aneesh-382005/nightshift&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Site: &lt;a href="https://night-shift.tech" rel="noopener noreferrer"&gt;https://night-shift.tech&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The demo is a test bench. Faults are injected on demand into containers that play servers, and into a Pixel 9 Pro over adb, so every run starts from a known failure and plays the whole loop.&lt;/p&gt;

&lt;p&gt;The dashboard draws it as a night garden. Each device is a flower. A broken service wilts it, a fix brings it back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Partner Technologies
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;FREE-WILi.&lt;/strong&gt; The board is the input and the status light. Its screen fits one short word, so each state gets one: IDLE, APPROVE, FIXING, HEALTHY, EARNED, BLOCKED. Seven LEDs add color, so a glance across the room says what the agent is doing. Five buttons approve, deny, undo and show events, and the accelerometer drives the double-shake kill switch. A small Python bridge passes events along as JSON lines and reconnects by itself when the board re-enumerates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini API.&lt;/strong&gt; The agent loop calls Gemini with function calling and says why before it acts. A fix costs about 3,000 to 6,000 tokens, roughly a tenth of a cent. If the network drops, the loop switches to a local Qwen model on the laptop GPU.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SpacetimeDB.&lt;/strong&gt; Approvals are rows with rules attached: who may approve, who may revoke, when a grant expires. The database enforces them and pushes every change to whatever is subscribed, so a board, a phone and a browser behave as one surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.Tech.&lt;/strong&gt; night-shift.tech points at the project site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon Experience
&lt;/h2&gt;

&lt;p&gt;This was a submission to MHacks 2026 in Ann Arbor. Met a lot of people, heard about their ideas and shared one of my own. Since I wanted to work on something networking and infra related, I worked solo. This submission did not win, but it was fun working on something I find cool and telling others about it.&lt;/p&gt;

</description>
      <category>mlhacks</category>
      <category>devchallenge</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
