VAULTEX

Zero-Knowledge End-to-End Encrypted Messaging

Pipeline Status License: GPL-3.0 Rust Latest Release


Overview

VAULTEX is a zero-knowledge, end-to-end encrypted messaging application built for users and organizations that refuse to compromise on privacy. Unlike conventional secure messengers that still collect metadata, require phone numbers, or store social graphs server-side, VAULTEX is designed so that the server never has access to plaintext messages, private keys, contact lists, IP addresses, or any user metadata whatsoever.

The cryptographic foundation implements the Signal protocol (X3DH key agreement and Double Ratchet message encryption) using audited, production-grade libsodium primitives. Every message benefits from mandatory forward secrecy and post-compromise security. Sealed sender construction ensures that even the server cannot determine who is communicating with whom.

VAULTEX is fully open source and auditable. There are no proprietary black boxes, no phone number or email requirements, and no trust placed in any third party. Identity is purely cryptographic: users generate and control all keys locally on their own device.

Key Features

Architecture

VAULTEX uses a Rust + React/TypeScript dual stack with Tauri as the desktop shell.

Rust Workspace

Crate Purpose
crates/vaultex-crypto/ Core cryptographic library: Ed25519, X25519, X3DH, Double Ratchet, XChaCha20-Poly1305, sealed sender, group messaging, media encryption. Uses libsodium bindings. Shared across desktop, server, and mobile FFI.
crates/vaultex-server/ Backend server built on Axum/Tokio. REST API, WebSocket relay, call signaling. PostgreSQL 16 for persistent storage, Redis 7 for caching and pub/sub. Demo mode available with VAULTEX_DEMO=1.
crates/vaultex-transport/ P2P transport abstraction layer with four backends (local network, Wi-Fi Direct, Bluetooth, Tor), a TransportManager for automatic failover, and a MeshRelay for multi-hop delivery.
crates/vaultex-ffi/ C FFI interface for mobile integration (Android JNI, iOS Swift bridge).

Applications

App Path Technology
Desktop apps/desktop/ Tauri 2.x shell, React 18 + TypeScript frontend, Vite 5.x build, Tailwind CSS, Zustand state management, SQLCipher local storage
Android apps/android/ Rust FFI via JNI
iOS apps/ios/ Rust FFI via Swift bridge
Mobile (shared) apps/mobile/ React Native shared UI layer
Website apps/website/ Astro marketing site, Docker containerized

Infrastructure

Docker Compose stack with PostgreSQL 16, Redis 7, Nginx for TLS termination and reverse proxying, and the Rust server.

Security Model

What the Server Knows

The server is designed under a zero-trust model. It processes and relays encrypted blobs but has no ability to:

What the Server Stores

Only the minimum required for delivery: public identity keys, signed pre-keys, one-time pre-keys, and encrypted message payloads queued for offline delivery.

Cryptographic Primitives

Function Primitive Source
Identity keys Ed25519 libsodium
Key agreement X25519 libsodium
Session establishment X3DH (Extended Triple Diffie-Hellman) Signal specification
Message encryption Double Ratchet Signal specification
Symmetric encryption XChaCha20-Poly1305 libsodium
Key derivation HKDF-SHA256 libsodium
Local DB encryption SQLCipher + Argon2id SQLCipher

Key Management

Getting Started

There are three ways to run VAULTEX, depending on what you're doing:

If you want to… See
Try it on a single PC, no setup § Quick Start: run a server (Docker)
Test on multiple PCs over a LAN § Multi-machine testing on a LAN
Install only the desktop app and connect to an existing server § Install the desktop client
Run the server in the cloud with TLS and auto-deploy from GitLab infrastructure/DEPLOYMENT.md
Build from source as a developer § Build from source (developers)

Quick Start: run a server (Docker)

The fastest way to get a working VAULTEX backend on any computer that has Docker:

git clone https://gitlab.com/secureapps/vaultex.git
cd vaultex/infrastructure
cp .env.example .env                  # safe dev defaults; override as you like
docker compose up -d                  # postgres + redis + server + nginx
curl http://localhost:8080/api/v1/health

That's it. The server is now reachable at http://localhost:8080 (and http://<this-host's-LAN-IP>:8080 from other PCs on the same network — useful for testing). Stop with docker compose down. To wipe state, docker compose down -v.

For TLS, a real domain, and automated deploys, follow infrastructure/DEPLOYMENT.md.

Install the desktop client

The desktop app is not distributed via Docker — it's a native Tauri GUI. Download the platform-specific installer from GitLab → Releases:

Platform File Notes
Windows 10/11 vaultex-desktop-*.msi Webview2 bundled; no other dependencies
macOS vaultex-desktop-*.dmg First launch: right-click → Open (Gatekeeper)
Debian / Ubuntu vaultex-desktop-*.deb sudo dpkg -i vaultex-desktop_*.deb
Other Linux vaultex-desktop-*.AppImage chmod +x and run

On first launch, point the app at your server URL (Settings → Server Connection). Use http://<server-host>:8080 for a local LAN server, or https://<your-domain> for a TLS-fronted production server. Click Test Connection to verify the URL actually reaches a VAULTEX server before you commit to it — it distinguishes "unreachable", "not a VAULTEX server", and "reachable but your account isn't registered here" rather than just claiming success.

Build from source (developers)

Prerequisites:

git clone git@gitlab.com:secureapps/vaultex.git
cd vaultex
rustup component add clippy rustfmt

# Start infrastructure services (PostgreSQL, Redis, Nginx, server)
cd infrastructure && docker compose up -d && cd ..

# Build + test the Rust workspace
cargo build --workspace
cargo test --workspace

# Set up the desktop frontend
cd apps/desktop && npm install && npm test

# Launch the desktop app in development mode (HMR enabled)
cargo tauri dev

# Build a native installer for this platform
cargo tauri build      # output → apps/desktop/src-tauri/target/release/bundle/

Run the Server (recommended — persistent Postgres + Redis)

For any real test, especially cross-machine, use the persistent stack. It survives restarts:

# Linux / macOS / WSL
scripts/dev-server-up.sh

# Windows PowerShell
.\scripts\dev-server-up.ps1

The script brings up Postgres + Redis via Docker, waits for them to be healthy, then runs the server binary natively. The companion scripts/dev-server-down.sh (and .ps1) shuts everything down — pass --wipe if you also want to clear the data volumes.

Demo Mode (no Docker — for unit tests only)

Demo mode runs the server with in-memory storage. Every restart wipes every account, every contact, every message. This is fine for unit tests, CI, or a quick local kick-the-tires, but it is not appropriate for cross-machine testing — clients will silently fall back to local-only mode if the server has forgotten their account.

VAULTEX_DEMO=1 cargo run -p vaultex-server

The server prints a loud warning banner at startup when running in demo mode.

Useful Commands

# Lint and format checks
cargo clippy --workspace --all-targets
cargo fmt --all -- --check
cd apps/desktop && npx eslint src/ --ext .ts,.tsx

# Frontend type checking
cd apps/desktop && npx tsc --noEmit

# Security audit
cargo audit

For complete development environment setup, pre-commit hooks, and tooling details, see CONTRIBUTING.md.

Project Status

VAULTEX is under active development. Phases 1 through 5 are complete; Phase 6 (Video Chat) is in progress.

Phase Scope Status
1a -- Foundation Crypto core, server skeleton, infrastructure, desktop scaffold Complete
1b -- Core Features Onboarding, session establishment, send/receive messaging, chat UI Complete
1c -- Security Features Sealed sender, self-destruct, duress PIN, Tor transport, key rotation Complete
1d -- Polish and Release Media support, group messaging, installers, security audit Complete
2 -- Mobile Android and iOS apps via Rust FFI, React Native, push notifications, biometric auth Complete
3 -- P2P Off-Grid Transport abstraction, local network / Wi-Fi Direct / Bluetooth / Tor backends, mesh relay Complete
4 -- Enhancements Message search, read receipts, reactions, editing, export/import, app lock, notifications Complete
5 -- Voice Chat E2E encrypted call signaling, WebRTC SRTP key derivation, call UI, call history Complete
6 -- Video Chat Video call UI, group video, screen sharing, quality panel In Progress

What Is Implemented

Cryptography (crates/vaultex-crypto/):

Server (crates/vaultex-server/):

Desktop App (apps/desktop/):

Transport (crates/vaultex-transport/):

Mobile (apps/android/, apps/ios/, apps/mobile/):

Infrastructure:

By the Numbers

Counted from tracked source at the v0.10.2 tag via git ls-files and wc. Excludes generated lockfiles (package-lock.json, Cargo.lock), build output (target/, dist/), and dependencies (node_modules/).

Source code

Language Files Lines of code
Rust (.rs) 105 27,904
Kotlin (.kt) 86 15,436
TypeScript + TSX (.ts, .tsx) 99 13,257
Shell (.sh) 17 2,693
HTML (.html) 3 1,788
Swift (.swift) 18 1,368
Astro (.astro) 12 560
TOML (.toml) 9 342
PowerShell (.ps1) 4 170
SQL (.sql) 3 128
JavaScript (.js, .mjs) 7 128
CSS (.css) 2 114
Total source 365 63,888

Documentation

Format Files Lines Words Pages (~250 wpp)
Markdown (.md) 48 10,725 66,468 ~266

Tests

Suite Count
Rust test functions (#[test], #[tokio::test]) 453
TypeScript test cases (Vitest + WDIO Mocha describe/it/test) 143
Total assertions 596

Repository layout

Section Path Files
Rust workspace crates/ 85
Applications apps/ (desktop + android + ios + mobile + website) 302
Documentation docs/ 30
End-to-end / integration tests tests/ 15
Infrastructure infrastructure/ 13
Repository root + misc (other) 34
Total tracked 479

Project history: 202 commits on main/develop since project start, across six release tags (v0.7.0, v0.8.0, v0.9.0, v0.10.0, v0.10.1, v0.10.2).

Documentation

Document Description
VAULTEX_DESIGN.md Full design document covering architecture, cryptographic protocol, API design, database schema, and roadmap
CONTRIBUTING.md Developer setup, Git workflow, code review process, and definition of done
CHANGELOG.md Project changelog in Keep a Changelog format
docs/adr/ Architecture Decision Records
docs/team/ Team roles, sprint processes, and CI/CD automation documentation
docs/testing/ Acceptance test plans

Contributing

Contributions are welcome. VAULTEX follows a GitFlow branching model with Conventional Commits. All changes targeting cryptographic code, server middleware, or authentication require Security Engineer review.

See CONTRIBUTING.md for full instructions on setting up your environment, branch naming, commit format, and the merge request process.

License

This project is licensed under the GNU General Public License v3.0.

Security

VAULTEX takes security seriously. If you discover a security vulnerability, please report it responsibly:

All changes to cryptographic code (crates/vaultex-crypto/), server authentication middleware, and crypto integration paths undergo mandatory security review before merge. The project maintains a Security Audit Checklist and plans a formal security audit prior to public release.