VaultChat - local-first WhatsApp archive reconstruction tool built with Phoenix LiveView

VaultChat — local-first WhatsApp archive reconstruction with Phoenix LiveView + whisper.cpp

Hi everyone,

I want to share an early alpha project I’ve been building: VaultChat.

The problem

WhatsApp exports with many voice notes are hard to review. The text archive alone is incomplete — important statements often live inside audio messages. When you need to reconstruct what was said and when, manually listening through hundreds of voice notes is slow and error-prone.

What VaultChat does

It is a local-first archive reconstruction and review tool:

  1. Import a WhatsApp export ZIP via browser upload

  2. Parse _chat.txt across common timestamp variants

  3. Transcribe voice notes with whisper.cpp — runs entirely locally

  4. Rebuild a merged chronological timeline of text + audio transcripts + media

  5. Search, filter by sender/type/date, export as Markdown/JSON/CSV

The key design principle: everything runs on your machine. No account, no cloud, no data leaving your machine. docker compose up and open localhost.

Stack

  • Elixir / OTP

  • Phoenix + LiveView

  • SQLite via ecto_sqlite3

  • ffmpeg for audio decoding

  • whisper.cpp for local transcription

  • Docker Compose

Current state

Early alpha — the main end-to-end workflow is working on real archives.

Some things I found interesting to build in Elixir:

  • LiveView PubSub for real-time per-file processing progress

  • ETS GenServer for progress state that survives page remounts mid-processing

  • Multi-stage Docker build: whisper-cli compiled on Debian in Stage 0 and copied into the runtime image — avoids musl/glibc mismatch

  • SQLite batch inserts chunked to stay under the 32766 bind variable limit

  • String.replace_invalid/2 to sanitize whisper output before Jason encoding

Known limitations

  • WhatsApp only for now (Telegram planned)

  • Docker-first — no one-click installer yet

  • Early alpha — rough edges in the UI

  • No LLM features yet (planned via ollama later)

Feedback I’d appreciate

  • Does the use case sound real and useful to you?

  • Does Phoenix LiveView feel like a good fit for this kind of local workflow tool?

  • Any thoughts on Docker-first as the packaging approach for an alpha?

  • What would make you actually try it?

3 Likes