arruah

arruah

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?

Where Next?

Popular in Discussions Top

AstonJ
Are there any Elixir or Erlang libraries that help with this? I’ve been thinking how streaming services like twitch have exploded recentl...
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31695 143
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54921 245
New
und0ck3d
Hello everyone! A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying...
New
lorenzo
Hey everone! I created a prototype for my app using Nodejs for the api. But the framework I chose wasnt great (in general theresnt any g...
New
tmbb
This is a post to discuss the new Phoenix LiveView functionality. From Chris’s talk, it appears that they generate all HTML on the serve...
342 18584 126
New
Rustixir
Hi everyone, im working on find best language/framework/system for high concurrency, high performance and stable performance after wor...
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31494 112
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40042 209
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

We're in Beta

About us Mission Statement