# GhostMemo: Keeping Memories Alive with a Local AI Ghost Storyteller.

> Source: <https://dev.to/arslan17infinite/ghostmemo-keeping-memories-alive-with-a-local-ai-ghost-storyteller-2o1l>
> Published: 2026-10-29 15:35:10+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)*

GhostMemo is a small memory journal with a ghost-story feature. I built it to give saved memories an eerie second life: write a memory, save it in the browser, and ask an AI model to turn it into a mysterious fictional retelling.

Memories stay in the browser’s local storage, and each one can be deleted. The generated story is shown as fiction because the model may invent details that were not in the original memory.

The website shows the project, but its AI storyteller works in the local version with Ollama running on my computer. GitHub Pages cannot connect to the Ollama model on my laptop.

[View the GhostMemo code on GitHub](https://github.com/arslan17infinite/GhostMemo)

GhostMemo uses HTML, CSS, and JavaScript in a single `index.html` file. JavaScript saves and displays memories using the browser’s local storage.

For the storyteller, I connected the page to Ollama running on my computer and used Gemma 3 1B (`gemma3:1b`). When I click the ghost-story button, the app sends the memory to my local Ollama model and displays the response with a label explaining that it may contain invented details. No API key is included in the browser code.

Using an open-weight model let me try AI storytelling on my own computer without paying for a hosted AI API or putting an API key in my website code. The memory stays in my browser, and the story request goes to Ollama running locally rather than to a GhostMemo server.

I can learn from the model’s output and change the project as I improve it. That control is important for a project built around personal memories.

My first test started with a few lines about hearing knocks at a locked door. Gemma turned it into a much longer ghost story, adding details that were never in my memory. That surprised
