Vault-Engine: Self-Hosted, E2EE AI Document Search and Q&A

Aug 1, 2026

Introduction

The promise of using Large Language Models to query personal or sensitive documents is often overshadowed by a critical concern: data privacy. While many “local-first” solutions exist, they typically process your unencrypted data on a local server, leaving a potential attack surface. Vault-engine is a self-hosted document search and Q&A platform that fundamentally solves this problem by implementing browser-based end-to-end encryption (E2EE). With an impressive 4,500+ stars on GitHub, this project ensures that your documents are only ever decrypted on your client machine, meaning the server—even one running on your own hardware—never has access to the plaintext content. This post provides the definitive guide to understanding, deploying, and utilizing Vault-engine for truly private AI-powered document analysis.

What Is Vault-Engine?

Vault-engine is an open-source, self-hosted document search platform that provides AI-powered question-answering capabilities for developers and privacy-conscious users. Developed by the user `fishonbike`, the project is built with a modern web stack, utilizing Next.js for the frontend and backend, and is written primarily in TypeScript. It distinguishes itself from other Retrieval-Augmented Generation (RAG) tools through its uncompromising commitment to privacy via end-to-end encryption.

The architectural philosophy of Vault-engine is “zero trust for the server.” All encryption and decryption operations happen exclusively in the user’s browser using the standard Web Crypto API (`crypto.subtle`). According to the project’s own description, this means that uploaded documents, search indexes, and embeddings are stored as encrypted blobs that are meaningless to the server. To achieve this, Vault-engine runs critical components directly in the browser using WebAssembly (WASM), including `tantivy-js` for full-text search, `voy-search` for vector similarity search, and `Transformers.js` for generating embeddings. The project is licensed under the AGPL-3.0, ensuring it remains firmly in the open-source domain.

Why Vault-Engine Matters

The term “local AI” has become increasingly popular, but it often carries a misleading sense of security. While running an LLM locally with a tool like privateGPT prevents data from being sent to OpenAI, the local server itself still processes your sensitive documents in plaintext. This leaves the data vulnerable if the machine is compromised. Vault-engine matters because it addresses this specific threat model by making the server a “dumb” storage layer. The password you set for your vault never leaves your browser; it is used as the key to encrypt and decrypt everything locally. This is a paradigm shift for self-hosted AI, moving from server-side security to client-side empowerment.

Furthermore, this E2EE architecture opens up new possibilities for multi-user, self-hosted environments. Because the server only stores encrypted data, a single Vault-engine instance could theoretically serve multiple users without any risk of data cross-contamination, as the server has no ability to decrypt the content of any user’s vault. By leveraging the power of WebAssembly to run the entire RAG pipeline—from embedding to search—in the browser, Vault-engine provides a blueprint for building truly private, multi-tenant AI applications that respect user sovereignty above all else.

Key Features

  • Browser-Based End-to-End Encryption: The core differentiator of Vault-engine. All files are encrypted using AES-256-GCM with a key derived from your password via PBKDF2. The server never sees your password or your unencrypted data.
  • Self-Hosted and Easy to Deploy: Distributed as a single Docker image, allowing you to get a secure document search instance running on your own hardware with a single command.
  • In-Browser AI Pipeline: The entire RAG process—text extraction, embedding generation (with Transformers.js), and indexing—happens on the client-side, ensuring maximum privacy.
  • Hybrid Search Capabilities: Utilizes both full-text search (via `tantivy-js` in WASM) and vector similarity search (via `voy-search` in WASM) to find the most relevant document chunks for your queries.
  • Wide Document Support: Supports common document formats including PDF, DOCX, and TXT, with client-side parsing to extract text content before encryption.
  • Modern and Responsive UI: Built with Next.js, TailwindCSS, and Radix, the interface is clean, intuitive, and works seamlessly across desktop and mobile devices.
  • Local-First Data Persistence: All encrypted data is stored in a volume on your host machine, giving you full ownership and control over your digital archive.

How Vault-Engine Compares

In the rapidly growing space of local RAG solutions, Vault-engine’s primary competitors are privateGPT and AnythingLLM. While all three platforms enable you to query your documents using local AI, they have fundamentally different security architectures and philosophies.

Feature Vault-Engine privateGPT AnythingLLM
Architecture Web App (Client-Side E2EE) Web App (Server-Side) Desktop Application
End-to-End Encryption Yes (Browser-level) No (Server sees plaintext) No (Local file access)
Core Technology Next.js / WASM / Transformers.js Python / FastAPI / LlamaIndex Electron / Node.js
Multi-User Potential High (Zero-trust server) Low (Requires container per user) Single User

The most critical differentiator is Vault-engine’s end-to-end encryption. While privateGPT is “private” in the sense that it doesn’t send data to a third party, it still requires you to trust your own local server environment. Vault-engine requires no such trust; a compromised server would only yield encrypted gibberish. AnythingLLM, as a desktop application, offers a similar level of privacy for a single user but lacks the multi-user, web-accessible model of Vault-engine. The trade-off for Vault-engine’s superior security is that all processing is done on the client machine, which may be slower on low-end devices compared to a server-side approach where a powerful GPU can be leveraged for embeddings and search.

Getting Started: Installation

The easiest and most recommended way to deploy Vault-engine is by using the official Docker image. This method ensures that the application and its dependencies are contained and correctly configured.

Prerequisites

You must have Docker installed and running on your system. The application itself is lightweight, but you will need sufficient disk space for the Docker image and the data volume where your encrypted documents will be stored.

Docker Installation

Run the following command in your terminal. This will pull the latest image from Docker Hub, start the container, and map a local directory named vault_data for persistent storage.

docker run -p 3000:3000 -v vault_data:/data fishonbike/vault

Building from Source

For developers who wish to modify the code, you can build the project from source. You will need Node.js (version 18 or higher) and npm installed.

git clone https://github.com/fishonbike/vault-engine.gitncd vault-enginennpm installnnpm run buildnnpm start

Once running, you can access the application by navigating to http://localhost:3000 in your web browser.

How to Use Vault-Engine

The user experience of Vault-engine is designed for simplicity. Upon first launch, you are prompted to create a “vault.” A vault is an isolated, encrypted container for your documents.

  1. Create a Vault: Choose a name for your vault and, most importantly, a strong password. This password is your encryption key and is never sent to the server. If you forget this password, your data is irrecoverable.
  2. Upload Documents: Once inside the vault, you can upload supported documents (PDF, DOCX, TXT). The browser will then begin the client-side processing: extracting text, generating embeddings, and building the search indexes. This may take some time depending on the size of the documents and the performance of your computer.
  3. Ask Questions: After indexing is complete, you can use the chat interface to ask questions. The browser performs a hybrid search across the encrypted index, decrypts the most relevant chunks, and sends them to your configured LLM as context to generate a grounded answer.

Real-World Use Cases

  • Journalists and Researchers: Securely analyze sensitive source materials or interview transcripts without risking exposure, even on a shared server infrastructure.
  • Legal Professionals: Query thousands of pages of confidential case files, contracts, or discovery documents with the assurance that the content remains end-to-end encrypted.
  • Healthcare and Personal Finance: Individuals can upload their medical records or financial statements to ask complex questions without their private data ever being processed by a third-party AI or a server administrator.
  • Corporate Knowledge Bases: Teams can deploy an internal instance of Vault-engine to share and query proprietary information, with each user’s vault remaining cryptographically isolated.

Contributing to Vault-Engine

Vault-engine is an open-source project that thrives on community involvement. Contributions are welcome, whether it’s by improving the documentation, fixing bugs, or adding new features. The project’s development is centered on GitHub, where you can submit issues and pull requests. Before contributing code, it is recommended to engage with the community on the project’s Discord server to discuss potential changes and align with the development roadmap. Key areas for contribution include adding support for new document formats and improving the efficiency of the in-browser WASM modules.

Community and Support

The main hub for the Vault-engine community is its Discord server, the link to which is available in the GitHub repository README. This is the best place for real-time support, feature discussions, and sharing your experiences with the project. For bug reports and formal feature requests, the GitHub Issues page is the official channel. The project is actively maintained, with frequent updates that address community feedback and improve the stability and performance of the platform.

Conclusion

Vault-engine is not just another local RAG tool; it is a statement about the future of private AI. By pioneering a browser-based, end-to-end encrypted architecture, it sets a new standard for data sovereignty in the age of generative models. Its reliance on WebAssembly and modern web APIs demonstrates a forward-thinking approach that prioritizes user control without sacrificing the power of AI-driven search. While the client-side processing model may not be suitable for every low-power device, it is the only architecture that can mathematically guarantee that your data remains yours and yours alone.

For any developer, researcher, or individual who believes that privacy is a non-negotiable requirement for personal AI, Vault-engine is the definitive choice. Its elegant design and single-command Docker deployment make it one of the most accessible and secure tools in the open-source ecosystem. We strongly encourage you to try it out, join the Discord community, and star the repository to support the future of truly private artificial intelligence.

What is Vault-engine?

Vault-engine is a self-hosted, AI-powered document search and question-answering platform that features end-to-end encryption. It allows you to query your documents using LLMs while ensuring your data remains completely private, as encryption and decryption happen only in your browser.

How is Vault-engine different from privateGPT?

The key difference is end-to-end encryption. With privateGPT, your local server processes your documents in plaintext. With Vault-engine, the server only ever stores encrypted data, and all decryption happens client-side in your browser, offering a higher level of security.

How do I install Vault-engine?

The easiest way is to use Docker. Run the command docker run -p 3000:3000 -v vault_data:/data fishonbike/vault in your terminal. You can then access the application at http://localhost:3000.

What happens if I forget my vault password?

Your vault password is the encryption key. It is never sent to the server and is not recoverable. If you forget your password, the data in that vault will be permanently inaccessible. Be sure to store your password securely.

Can I use my own LLM with Vault-engine?

Yes, Vault-engine allows you to configure your own LLM endpoint. In the application settings, you can provide the API URL and key for any OpenAI-compatible model, including local models served via tools like Ollama or LM Studio.

What file types does Vault-engine support?

Currently, Vault-engine supports PDF, DOCX, and TXT files. All parsing and text extraction from these files happen securely within your browser before the content is encrypted and indexed.

Does running the AI in my browser make it slow?

The initial indexing process can be computationally intensive and may take time depending on your computer’s performance and the size of your documents. However, once indexed, search and retrieval are very fast thanks to optimized WebAssembly libraries. The final LLM call still goes to an external or local server.