πŸ” End-to-End Encrypted

Private Messaging
Powered by Bitcoin

KrayChat uses your Bitcoin Taproot keys for zero-knowledge encrypted messaging. DMs, Groups, and AI Agent channels β€” all E2E encrypted. No servers store your messages. Just pure cryptography.

πŸ’¬ Open KrayChat πŸ“– Learn More

πŸ›‘οΈ True Privacy by Design

No trust required. Verify everything.

πŸ”‘

Your Keys, Your Identity

Your Bitcoin address IS your chat identity. No phone numbers, no emails, no accounts. Just your Taproot key.

πŸ”’

End-to-End Encryption

Messages are encrypted on your device before leaving. Only the recipient can decrypt. Even we can't read them.

πŸ’Ύ

Local Storage Only

Messages are stored only on your device. Delete them and they're gone forever. No cloud backups.

🚫

Zero Metadata

We don't track who talks to whom, when, or how often. The relay only routes encrypted packets.

⚑

No Registration

Open the app, unlock your wallet, start chatting. No sign-ups, no verification, no waiting. On the browser extension, your password is only ever typed inside the extension popup β€” never on a web page.

🌐

Open Protocol

Built on standard Bitcoin cryptography (secp256k1, ECDH, AES-256-GCM). Auditable and transparent.

πŸ€–

KrayBot β€” AI Agent Channel

Command your AI agent through a self-channel secured by Bitcoin signatures. Two auth modes: direct signing (pure crypto) or revocable bot tokens (zero crypto on the agent).

πŸ‘₯

Groups with E2E

Create encrypted group chats. Each message is individually encrypted for each member. Admins manage members with signed operations.

βš™οΈ How KrayChat Works

Simple for users, bulletproof under the hood.

1

Initialize Your Chat ID

Unlock your wallet to activate the chat session β€” on the extension this happens in the KrayWallet popup (your password never touches the page); on mobile, inside the app. Your private key is derived locally (never leaves your device), and your public key becomes your Chat ID.

2

Share Your Chat ID

Give your Chat ID to anyone who wants to message you. It's safe to share - it's a public key, like a Bitcoin address.

3

Start a Conversation

Enter someone's Bitcoin address. The system automatically finds their Chat ID if they're registered on the network.

4

Messages are Encrypted Automatically

Using ECDH key exchange, a shared secret is created. Messages are encrypted with AES-256-GCM before sending.

5

Only Recipient Can Decrypt

The recipient uses their private key + your public key to derive the same shared secret and decrypt the message.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    KRAYCHAT ENCRYPTION FLOW                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  YOUR DEVICE                  RELAY SERVER              THEIR DEVICE
  ────────────                  ────────────              ─────────────

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Your Privateβ”‚                                        β”‚Their Privateβ”‚
  β”‚    Key      β”‚                                        β”‚    Key      β”‚
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                                        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                                      β”‚
         β”‚  + Their Public Key                  Your Public Key +
         β”‚                                                      β”‚
         β–Ό                                                      β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚   ECDH      β”‚                                        β”‚    ECDH     β”‚
  β”‚ Key Exchangeβ”‚                                        β”‚ Key Exchangeβ”‚
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                                        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                                      β”‚
         β–Ό                                                      β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚  SAME       β”‚                                        β”‚   SAME      β”‚
  β”‚ Shared      β”‚                                        β”‚  Shared     β”‚
  β”‚ Secret      β”‚                                        β”‚  Secret     β”‚
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                                        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                                      β”‚
  Message + Secret                                    Ciphertext + Secret
         β”‚                                                      β”‚
         β–Ό                                                      β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ AES-256-GCM │────────▢│ Only sees   │─────────────▢│ AES-256-GCM β”‚
  β”‚  Encrypt    β”‚         β”‚ ciphertext β”‚              β”‚  Decrypt    β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚ (garbage)  β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          
  ╔═══════════════════════════════════════════════════════════════════╗
  β•‘  ❌ Server NEVER sees:                                           β•‘
  β•‘     β€’ Your private key                                            β•‘
  β•‘     β€’ The shared secret                                           β•‘
  β•‘     β€’ The message content                                         β•‘
  β•‘                                                                   β•‘
  β•‘  βœ… Server ONLY sees:                                            β•‘
  β•‘     β€’ Encrypted blob (ciphertext)                                 β•‘
  β•‘     β€’ Public keys (to route messages)                             β•‘
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
            

πŸ€– KrayBot β€” Your AI Agent Channel

The most secure way to command an AI agent. Two auth modes. Zero compromise.

1

Self-Channel: You Talk to Yourself

KrayBot opens a channel where your address sends to your own address (from === to). This creates a cryptographically sealed private channel that only your private key can access.

2

Your Wallet Signs Every Message

When you send a command, your KrayWallet encrypts + signs the message with your Bitcoin private key. This proves you are the owner. No one else can impersonate you.

3

Relay Routes to Your Agent

The relay detects from === to, recognizes it as a self-channel message, and routes it to your bot device. Token-based bots receive a plaintext bot_command; direct-signing bots receive the encrypted payload.

4

Agent Responds

Token-based bots send a plaintext bot_reply (relay wraps and delivers). Direct-signing bots respond through the encrypted self-channel. Either way, the reply appears in your KrayBot tab.

Two Authentication Modes

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       MODE A: TOKEN-BASED AUTH (Recommended for Platforms)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  YOUR DEVICE                  RELAY SERVER              YOUR AI AGENT
  (Extension/Mobile)           (kray.space)              (Vitruvia/OpenClaw)
  ─────────────────            ────────────              ──────────────────

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚  Your Wallet β”‚                                       β”‚  Bot Token   β”‚
  β”‚  Private Key β”‚                                       β”‚  (kbt_...)   β”‚
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                                      β”‚
         β”‚  1. Owner signs challenge                   3. bot_auth(token)
         β”‚     β†’ relay issues kbt_ token                  β†’ registered as
         β”‚     β†’ token goes to agent                       bot device
         β”‚                                                      β”‚
         β”‚  2. Encrypt + Send                          4. Receive bot_command
         β”‚     (ECDH self-key)                            (plaintext text)
         β”‚                                                      β”‚
         β–Ό                                                      β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Send message │────────▢│ from === to   │────────────▢│ Receive as   β”‚
  β”‚ from: bc1p.. β”‚  text + β”‚ Route as     β”‚  bot_commandβ”‚ { text: "…" }β”‚
  β”‚ to:   bc1p.. β”‚ payload β”‚ bot_command  β”‚  (plaintext)β”‚ Process AI   β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚                            β”‚
                                  β”‚      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
                                  │◀─────│ bot_reply    β”‚β—€β”€β”€β”€β”€β”€β”˜
                                  β”‚      β”‚ (plaintext)  β”‚
                                  β”‚      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚ Route to     β”‚
                           β”‚ owner devicesβ”‚
                           β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
                           You see the reply
                           in KrayBot tab

  ╔═══════════════════════════════════════════════════════════════════╗
  β•‘  TOKEN-BASED ADVANTAGES:                                         β•‘
  β•‘                                                                   β•‘
  β•‘  β€’ Agent needs ZERO crypto libraries (only WebSocket)             β•‘
  β•‘  β€’ Private key NEVER leaves your KrayWallet                       β•‘
  β•‘  β€’ Token is revocable by owner at any time                        β•‘
  β•‘  β€’ Any platform (Vitruvia, OpenClaw, etc) can integrate easily    β•‘
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
            
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       MODE B: DIRECT SIGNING (Maximum Security)                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  YOUR DEVICE                  RELAY SERVER              YOUR AI AGENT
  (Extension/Mobile)           (kray.space)              (Self-hosted node)
  ─────────────────            ────────────              ──────────────────

  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚  Your Wallet β”‚                                       β”‚  Same Privateβ”‚
  β”‚  Private Key β”‚                                       β”‚     Key      β”‚
  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                                                      β”‚
         β”‚ Sign + Encrypt                       bot_register +
         β”‚ (ECDH self-key)                      Schnorr signature
         β”‚                                                      β”‚
         β–Ό                                                      β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Send message │────────▢│ from === to   │────────────▢│ Decrypt ECDH β”‚
  β”‚ from: bc1p.. β”‚ payload β”‚ Route to bot β”‚  encrypted  β”‚ Process AI   β”‚
  β”‚ to:   bc1p.. β”‚(E2E enc)β”‚ devices      β”‚    payload  β”‚ Send reply   β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚                            β”‚
                                  β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β–Ό
                           Fully E2E encrypted
                           Relay sees NOTHING

  ╔═══════════════════════════════════════════════════════════════════╗
  β•‘  DIRECT SIGNING ADVANTAGES:                                      β•‘
  β•‘                                                                   β•‘
  β•‘  β€’ Relay CANNOT read your commands or responses                    β•‘
  β•‘  β€’ True E2E β€” no intermediary can see content                     β•‘
  β•‘  β€’ Ideal for self-hosted nodes (Umbrel, etc)                      β•‘
  β•‘  β€’ Maximum sovereignty: bot signs with Schnorr BIP-340            β•‘
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
            
βœ… Only your private key can create commands (both modes)
βœ… Token mode: zero crypto on agent, revocable anytime
βœ… Direct mode: full E2E encryption, relay sees nothing
βœ… Works on Extension, Mobile, and any KrayWallet
❌ Strangers CANNOT send commands to your agent
❌ Stolen tokens are useless without the relay (and revocable)

πŸ” Security Guarantees

What we protect, and what we never touch.

βœ… Private keys NEVER leave your device
βœ… Messages encrypted before transmission
βœ… Chat history stored only locally
βœ… No account or registration required
❌ We CANNOT read your messages
❌ We CANNOT recover your Chat ID
❌ We CANNOT see who you talk to
❌ We CANNOT decrypt anything

πŸ“Š KrayChat vs Others

How we compare to other messaging apps.

Feature KrayChat WhatsApp Telegram Signal
End-to-End Encryption βœ… Always βœ… Default ❌ Optional βœ… Always
No Phone Number Required βœ… ❌ ❌ ❌
No Account Registration βœ… ❌ ❌ ❌
Messages Stored Locally Only βœ… ❌ ❌ βœ…
No Metadata Collection βœ… ❌ ❌ βœ…
Bitcoin-Native Identity βœ… ❌ ❌ ❌
Open Source Protocol βœ… ❌ Partial βœ…

Ready for Real Privacy?

Start messaging with zero surveillance.

πŸš€ Launch KrayChat