Technology Stack

Core Library (Shared)

ComponentTechnologyNotes
LanguageRustMemory safety, cross-platform
Cryptoed25519-dalek, x25519-dalek, chacha20poly1305, argon2RustCrypto audited crates
StorageSQLiteEncrypted with XChaCha20-Poly1305
Serializationserde + JSONProtocol messages
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 6C++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
WebSockettokio-tungsteniteAsync runtime
TLSrustlsCertificate 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 card100
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/ ← vauchi-platform-kotlin (Gradle)
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.