Skip to content

Keychat is the super app for Bitcoiners. Autonomous IDs, Bitcoin ecash wallet, secure chat, and rich mini apps — all in Keychat. Autonomy. Security. Richness.

License

Notifications You must be signed in to change notification settings

keychat-io/keychat-app

Repository files navigation

Keychat

DownloadsLast VersionLicense build

About Keychat

Keychat is a chat app, built on Bitcoin Ecash, Nostr Protocol, Signal Protocol and MLS Protocol.

Keychat is inspired by the postal system — stamps, post offices, letters.

Keychat uses Bitcoin ecash as stamps and Nostr relays as post offices.

Senders send messages stamped with Bitcoin ecash to Nostr relays. The Nostr relays collect the Bitcoin ecash, then deliver messages to receivers.

Keychat uses Signal/MLS protocol to ensure message encryption security and meta-data privacy.

The content of the letter can be exposed easily by opening the envelope. Keychat messages are end-to-end encrypted via Signal/MLS protocol, with a unique encryption key generated for each message. Only the sender and receiver can decrypt the message.

The addresses of both parties on the envelope can be tracked. In theory, this problem is solved if they change addresses daily. So Keychat reuses Signal/MLS protocol to update sending and receiving addresses for nearly every message.

Like the postal system, Keychat requires no registration. Users just generate Nostr keys as ID.

Design Philosoph

Offline Me needs self-controlled IDs and wallets to live in the physical world.

Online Me also first needs self-controlled IDs and wallets to live in the digital world.

Then Me can chat and browse.

In Chat, Me uses the IDs and pays for relays per message with the wallets.

In Browser, Me uses the IDs to log in to Mini Apps and pays in Bitcoin with the wallets.

Mobile Screenshot

Desktop Screenshot

Download

Install Requirements

  • Android: >= 12
  • iOS: >= 15
  • MacOS: >= 13
  • Windows: Lack of signature and notary for now, turn off anti-virus software before installation
  • Linux: sudo dpkg -i ./xx.deb

Follow Us

npub1h0uj825jgcr9lzxyp37ehasuenq070707pj63je07n8mkcsg3u0qnsrwx8

Spec Compliance

Keychat implements the following nips:

WebLN Provider

webln.dev

[x] sendPayment [x] makeInvoice

Universal Link

Add a contact from pubkey

https://www.keychat.io/u/xxx

Demo: https://www.keychat.io/u/npub1h0uj825jgcr9lzxyp37ehasuenq070707pj63je07n8mkcsg3u0qnsrwx8

Deeplink

Add a contact

nostr:npub1h0uj825jgcr9lzxyp37ehasuenq070707pj63je07n8mkcsg3u0qnsrwx8
or
keychat://www.keychat.io/u/npub1h0uj825jgcr9lzxyp37ehasuenq070707pj63je07n8mkcsg3u0qnsrwx8

Supported Intent / Scheme

adb shell am start -W -a android.intent.action.VIEW -d "scheme:xxxx"
  • nostr. Add a contact, eg: nostr:npub1h0uj825jgcr9lzxyp37ehasuenq070707pj63je07n8mkcsg3u0qnsrwx8
  • cashu. Receive cashu token, eg: cashu:cashuBo2FteBxxx
  • lightning. Pay Lightning Invoice, eg: lightning:npub1h0uj825jgcr9lzxyp37ehasuenq070707pj63je07n8mkcsg3u0qnsrwx8
  • lnurlp. Pay to Lightning address, eg: lightning:LNURL1DP68GURN8GHJ7UM9WFMXJCM99E3K7MF0V9CXJ0M385EKVCENXC6R2C35XVUKXEFCV5MKVV34X5EKZD3EV56NYD3HXQURZEPEXEJXXEPNXSCRVWFNV9NXZCN9XQ6XYEFHVGCXXCMYXYMNSERXFQ5FNS

Development Getting Started

git submodule update --init --recursive
dart pub global activate melos 7.0.0-dev.9
melos bootstrap

# build rust lib: packages\keychat_rust_ffi_plugin\README.md
# cd packages/keychat_rust_ffi_plugin
# git submodule update --init --recursive

cd packages/app
flutter devices
flutter run -d xxx

# release
melos run build:ios 
melos run build:android
melos run build:macos

# windows
dart pub global activate fastforge

Based On

  • Nostr Protocol: for delivering and storing messages.
  • Ecash Cashu: for paying micropayments to relays (optional), depends on whether relay charges a fee.
  • Signal Protocol: for encrypting messages (end-to-end).
  • MLS Protocol: messaging Layer Security (MLS) is a security layer for encrypting messages in large group.
  • AWS S3: for storing encrypted files.
  • Isar DB: a NoSQL database for Flutter for local data storage.
  • flutter_rust_bridge: Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple.
  • melos: Melos is a CLI tool used to help manage Dart projects with multiple packages
  • rust-nostr: Nostr protocol implementation, SDK and FFI

License

Licensed under the GNU AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html

About

Keychat is the super app for Bitcoiners. Autonomous IDs, Bitcoin ecash wallet, secure chat, and rich mini apps — all in Keychat. Autonomy. Security. Richness.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •