Skip to content

Platforms & Clients

One audited Rust core, many thin clients. Deep spec: docs/PLATFORMS.md, docs/ROADMAP.md. Source: crates/.

Shipped clients

Client Crate What it is
CLI talkrypt crates/cli The primary product — host/join/link/registry + an in-chat REPL. See CLI Reference.
TUI talkrypt-tui crates/tui A ratatui terminal UI (channel list, messages, input, status).
Helper talkrypt-helper crates/helper A key-custody sidecar over an owner-only IPC channel. See Key Custody.

The CLI/TUI are the desktop clients — there is no separate desktop GUI; a Tauri shell over the FFI is possible later but unbuilt.

The FFI (one core, every app)

crates/ffi exposes the core to other languages via uniffi — a single shared binding consumed by Android (Kotlin) and, planned, iOS (Swift), built once so the security-critical core is never reimplemented per platform. It ships as libtalkrypt_ffi.{so,dylib,a}; bindings are generated by uniffi-bindgen. The async core is wrapped behind a blocking facade (a tokio runtime owned by the client object; UIs poll for events). It exposes the chat client (host/join/send/ invite/safety-number/peer-count/poll-event), identity & linking, registries, the sealing API (Account::seal/from_sealed, the HardwareKeyWrapper callback), and custody_report.

Android

A Kotlin/Gradle app links the FFI .so (cross-compiled to aarch64-linux-android via cargo-ndk) + the uniffi Kotlin bindings. Built by android/build-apk.sh → a sideloadable APK (debug-signed; no Play Services, no telemetry). TALKRYPT_TOR=1 compiles the Arti transport in. Hardware-backed custody uses Android Keystore/StrongBox through the HardwareKeyWrapper callback. Designed for GrapheneOS / the Solana Seeker (whose Seed Vault secure element reaches the HardwareBacked tier). Onboarding extras (QR deep links, P2P APK self-sharing, nearby discovery) are in docs/onboarding.md. The APK is a release artifact.

iOS

A native Swift app consumes the FFI over an XCFramework + uniffi Swift bindings, with Secure Enclave hardware-backed sealing via the HardwareKeyWrapper callback. scripts/build-ios.sh builds the XCFramework (device + simulator) and scaffolds the TestFlight path (--testflight). Building the XCFramework needs full Xcode + the iOS SDK; a TestFlight upload additionally needs an Xcode app project + an Apple Developer account. See Packaging & Release.

Roadmap (planned)

Desktop GUI (Tauri), iOS app shell, browser-extension isolation/federation, and a broader platform matrix — tracked in docs/ROADMAP.md. The Rust core cross-compiles to mobile today; remaining mobile work is the native app shells and the hardware-keystore bridges.