This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine
What if you could preserve meaningful memories as candles and ask an AI to help you remember them — without sending your memories to a cloud AI service?
That idea inspired Ofrenda, an experimental local-first memory altar built with HTML, JavaScript, and Ollama.
What I Built
Ofrenda is inspired by Día de los Muertos, a tradition of remembering and honoring loved ones.
The idea is simple: each memory becomes a candle. You can add memories, ask questions about what you've saved, and let a locally running AI model try to recall relevant details. When a memory is relevant to your question, its candle can be highlighted.
The goal isn't to build another chatbot that answers everything. It's to explore an assistant that works with a small collection of personal memories and admits when it doesn't find something relevant.
Features
Memory candles: Add and save meaningful memories.
Ask questions: Query the memories you've stored.
Local AI: Generate responses using an Ollama model running on your computer.
Relevant candle highlighting: Highlight memories matched to a question.
A simple fallback: When no relevant memory is found, Ofrenda can respond with “I don't remember that.”
Browser storage: Memories are saved in local storage.
Code
Anirban846
/
ofrenda
A local-first memory altar for Día de los Muertos, powered by Ollama and open-weight AI.
# Ofrenda 🕯️
**A local-first memory altar powered by Ollama and open-weight AI.**
Ofrenda is a small experimental project inspired by Día de los Muertos. Add meaningful memories as candles, ask questions about them, and let a local AI model help you recall what you've saved.
## Features
- 🕯️ Add and save personal memories as candles
- 💬 Ask questions about saved memories
- 🧠 Uses Ollama to run an AI model locally
- 🔒 Keeps memories in browser local storage and sends selected memories to the local Ollama service
- ✨ Highlights candles relevant to a question
- 🌱 Responds when it cannot find a relevant saved memory
## Requirements
- Python 3
- [Ollama](https://ollama.com/)
- A supported Ollama model, such as llama3.2:3b
## Run locally
1. Install Ollama and download the model:
```powershell
ollama pull llama3.2:3b
```
2. Open PowerShell in the project directory and…
How I Built It
Ofrenda combines a simple browser interface with a locally running language model.
You add memories, which are stored in your browser.
When you ask a question, lightweight text matching identifies potentially relevant memories.
Ofrenda sends the selected memories and your question to the local Ollama service.
The model generates an answer based on the supplied context.
A basic text-grounding check evaluates the answer, and relevant candles are highlighted.
This approach keeps the project small and easy to experiment with. It also has limitations: text matching can miss relevant memories, and a lightweight grounding check cannot guarantee that every answer is correct.
🔒 Why Local-First AI?
Personal memories can be sensitive. I wanted to explore an approach that doesn't depend on a hosted AI API.
Ofrenda stores memories in browser local storage and sends selected memories to the local Ollama service for answering. It doesn't require a cloud AI API.
This is a local-use design, not a guarantee of complete security. Browser storage isn't encrypted by default, and the computer running the application remains part of the privacy boundary.
🛠️ Tech Stack
HTML
CSS
JavaScript
Ollama
llama3.2:3b (local language model)
🚀 Run It Locally
Prerequisites: Python 3, Ollama, and a compatible local model.
First, download the model:
ollama pull llama3.2:3b
Clone the repository:
git clone https://github.com/Anirban846/ofrenda.git
cd ofrenda
Start a local web server:
python -m http.server 8000 --bind 127.0.0.1
Open the app in your browser:
http://127.0.0.1:8000/ofrenda.html
Make sure Ollama is running and the model name in the app matches your installed model. If your browser blocks requests to Ollama, you may need to configure Ollama's allowed origins for the local address and restart Ollama.
🧪 What I Tested
During development, I tested two important cases:
A known memory: When I saved a memory about adding salt until water tastes like the sea, Ofrenda returned the saved instruction.
An unknown memory: When I asked about a movie that wasn't in the saved memories, Ofrenda returned its “I don't remember that” fallback.
These tests helped me improve the app's handling of missing information. They don't prove that hallucinations are impossible, but they demonstrate the behavior I wanted to explore.
💡 What I Learned
Building Ofrenda reinforced an important lesson: telling an AI model not to hallucinate isn't enough.
A more reliable design needs to consider which memories are relevant, what context the model receives, and whether its response is supported by that context. Even simple text-based checks can introduce false positives and false negatives, so they need to be treated as safeguards rather than guarantees.
I also explored how a local model can support an AI experience without requiring a hosted inference API.
Why Does Open Innovation Matter?
Open innovation gives developers room to experiment with ideas that might otherwise remain just concepts. Using accessible tools and open-weight models made it possible to build and test this small project locally.
Ofrenda is an experiment, and there is plenty of room to improve its memory retrieval, reliability, accessibility, and visual design.
The Spirit of It
Ofrenda started with a simple thought: technology should help us remember, not just generate answers.
Inspired by Día de los Muertos, this project treats memories as something worth preserving, with each candle representing a moment we don't want to lose. The AI isn't meant to invent a life story or pretend to know everything. It's meant to help us revisit what we've chosen to remember — and acknowledge when something isn't there.
That idea shaped one of the most important parts of the project: “I don't remember that” should be a perfectly acceptable answer.
I also wanted to explore a more personal relationship with AI, one where memories can stay on our own computers instead of being sent to a hosted AI service. Ofrenda is a small experiment, and it isn't a perfect memory system, but it represents the kind of technology I want to explore: more thoughtful about privacy, more honest about uncertainty, and built around people rather than just prompts.
Not every memory needs to be generated. Some simply need a candle. 🕯️
Top comments (2)
'i don't remember that' as a valid answer is the honest design choice in the whole piece.
The trust question is the one nobody wants to answer. Capability is easy to demo, reliability is not.