DEV Community

Cover image for Uncommit the Dead: my unfinished side projects want one last commit
Kaustubh Jogle
Kaustubh Jogle

Posted on

Uncommit the Dead: my unfinished side projects want one last commit

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

“I’ll finish it this weekend” sounds harmless until you find it attached to an old commit, sitting beneath a feature you still remember explaining enthusiastically to somebody who has probably forgotten the conversation.

I wanted to give that particular kind of unfinished business somewhere to go, because an abandoned repository can still contain a useful idea even when nobody wants to rebuild the entire thing. Including its original developer.

Uncommit the Dead lets you choose a local Git repository and ask an open-weight model for a smaller next step, based on the limited evidence the application collects from its remains. The ghost is your code. And yes, it has pumpkins, because I apparently decided ordinary software maintenance needed seasonal produce.

One last commit

Give the model a time budget and it proposes a small change with a suggested acceptance check, rather than treating your neglected weekend experiment as an invitation to design another startup. Twenty minutes counts.

Donate its organs

But perhaps the whole project should stay buried, while one useful component deserves an extraction plan that identifies what you would need to inspect before carrying it into a different codebase. Keep the good bit.

Rest in peace

Or ask for a farewell document based on the repository evidence, acknowledging the unfinished work without pretending every experiment needs to become a product before you are allowed to leave it behind. A dignified README funeral.

Demo

The application runs on your machine, where its server can read a selected repository and send the collected context to Ollama without requiring a hosted inference service to handle that evidence. Bring your own ghosts.

After installing the project dependencies, start Ollama and download a model using the command below, then run the development server and open the local address printed in your terminal when it starts. The setup page helps.

ollama pull gemma3:4b
npm run dev
Enter fullscreen mode Exit fullscreen mode

Inside the Graveyard, choose an installed model through the connection panel and use the folder picker to select a repository, or explore a fictional sample before inviting your own unfinished work inside. Samples are labelled clearly. The responses still come from a model request rather than a prerecorded script pretending to think.

Code

Uncommit the Dead

A little afterlife for the side projects you swore you would finish.

Run locally

Node 20.9+ and Git required.

npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

Open http://127.0.0.1:3000. The app intentionally binds to loopback and is designed for a trusted personal machine, not public hosting.

Ollama setup guide

Read the Ollama README for installation, model downloads, usage, and troubleshooting. The same guide is available in the app at /ollama, with copyable commands and a downloadable README.

Open AI at its core

Install Ollama, start it, and download an open-weight model:

ollama pull gemma3:4b
Enter fullscreen mode Exit fullscreen mode

Use Connect local AI → Check connection and select an installed model. Model choice is yours; review its model licence. After dependencies and model weights are installed, the app does not need cloud inference. Ollama is fixed to 127.0.0.1:11434; no API key is required.

What works

  • Three labelled fictional repositories to explore the interface…




How I Built It

The model receives a bounded collection of repository evidence, including README text and TODO lines alongside filenames and recent commit messages, rather than unrestricted access to whatever happens to be on your disk. It cannot inspect everything.

That context goes to Ollama with a response schema, and the server checks returned evidence references against entries that were actually supplied, discarding unsupported references and rejecting a response if none survive. Matching is deliberately narrow.

The small model had opinions

During testing with Gemma 3 1B through Ollama, one supposedly short ghost introduction became a long monologue, while other responses offered plausible advice that still needed someone to inspect it carefully before doing anything. The ghost needed editing.

I added response-length limits and kept the decorative voice short, while retaining the distinction between a proposed plan and something the application has actually executed or checked against a working implementation. It writes suggestions. You still have to decide whether they make sense for the project sitting in front of you.

Why Does Open Innovation Matter?

An unfinished repository can contain notes that were never intended for anyone outside the project, so using a downloaded local model lets the application send its evidence to Ollama on the same machine. No hosted-model key required.

There are exclusions for obvious secret filenames and symlinks, although those exclusions are not a comprehensive secret scanner, and choosing a cloud model would undermine the local inference arrangement described here. Choose a local model.

Once the application dependencies and model weights are installed, the generation path can work without internet.

And open weights let me try a different installed model without replacing the product, while keeping the prompts and response schema available for inspection when the tiny model offers dubious advice about a CSV exporter. The medium is replaceable.

A closed API could generate repository plans too, whereas the local open-weight approach lets this application keep its working evidence on the user’s computer and leaves the model choice under their control. That fits this project.

The Spirit of It

The feature I care about most is Rest in peace, because learning from an experiment should not oblige you to maintain it forever just to justify having spent a few weekends building it. Some projects can end.

Maybe the useful outcome was discovering a framework you enjoyed, or discovering that you did not actually want to operate a social network for houseplants after the initial excitement wore off. The plants will recover.

So the app gives unfinished work a manageable ending, whether that means making one tiny change or finally writing the goodbye that lets you keep the lesson without keeping the entire project alive indefinitely. No streak to protect. There is already enough guilt in an untouched repository without me adding a leaderboard to it.

An old project does not need to become your next company to have mattered, and I wanted this little Halloween application to make revisiting one feel less like being handed another obligation. Just unfinished business.

Prize Categories

Best Use of Gemma applies to the local Gemma 3 1B generation used in the measured sample above, with support for switching installed Ollama models and Gemma 3 4B documented as a starting option. Open weights, actual ghosts.

Top comments (0)