Technology Stack

Core Library (Shared)

ComponentTechnologyNotes
LanguageRustMemory safety, cross-platform
Cryptoed25519-dalek, x25519-dalek, chacha20poly1305, argon2Audited (ed25519/x25519: Trail of Bits) + IETF-standardized (chacha20/argon2)
StorageSQLiteEncrypted with XChaCha20-Poly1305
Serializationserde + JSONProtocol messages
Networkingureq (HTTP v2) + ohttp (OHTTP, RFC 9458)Client talks to the relay over the synchronous /v2/ HTTP API, wrapped in Oblivious HTTP; independent operation is the target, not the current deployment
TLSrustls (aws-lc-rs)TLS 1.3 with SPKI certificate pinning
FFIUniFFISwift/Kotlin bindings

Mobile Apps

iOS

ComponentTechnology
UI FrameworkSwiftUI
LanguageSwift
BindingsUniFFI (SPM package)
Min iOS15.0

Android

ComponentTechnology
UI FrameworkJetpack Compose
LanguageKotlin
BindingsUniFFI (Gradle dependency)
Min SDK26 (Android 8.0)

Desktop Apps (Native)

PlatformFrameworkLanguageBindings
macOSSwiftUISwiftUniFFI (SPM)
Linux (GTK)GTK4 + libadwaitaRustDirect (same process)
Linux (Qt)Qt 6 (Widgets)C++C ABI (vauchi-cabi)
WindowsWinUI 3C# (.NET 8)C ABI (vauchi-cabi)

Web Demo

ComponentTechnologyNotes
FrameworkSolidJSTypeScript, WASM bridge
Corevauchi-core (WASM)wasm32-unknown-unknown target
CryptoPure RustCrypto (WASM)No WebCrypto bridge needed (SP-30)

CLI & TUI

ComponentTechnology
CLIRust (clap)
TUIRust (ratatui)

Relay Server

ComponentTechnologyNotes
LanguageRustStandalone binary
Client APIHTTP v2 (/v2/)Synchronous request/response; client WebSocket is rejected (HTTP 426)
Federationtokio-tungsteniteWebSocket used only for relay-to-relay federation, not the client path
OHTTP gatewayohttp (RFC 9458)Decrypts client requests; distinct operation from the relay is required for the non-collusion privacy property and is not yet deployed
TLSrustls (aws-lc-rs)TLS 1.3, certificate handling
StorageIn-memory + diskEncrypted blobs only

Development Tools

ToolPurpose
JustTask runner
CargoRust package manager
npm/pnpmJavaScript dependencies
DockerContainerization
GitLab CIContinuous integration

Performance Targets

OperationTarget
Contact exchange< 3 seconds
Update propagation< 30 seconds (when online)
Local operations< 100ms
App startup< 2 seconds

Data Limits

LimitValue
Max contact card size64KB (encrypted)
Max contacts per user10,000
Max fields per card200
Max linked devices10

Repository Dependencies

vauchi-core (standalone, no workspace deps)
    ↑ (git dependency)
cli/, tui/, e2e/, macos/, windows/, linux-gtk/, linux-qt/, web-demo/

vauchi-platform (UniFFI bindings, in core/ workspace)
    ↑ (via generated binding repos)
android/ ← Maven AAR from core CI
ios/     ← vauchi-platform-swift (SPM)

vauchi-cabi (C ABI exports, in core/ workspace)
    ↑ (cbindgen)
linux-qt/, windows/

relay/ (standalone, uses vauchi-protocol for shared types only)

Downstream repos use git dependencies with branch-based pinning (branch = "main"). Local development uses .cargo/config.toml path overrides.