Hole Chat is an Android-focused P2P direct messaging app built with Flutter, Rust, and iroh.
- one-to-one chat only
- home screen is a persistent friends list
- first-time pairing happens by invite code or QR scan
- once a friend is added, the app saves the friend locally and you can reopen the chat later
- supports text and image messages
There is no user-facing room concept anymore. Pairing is done once, then the app behaves like a normal direct-message client.
- Flutter for the Android UI
- Rust for the networking core
flutter_rust_bridgefor the boundaryiroh 0.96.1iroh-gossip 0.96.0iroh-blobs 0.98.0
- One device opens
Add friendand shows its invite QR code. - The other device scans the code or pastes the invite string.
- The app establishes a direct chat topic for that pair.
- Both devices save the friend locally for later reuse.
Peer identity is stable across restarts as long as the app data is preserved, because the underlying iroh secret key is stored in the app documents directory.
flutter pub get
flutter_rust_bridge_codegen generate
flutter run -d androidFor Android builds in this repo, prefer explicit ABI targets:
flutter build apk --debug --target-platform android-arm64,android-x64- friends and message history are stored locally under the app documents directory
- image blobs and downloaded images are stored locally under the app documents directory
- the Rust identity key is persisted locally, so the same installation keeps the same peer ID across app restarts
- a plain
flutter build apkwill still try to build extra Android ABIs and can spend time downloading toolchains and Flutter engine artifacts on first build