# rip: A local graveyard and ofrenda for forgotten side projects

> Source: <https://dev.to/razorbillworks/rip-a-local-graveyard-and-ofrenda-for-forgotten-side-projects-3c6g>
> Published: 2026-11-01 05:42:28+00:00

*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine](https://dev.to/challenges/hacktoberfest-week4-2026-10-26)*

Every developer has a drive full of abandoned side quests: half-finished prototypes, 2 AM scripts, and repos whose last commit was simply `"fixing bugs please work"`. Usually, they just sit there until an aggressive disk cleanup wipes them out.

For Halloween and Día de los Muertos, I built **`rip`**: a local CLI tool that acts as a digital cemetery for dead code.

It scans your workspaces for dormant projects, reads strictly high-level metadata (last modified date, size, and last Git commit), and pipes it into a local **Google Gemma 2 (2B)** instance. Gemma acts as the gravekeeper, writing witty epitaphs for why each project died.

With the `--ofrenda` flag, it channels Día de los Muertos by turning the eulogy into an altar, offering actionable sparks to resurrect the project today.

The generated dark-mode visual cemetery view (`cemetery.html`):

In the terminal, it renders ASCII tombstones before generating the web gallery:

```
     .---.
    / RIP /
   |  ___  |   rust-game-engine-attempt
   | |   | |   "It chased a dream of a world built in rust, but the compiler's silence remains."
   |_|___|_|
   🌼 Ofrenda Revival: Seek the engine's heart. A compiler update might be the spark to bring it back.
```

  A local CLI tool and digital cemetery built for **Hacktoberfest 2026: Ghost in the Machine**.

  Channels the spirits of forgotten scripts and abandoned repositories using local **Google Gemma 2 (2B)**

Every developer's drive hosts a quiet graveyard: incomplete prototypes, late-night experiments, and uncommitted scripts.

`rip` acts as a respectful gravekeeper. It traverses your workspaces to locate dormant projects, passing **strictly metadata** (modification age, sizes, and Git commit logs) to an air-gapped Gemma 2 instance. It produces witty obituaries and constructive **Ofrenda** sparks to resurrect your code, rendered both as ANSI terminal tombstones and a self-contained HTML gallery.

`rip` runs an open-weight foundation model locally; source code and file contents never touch the inference pipeline.
The stack is intentionally minimal and runs 100% locally:

`gemma2:2b` via Ollama. Gemma 2's instruction-following at 2B parameters made it fast and consistent at returning clean, parseable JSON without hallucinated markdown fences.`rich` for terminal panels.`pathlib` and `subprocess` to grab `git log -1`.
`rip` never reads actual code or file contents. It sends only the project name, days inactive, and the last commit message to Gemma at `temperature: 0.7`.

Running `rip` against my own old folders and seeing Gemma roast a commit from months ago wasn't just fun, it was oddly motivating. Instead of feeling guilty about abandoned repos, it treats them as part of the creative process and gives a clear prompt to pick one back up.
