Telepathy is a cross-platform peer-to-peer (P2P) chat application built to deliver real-time communication without relying on centralized servers. The UI is built with Flutter enabling the app to target Windows, Linux, macOS, iOS, Android, and the web. Iroh is used for P2P networking and cryptography, enabling secure connections behind NAT/firewalls without requiring manual port forwarding.
- Flutter UI with Windows, Linux, macOS, iOS, Android, and web support
- Iroh networking and cryptography, enables p2p networking without port forwarding
- Lossless raw audio and SEA codec options
- nnnoiseless noise suppression
- Built-in text chat with attachments
- Efficient use of CPU and memory resources
- Low end-to-end latency
- Screensharing for Windows, macOS, and Linux
- Game overlay for Windows
- Telepathy rooms (group calls)
- Lossless audio codec support
- Built in update pipeline with version checking and patching
- Flutter, Dart, and Cargo are required for building the project
- For development, use
flutter run -d <device>orflutter build <device> --debug - Live reload is supported in JetBrains and other IDEs with the Flutter plugin
- For release builds, use
flutter build <device>
- Android development requires Android Studio
- macOS and iOS development requires Xcode
- Web development requires the latest wasm-pack and wasm-opt & the nightly Rust toolchain
- Flutter to Rust (and back) is enabled by Flutter Rust Bridge
- This design enables the same codebase to target desktop, mobile, and the web
- Telepathy's real-time audio processing is implemented in the Telepathy Audio crate
- A simple, high level API is exposed for creating input & output streams, along with device enumeration, and sound effect playback
- Platform specific SIMD optimizations, a zero-allocation design, and the internal use of rtrb enables high quality real-time performance on any device with remarkably low resource utilization
- Telepathy Audio provides the audio processing while Iroh handles networking
- Denoising runs on the sending side; each participant in a call decides if they want to use their compute resources to denoise their audio input
- Every participant in a call must agree on the same audio codec options for sending & receiving
- If a frame's RMS is below the input sensitivity threshold, no audio is sent (keep-alive packets are used during silence). The output stream gracefully transitions between speech and silence using cross-fade
- In a classic two-way call, each client runs an input and output stream
- Telepathy started as "Audio Chat," a Python Tkinter application with simple UDP networking and AES cryptography.
- After proving the concept with Python and Tkinter, the project was rewritten in Rust with Flutter for cross-platform support.
- The networking layer was upgraded from a custom approach to libp2p to gain enterprise-grade security primitives and more capable P2P connectivity.
- libp2p was replaced with Iroh for more robust real-time networking & simpler session logic

