DEV Community

Yash Singh
Yash Singh

Posted on AI-assisted

Your Abandoned Repos Deserve an Ofrenda: Meet Graveshell

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine

What I Built

Graveshell is "a haunted terminal that whispers about your commands, and an ofrenda for the projects you let die." 👻

Every developer has a dark folder somewhere on their hard drive where unfinished ambitions go to rest: game prototypes, weekend micro-SaaS attempts, half-written CLI tools, and repos whose last commit was a hurried WIP: fix bug from two years ago. We usually feel guilty about them, or pretend they don't exist.

For the "Ghost in the Machine" theme (Halloween on October 31 and Día de los Muertos on November 1-2), I built around two traditions. Instead of hiding the ghosts in our machines, Graveshell welcomes them:

  1. Mortimer, the terminal ghost 💀: a sarcastic sysadmin who died in a cold server room in 1987. He watches your terminal and reacts to "omens": failed commands, force-pushes, rm -rf, repeated frantic commands, and typos like gti instead of git. He answers with one eerie, darkly funny sentence.
  2. The Graveyard 🕯️: run graveshell graveyard and it finds git repos untouched for 90+ days, then holds a small ofrenda for each one. You get a gravestone with the real data (birth date, date of death, days dead, commit count, last commit message), and only after that does Mortimer write a short epitaph. With --revive, it also shows uncommitted changes and the oldest TODO, as a nudge to bring a project back to life.

Everything runs locally through Ollama. No cloud APIs, no pip packages, and it works with Wi-Fi turned off.

Demo

Demo Video

The whole demo was recorded with Wi-Fi turned **off.

Here is a gravestone from the Graveyard:

💀 ENTERING THE GRAVEYARD (Dia de los Muertos Ofrenda)
Seeking git repositories resting for 90+ days in C:\Users\yash7...


         .-----------------------------------------------.
        /                   †  R.I.P.  †                  \
       |                                                   |
       |  Project:    MindForge                            |
       |  Born:       2026-06-28                           |
       |  Died:       2026-08-02                           |
       |  Resting:    90 days in darkness                  |
       |  Commits:    18 commits                           |
       |  Last words: "Production enhanc. push           " |
       |                                                   |
        \       🏵️   🕯️    OFRENDA DE REPOS    🕯️   🏵️  /
         '-----------------------------------------------'
       🕯️  Mortimer's Epitaph: "Forgotten code, a fleeting dream, born in darkness, died in haste, its purpose lost in the voidd, a mere whisper of what could have been."
Enter fullscreen mode Exit fullscreen mode

And Mortimer reacting to a mistyped command:

.------------------------------------------------------------------------.
|  [!] MORTIMER'S POST-MORTEM
|  Command:     gti
|  Exit Code:   127 (Command Not Found)
|  Suggested:   git (typo fix)
|  Omen:        command not found (exit 127)
|
|  Mortimer's Diagnosis:
|     Another soul trapped in this forsaken terminal, waiting
|     for the inevitable reboot. The poor guy must be having
|     some kind of existential crisis, stuck in a loop of
|     terminal typing like
'------------------------------------------------------------------------'
Enter fullscreen mode Exit fullscreen mode

Code

Github

Try it yourself (Windows PowerShell):

ollama pull llama3.2:1b
git clone https://github.com/Yash6012/Graveshell.git
cd Graveshell; python graveshell.py demo
Enter fullscreen mode Exit fullscreen mode

How I Built It

Graveshell has strict constraints: Python 3 standard library only, a single core file (graveshell.py), and a local Ollama instance running the small open-weight llama3.2:1b model. There is nothing to pip install.

The key design decisions:

  • Plain Python first. The model never counts days, counts commits, or searches for files. Python and the local git CLI work out the facts, and the real evidence prints before any AI text appears.
  • Micro-prompts. The model sees at most 4 facts per call and writes ONE short sentence.
  • Redaction before inference. API keys, tokens, passwords, user:pass@ URLs and Bearer headers become [REDACTED] before anything reaches the model. Commands that start with a space are never sent.
  • Fail silent. If Ollama is down or too slow, Mortimer says nothing, so your prompt never hangs.
  • A tiny model on purpose. My laptop is weak, so I picked llama3.2:1b and kept prompts short to stay fast.
  • Built with an agent, then made my own. I used Google's Antigravity to scaffold the project, then tested it, learned how it works, and adapted it for Windows, including the PowerShell hook.

Why Does Open Innovation Matter?

For this kind of tool, open and local AI is not just an alternative to a cloud API. It is what makes the idea possible at all.

  1. Privacy. A terminal is full of file paths, server names, half-finished ideas and the occasional pasted token. Sending every command to a third-party API would be a non-starter. With a local open-weight model, prompts only go to 127.0.0.1:11434 on my own machine.
  2. It works offline. A haunted terminal that needs the internet isn't haunted, it's just an API client. Graveshell runs on a plane, in a train tunnel, or with Wi-Fi switched off for the demo.
  3. Free per command. A ghost that can comment on any command you run would add up quickly on a metered API. Locally, each whisper costs nothing.
  4. Swappable models. One environment variable changes the ghost's brain, for example GRAVESHELL_MODEL=mistral. I'm not tied to one vendor's model, pricing, or deprecation schedule.
  5. No dependence on a service that can disappear. Graveshell exists to remember projects that died when their maker moved on. It would be ironic if Graveshell died because an API changed or shut down. Open weights and open code mean it keeps working as long as someone has a laptop.

Top comments (0)