Skip to content
Felipe Inoue edited this page Nov 4, 2026 · 4 revisions

πŸ’¬ cthrone

Chat from one device to another β€” terminal, desktop window, or phone.
No account, no server, no cloud. One device hosts, the others connect, and every session is sealed end to end.

Go License Release Platforms


πŸš€ Start in thirty seconds

# on the device that serves
cthrone host

# on the other one, with the address the host printed
cthrone connect 192.168.1.5

Both screens show a six-digit code the first time β€” πŸ‘€ compare them, accept on the host, and type. That is the whole setup.

πŸ–₯️ Prefer a window? Run cthrone_gui, or cthrone ui from the CLI build. πŸ“± On a phone, install the APK and use the Setup tab.

πŸ—ΊοΈ How it fits together

flowchart LR
    T["πŸ’» terminal"]
    W["πŸ–₯️ window"]
    P["πŸ“± phone"]

    T --> S
    W --> S
    P --> S

    S{{"πŸ”’ sealed session<br/>X25519 Β· AES-256-GCM"}}
    S --> R["πŸ’¬ room<br/>the host relays to<br/>every other device"]
Loading

The transport is a flag β€” websocket (default), NATS (a broker) or Bluetooth (no network at all). Everything above it is the same code, so the chat behaves the same whichever you pick.

🎯 Pick your path

I want to… Go here
πŸ’¬ chat right now Host and connect β€” two commands
βœ‚οΈ copy, delete or hide a message Working with messages
πŸ”‘ understand the code both screens show Pairing and peers
πŸ“Ž send a picture, a file or a voice note Send a file
🎞️ play a GIF or a video Video in the app
πŸ“Ά chat with no network at all Bluetooth
πŸ›°οΈ chat across two networks NATS Β· Across networks
πŸš‘ fix something Troubleshooting
πŸ”’ know what is protected Security model
πŸ§ͺ help prove what is unproven Verifying on real hardware
πŸ› οΈ build or change it Development

πŸ“Š What works, where

Terminal Window Phone
websocket (default) βœ… βœ… βœ…
NATS (needs a broker) βœ… βœ… βœ…
Bluetooth (no network) βœ… Linux βœ… Linux ❌ not yet (#206)
files ❌ text only βœ… βœ…
audio (WAV/MP3) ❌ βœ… βœ…
animated GIF ❌ βœ… βœ…
video (MP4/H.264) ❌ ❌ needs a codec (#389) ❌

πŸ§ͺ What is proven, and what is not

This project says what it verified. ❌ means nobody has run it, not it is broken:

Claim State
the app, the transports and the security model βœ… tested on every change
audio (WAV/MP3) with a waveform and a seek bar ⚠️ tested, not heard on a phone
an animated GIF playing in its row ⚠️ tested, not seen on a phone
the Bluetooth radio on Windows ❌ #224
the phone app on a device, and its radio ❌ #155, #206
video (MP4/H.264) ❌ needs a codec β€” #389

If you own one of the ❌ rows, Verifying on real hardware has the steps and the issue to report on. "It worked" is an answer.


πŸ“¦ Releases Β· πŸ› Issues Β· πŸ—ΊοΈ Roadmap board Β· 🀝 Contributing

πŸ’¬ cthrone


Clone this wiki locally