v0.6.0 — Experimental

Messaging built for privacy, by design

Secure messages between you and the people you trust. No accounts, no servers storing your data.

2x
0:00

Download Bus

The desktop app for Kamune. Available for macOS, Linux, and Windows.

Get started in minutes

Install and run Kamune in your project.

Core Library

Add Kamune to your Go project

go get github.com/kamune-org/kamune

Relay Server

Run via container or binary

docker run hossein1376/kamune-relay:latest
Download from GitHub Releases

Daemon

Background service for external apps

Download from GitHub Releases

Security features that protect you today and tomorrow

Every layer of Kamune is designed to keep your conversations private and safe.

Post-Quantum Security

Future-proof encryption that protects your messages even against quantum computers.

End-to-End Encrypted

Only you and the person you're talking to can read your messages. No one in between.

Peer-to-Peer

Messages go directly between devices. No central server stores your conversations or who you talk to.

Multi-Transport

Works over multiple network types — TCP, UDP, WebSocket, or TLS. Pick what works for your setup.

Forward Secrecy

Each conversation uses its own unique keys. Even if one key is compromised, past and future messages stay safe.

Open Source

Fully open source. Anyone can verify the code does what it claims.

Built on proven cryptography

A hybrid cipher suite combining classical and post-quantum algorithms for defense in depth.

Cipher Suite Ed25519_MLKEM768_HKDF-SHA512_ChaCha20-Poly1305X IDENTITY Ed25519 Signs the two handshake identities and each session frame. One encoding per key: 44-byte PKIX. Contexts differ per signature. HELLOS ML-KEM-768-X25519 One X-Wing key pair per handshake. HPKE export-only. Shared secret ss is 64 bytes: export "kamune/2 kex secret". Info string kamune/2 kex. HPKE does not wrap the later frames. SCHEDULE HKDF-SHA512 Expand-Label. The label prefix is "kamune2 ". Handshake, session, exporter, and resumption secrets. Hash length 64. HANDSHAKE XChaCha20-Poly1305 Frames 0x03, 0x04, and 0x05. AD is kamune/2 hs, then ver, then type. 24-byte nonce · 32-byte key · 16-byte tag. Each key seals at most two frames. SESSION XChaCha20-Poly1305 Session frames after Confirm. No associated data. i_ap_key initiator to responder. r_ap_key the other way. One suite. SPEC §3.
Ed25519_MLKEM768_HKDF-SHA512_ChaCha20-Poly1305X
01
Identity Ed25519

Signs the two handshake identities and each session frame.

02
Key Exchange ML-KEM-768-X25519

One X-Wing key pair per handshake. The shared secret is a 64-byte HPKE export.

03
Key Derivation HKDF-SHA512

Expand-Label, prefix kamune2 , from the shared secret to the session keys.

04
Encryption XChaCha20-Poly1305

Handshake frames use associated data. Session frames after Confirm do not.

How it works

Four flights establish the session. Later frames are signed, encrypted, and sequenced. The first one is sequence 1.

Kamune Protocol Overview Four flights. ver 0x02. No fallback to an earlier version. Initiator dialer Responder listener F1 ClientHello clear · 1282 B ver 0x02 · type 0x01 · nonce_i · tag · X-Wing pk_i F2a ServerHello clear · 1154 B ver 0x02 · type 0x02 · nonce_r · enc F2b ResponderAuth AEAD r_hs_key · 214 B key_R · sig_R · finished_R Initiator runs the verifier here, on the key, before it sends its name. F3 InitiatorAuth AEAD i_hs_key · 426 B key_I · name_I · version_I · resume_sid? · binder? · sig_I · finished_I Responder decides resumption, then runs its verifier. F4 Confirm AEAD r_hs_key · 234 B status · reason · name_R · version_R · finished_C Session frames i_ap_key and r_ap_key · first sequence is 1 Ed25519 · ML-KEM-768-X25519 · HKDF-SHA512 · XChaCha20-Poly1305
01
01

ClientHello

The dialer sends a fresh X-Wing public key (ML-KEM-768 and X25519) and a nonce, in the clear.

02
02

ServerHello

The listener encapsulates to that key and proves its identity under the handshake keys. The dialer accepts that key before sending its own name.

03
03

InitiatorAuth

The dialer sends its identity and may offer to resume. The listener checks the proof, decides resumption, and runs its verifier.

04
04

Confirm

The listener sends its name, its version, and whether the session resumed. Both sides then derive the session keys.

Everything you need, from library to app

A complete toolkit for secure communication, from library to desktop app.

Experimental

Core Library

The heart of Kamune — handles encryption, connections, and message storage.

Active

Relay Server

Helps devices connect when they can't reach each other directly. Never sees who's talking or what they say.

Active

Bus (GUI)

Desktop app for chatting with full security. Manage sessions, verify peers, and view encrypted history.

Active

TUI Client

Chat from your terminal. Connect directly or through a relay, compare two numeric codes, and browse history.

Active

Daemon

Integrate Kamune into other apps — Tauri, Electron, editor plugins, or your own scripts.

A relay that sees nothing

Helps devices connect when they can't reach each other directly. It never reads your messages or stores your data.

Blind

Never sees public keys, identities, or message content.

Stateless

No persistent storage, no queues, no offline messages.

Zero Metadata

No social graph, no presence tracking, no persistent identifiers.

Transport-Agnostic

Same protocol over WebSocket, raw TCP, or TLS.

UDP Hole Punching

Optional broker that helps peers discover addresses and punch through NAT — no relay needed for the data path.

Transport Comparison

Transport DPI Evasion Best For
WebSocket Weak Development, CDN-fronted
WSS (WebSocket + TLS) Excellent Production, CDN-fronted
Raw TCP Minimal Trusted networks
TLS Excellent Production, hostile networks

Defense in depth

Multiple independent security layers protect your communications.

Confidentiality

Every message is encrypted with session-specific keys using ChaCha20-Poly1305X.

Integrity

Protected by three layers: AEAD authentication tag, digital signatures, and sequence numbers.

Authentication

Ed25519 signatures and Finished MACs bind each identity to this handshake. The apps show two numeric codes to compare.

Forward Secrecy

Each handshake uses a fresh X-Wing key pair, so a later compromise does not open past sessions.

Post-Quantum

ML-KEM-768 is combined with X25519. The shared secret is an HPKE export.

Replay Protection

Sequence numbers detect and reject duplicate messages.

Traffic Analysis Resistance

Random padding makes encrypted traffic harder to analyze.