VIGIL: Keep Your Family Stories Off the Cloud β An Offline AI Memory Archive
"Every time we ask a cloud AI to remember something for us, we make a quiet trade: convenience for control. We surrender our memories, rituals, and unwritten life details to corporate servers. I built **VIGIL* to explore a different contract: an air-gapped sanctuary where human lore remains sovereign on the keeperβs machine, while AI serves as a replaceable local instrument rather than a permanent owner."
This is my submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine.
What I Built
VIGIL is a local-first archive for preserving the stories, rituals, names, recipes, and small details that make someone impossible to forget.
A user can:
- Preserve a memory about a person, place, date, and sensory detail.
- Search the archive locally with instant client-side querying.
- Open the original memory untouched and intact.
- Ask for a short AI-generated "echo" (reflection).
- Export and import the archive as portable, sovereign JSON.
The original memory is always kept strictly separate from the generated reflection. VIGIL never pretends that an AI-generated paragraph is the voice of someone who has passed away.
I interpreted Ghost in the Machine as a question about what remains when a machine reflects something deeply human back to us. The ghost in VIGIL is not a simulated person. It is the signal that remains in a recipe, a song, a kitchen, or a phrase someone left behind.
Demo & Video Walkthrough
The demo works immediately without an account, backend server, or model installation.
Try it in one minute:
- Open "The orange radio".
- Click "Ask for an echo".
- Read the offline reflection.
- Add a memory of your own.
- Search for
radioormusic. - Export the archive as JSON.
For the full local-AI experience, launch Ollama and select **Local open model.
How I Built It
VIGIL offers two reflection paths designed around resilience and privacy:
1. Offline Whisperer
The default path is deterministic and requires no network connection, AI model, or API key. This guarantees the archive still functions when the internet is completely unavailable. Capturing, searching, exporting, and reflecting on memories never depend on a remote service.
2. Local Open-Weight AI
When the user selects Local open model, VIGIL communicates directly from the browser to Ollama running on localhost:
ollama pull llama3.2:3b
ollama serve
The rest of the stack is intentionally minimal, zero-dependency, and inspectable:
-
Browser
localStoragefor sovereign, on-device data persistence. - Local full-text search executed client-side.
- JSON export & import for complete data ownership and portable backups.
- Static GitHub Pages deployment with no telemetry, tracking, or analytics.
- Zero hosted databases and no API keys required.
Architecture Overview
Selected Memory
β
βββ Offline Whisperer
β βββ Deterministic local reflection (Zero network / No model)
β
βββ Ollama on localhost
βββ Open-weight model reflection (llama3.2:3b)
Browser localStorage
βββ Capture Β· Search Β· Export Β· Import
There is no intermediary VIGIL server. When the local open model is selected, requests go directly from the client's browser to the user's local Ollama process.
Why Does Open Innovation Matter?
A closed cloud AI API turns privacy into a mere promise:
"Trust us. We will keep your family stories safe."
VIGIL makes privacy a structural guarantee visible in the architecture.
With open models and open-source software:
- Keeper Autonomy: The archive keeper can inspect every line of code, select their own local model, modify prompt templates, run smaller quantized models, fine-tune family-specific LoRA adapters, or remove the AI layer entirely while retaining their memories.
- Failure-as-Design: If Ollama is not running, VIGIL does not silently forward data to a remote cloud fallback or hallucinate fake status. It cleanly falls back to a clearly-labeled offline reflection.
- Permanent Availability: If internet infrastructure goes down, the core archival experience remains 100% operational.
The model is never the owner of the memory. It is simply an instrument the keeper can put down at any time.
The Important Design Decision
VIGIL strictly demarcates:
- The original memory (what the human actually experienced and recorded).
- The generated interpretation (the machine's echo).
- The source of that interpretation (deterministic whisperer vs. local LLM).
This distinction is vital. A memory archive must preserve what a person actually wrote, never gradually supplanting it with synthetic, confident machine prose. Every echo is explicitly labeled as an interpretation; the original memory remains the inviolable source of truth.
Honest Limitations
-
Browser Storage Lifecycle: VIGIL is an exploration of privacy-first architecture, not an encrypted cold-storage vault. Because data lives in browser
localStorage, clearing browser cache/data will remove local records. Important archives should regularly be exported to JSON backups. - Sample Data: The public GitHub Pages demo loads sample starter memories so visitors can experience the archive immediately without entering sensitive personal data.
The Spirit of It
The moment I wanted VIGIL to evoke was deliberately quiet:
Someone opens a memory about an orange radio, reads the sensory details of a kitchen and a fading song, and receives an echo that does not attempt to impersonate anyone.
It simply notices that the detail was kept.
A memory does not need a cloud-sized model to matter. It needs a safe place to remain.
What I Would Build Next
- On-device speech-to-text with Whisper.cpp for spoken oral histories.
- Local vector embeddings for semantic and emotional memory search.
- Client-side AES-GCM encrypted backup archive files.
- Consent-based, family-specific LoRA adapters.
- Encrypted peer-to-peer sync between household devices.
Code & Links
- Live Demo: https://sharan-s-dev.github.io/VIGIL/
- Source Code: https://github.com/sharan-s-dev/VIGIL
- License: MIT
Top comments (0)