Skip to content

ShellChat is a terminal-based (and mobile-ready) decentralized chat application designed for the modern hacker. It operates completely serverless, using Kademlia DHT for global peer discovery and libp2p for encrypted, direct communication.

License

Notifications You must be signed in to change notification settings

nishal21/shellchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

42 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

ShellChat ๐Ÿš๐Ÿ’ฌ

Go Report Card License: MIT Release Build Status

The Retro-Futuristic, Serverless P2P Chat Application.
Encryption. Anonymity. Aesthetics.

ShellChat Logo

๐ŸŒŸ Introduction

ShellChat is a terminal-based (and mobile-ready) decentralized chat application designed for the modern hacker. It operates completely serverless, using Kademlia DHT for global peer discovery and libp2p for encrypted, direct communication.

Whether you're on a Linux VPS, a Windows gaming rig, or an Android phone, ShellChat connects you directly to your peers with zero metadata retention.


โœจ Features

๐Ÿ›ก๏ธ Unbreakable Security

  • End-to-End Encryption: All traffic is encrypted using TLS 1.3 / Noise.
  • At-Rest Encryption: Your local database is secured with Application-Level Encryption using XChaCha20-Poly1305.
  • Pure Go: We use modernc.org/sqlite (CGO-free) for maximum cross-platform compatibility without external dependencies.
  • Key Derivation: We use Argon2id (the winner of the Password Hashing Competition) to turn your password into a cryptographic key.

๐ŸŒ True Serverless P2P

  • Global DHT: We use the IPFS public DHT infrastructure to find peers worldwide without central servers.
  • NAT Traversal: Built-in AutoNAT and UPnP to punch through home routers and firewalls.
  • Multi-Platform: Runs natively on Windows, Linux, macOS, Android, and iOS.

๐ŸŽจ Cyberpunk Aesthetics

  • TUI (Desktop): A Split-Pane Terminal UI tailored for keyboard power users.
  • GUI (Mobile): A touch-friendly interface that retains the retro-terminal feel.

๐Ÿ—๏ธ Architecture

How does ShellChat connect you without a server?

graph TD
    A["User A (You)"] <-->|"Encrypted Stream (Noise)"| B["User B (Peer)"]
    A -.->|"DHT Lookup"| D(("Global DHT"))
    B -.->|"DHT Announce"| D
    
    subgraph "Your Device"
        UI[Retro UI]
        DB[("Encrypted DB (SQLCipher)")]
        Keys[Argon2 Keys]
    end
Loading
  1. Bootstrap: Your node connects to the global P2P network.
  2. Announce: You cryptographically sign your presence and announce it to the DHT.
  3. Discover: You search for a peer's ID (e.g., QmHash...).
  4. Connect: ShellChat establishes a direct TCP/QUIC connection.
  5. Chat: Messages flow directly between devices. No middleman.

๐Ÿš€ Installation

๐Ÿ“ฅ Binary Releases

Grab the latest release for your OS from the Releases Page.

Platform File
Windows shellchat-windows-amd64.exe
Linux shellchat-linux-amd64.tar.xz
Android shellchat-android.apk
macOS shellchat-macos-universal

๐Ÿ”จ Build from Source

Prerequisites: Go 1.25+, GCC.

# Clone the repository
git clone https://github.com/nishal21/shellchat.git
cd shellchat

# Build TUI (Desktop)
go build -o shellchat .

# Build GUI (Mobile/Desktop)
go install fyne.io/fyne/v2/cmd/fyne@latest
fyne package -os windows -icon assets/icon.png --appID com.shellchat.app

๐ŸŽฎ Usage

Quick Start

  1. Launch: Run ./shellchat chat.
  2. Login: Set a master password (don't lose this!).
  3. Connect:
    • Wait ~30s for Global DHT bootstrap.
    • Type /myid to see your address.
    • Type /connect <peer-multiaddr> to connect to a friend.

Commands

Command Description
/help Show all available commands
/myid Display your full P2P MultiAddress
/copyid Copy your address to clipboard
/connect <addr> Connect to a remote peer
/exit Leave current chat context
/clear Clear screen buffer
/quit Exit application

๐Ÿ—บ๏ธ Roadmap

  • Global P2P Discovery
  • Android & iOS Support
  • Encrypted Local Storage
  • File Sharing: P2P encrypted file transfer.
  • Group Chats: Decentralized mesh groups.
  • Voice/Video: WebRTC integration.

๐Ÿค Contributing

We love contributions! Please read our CONTRIBUTING.md to get started.

๐Ÿ›ก๏ธ Security

Found a vulnerability? Please contact nishalamv@gmail.com or read our SECURITY.md policy.

๐Ÿ“œ License

Distributed under the MIT License. See LICENSE for more information.


Built with โค๏ธ by Nishal.

About

ShellChat is a terminal-based (and mobile-ready) decentralized chat application designed for the modern hacker. It operates completely serverless, using Kademlia DHT for global peer discovery and libp2p for encrypted, direct communication.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages