<?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: Avyukth-S</title>
    <description>The latest articles on DEV Community by Avyukth-S (@avyukths).</description>
    <link>https://dev.to/avyukths</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%2F4197518%2Fd425bc57-a01e-4dbe-88ba-74cc6fb9b05d.png</url>
      <title>DEV Community: Avyukth-S</title>
      <link>https://dev.to/avyukths</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avyukths"/>
    <language>en</language>
    <item>
      <title>Haunted Shell</title>
      <dc:creator>Avyukth-S</dc:creator>
      <pubDate>Tue, 27 Oct 2026 15:58:59 +0000</pubDate>
      <link>https://dev.to/avyukths/haunted-shell-26g1</link>
      <guid>https://dev.to/avyukths/haunted-shell-26g1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Haunted Shell&lt;/strong&gt; is a terminal where a ghost lives. You type normal commands like &lt;code&gt;dir&lt;/code&gt;, &lt;code&gt;echo hello&lt;/code&gt; or &lt;code&gt;cd ..&lt;/code&gt;, the command runs as usual, and then a ghost whispers one eerie sentence about what you just did.&lt;/p&gt;

&lt;p&gt;For the "Ghost in the Machine" theme, I took it literally: what if the computer you use every day had a spirit inside it that noticed everything you did? The ghost is powered entirely by an open-weight model running on my own laptop.&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/Avyukth-S" rel="noopener noreferrer"&gt;
        Avyukth-S
      &lt;/a&gt; / &lt;a href="https://github.com/Avyukth-S/haunted-shell" rel="noopener noreferrer"&gt;
        haunted-shell
      &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;p&gt;👻 Haunted Shell&lt;/p&gt;
&lt;p&gt;A tiny shell where a ghost whispers an eerie comment after every command you run.
Built for the “Ghost in the Machine” theme, powered by an open-weight model running locally.&lt;/p&gt;
&lt;p&gt;Demo
demo
Why open-source AI?
Offline: works with Wi-Fi off, using Gemma 3 4B through Ollama.
Private: your commands, paths and filenames never leave your laptop.
Free: no API keys, no usage bills, no rate limits.
Swappable: change MODEL = "gemma3:4b" to try any other Ollama model.
Run it
Install Ollama from &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;https://ollama.com&lt;/a&gt; and run ollama pull gemma3:4b
Run python haunt.py
Type commands like dir or echo hello and listen for the ghost.
How it works&lt;/p&gt;
&lt;p&gt;haunt.py runs your command, then sends it to the local Ollama server (localhost:11434), which asks Gemma 3 for a one-line spooky whisper. About 30 lines of Python, no dependencies.&lt;/p&gt;
&lt;p&gt;License&lt;/p&gt;
&lt;p&gt;MIT&lt;/p&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/Avyukth-S/haunted-shell" 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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Gemma 3 4B, an open-weight model from Google&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference:&lt;/strong&gt; Ollama, which runs the model locally and exposes an API at &lt;code&gt;localhost:11434&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code:&lt;/strong&gt; one Python file (about 30 lines) using only the standard library, with no pip installs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The script reads a command from the user and runs it with &lt;code&gt;subprocess&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It sends the command to the local Ollama server with a prompt: &lt;em&gt;"You are a ghost trapped in their computer. Whisper ONE short eerie sentence."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Gemma 3 replies and the whisper is printed in purple after the command output.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I used &lt;code&gt;keep_alive&lt;/code&gt; so the model stays loaded in memory after the first call, which keeps later whispers fast. If the model can't be reached, the ghost just says "...the spirit is silent..." instead of crashing.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It works offline.&lt;/strong&gt; I turned off Wi-Fi and the ghost still whispered. There is no server to reach and no outage that can silence it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's private.&lt;/strong&gt; A shell sees everything: file paths, folder names, hostnames, and sometimes secrets. With a local model, none of that leaves my laptop. A closed API would receive every command I type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing.&lt;/strong&gt; No API keys, no usage bills and no rate limits, so I can run it all day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's swappable.&lt;/strong&gt; Changing one line (&lt;code&gt;MODEL = "gemma3:4b"&lt;/code&gt;) switches to any other Ollama model, so I can give the ghost a different personality or try a smaller or larger model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It can't be taken away.&lt;/strong&gt; Open weights run for as long as I have the files. A vendor can't deprecate the model or shut down the service my project depends on.&lt;/li&gt;
&lt;/ul&gt;

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