A minimal, secure, terminal-based chat application designed for developers who want distraction-free communication while staying in their terminal workflow.
- π End-to-end encryption using the Signal Protocol
- π» Terminal-native interface with Bubble Tea TUI
- π Minimal resource usage - under 50MB RAM
- π Peer-to-peer connections with relay fallback
- π Subtle toast notifications for incoming messages
- π± Cross-platform support (Linux, macOS, Windows)
- π¨ Customizable themes (dark/light)
- β¨οΈ Keyboard-driven interface with vim-like bindings
# Install from source
go install github.com/opensourceghana/securechat/cmd/securechat@latest
# Or download binary from releases
curl -L https://github.com/opensourceghana/securechat/releases/latest/download/securechat-linux-amd64 -o securechat
chmod +x securechat# Start SecureChat
securechat
# Or run with custom config
securechat --config ~/.config/securechat/config.yaml- Start a chat: Press
Ctrl+Nto start a new conversation - Add contacts: Use
Ctrl+Ato add a contact by their user ID - Send messages: Type your message and press
Enter - Switch chats: Use
Ctrl+Tto cycle through open chats - Settings: Press
Ctrl+,to open settings
SecureChat implements the Signal Protocol for end-to-end encryption:
- Perfect Forward Secrecy: Past messages remain secure even if keys are compromised
- Post-Compromise Security: Future messages are secure after key compromise recovery
- Metadata Protection: Minimal data stored on relay servers
- Identity Verification: Manual safety number verification
Each contact has a unique safety number that should be verified out-of-band:
12345 67890 12345 67890 12345 67890
Compare this number with your contact via voice call or in person to ensure secure communication.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Client A β β Relay Server β β Client B β
β β β (Optional) β β β
β βββββββββββββββ β β βββββββββββββββ β β βββββββββββββββ β
β β TUI β β β β Router β β β β TUI β β
β βββββββββββββββ β β βββββββββββββββ β β βββββββββββββββ β
β βββββββββββββββ β β βββββββββββββββ β β βββββββββββββββ β
β β Crypto β βββββΊβ β Message β βββββΊβ β Crypto β β
β βββββββββββββββ β β β Relay β β β βββββββββββββββ β
β βββββββββββββββ β β βββββββββββββββ β β βββββββββββββββ β
β β Network β β β βββββββββββββββ β β β Network β β
β βββββββββββββββ β β β Storage β β β βββββββββββββββ β
β βββββββββββββββ β β βββββββββββββββ β β βββββββββββββββ β
β β Storage β β βββββββββββββββββββ β β Storage β β
β βββββββββββββββ β β βββββββββββββββ β
βββββββββββββββββββ βββββββββββββββββββ
SecureChat looks for configuration in the following locations:
~/.config/securechat/config.yaml~/.securechat.yaml./config.yaml
user:
display_name: "Alice Cooper"
status_message: "Working on SecureChat"
network:
relay_servers:
- "relay1.securechat.dev:8080"
- "relay2.securechat.dev:8080"
p2p_enabled: true
connection_timeout: "30s"
ui:
theme: "dark"
notifications: true
sound_enabled: false
timestamp_format: "15:04"
security:
auto_accept_keys: false
message_retention_days: 30
export_keys_path: "~/.config/securechat/keys"# Clone the repository
git clone https://github.com/opensourceghana/securechat.git
cd secure_chat
# Install dependencies
go mod download
# Build
go build -o securechat cmd/securechat/main.go
# Run tests
go test ./...
# Run with race detection
go run -race cmd/securechat/main.gosecure_chat/
βββ cmd/
β βββ securechat/ # Main application entry point
βββ pkg/
β βββ crypto/ # Encryption and key management
β βββ network/ # Network protocols and connections
β βββ storage/ # Local data storage
β βββ ui/ # Terminal user interface
βββ internal/
β βββ config/ # Configuration management
β βββ models/ # Data models and types
βββ docs/ # Documentation
βββ examples/ # Example configurations and scripts
βββ scripts/ # Build and deployment scripts
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please report security vulnerabilities to security@securechat.dev. We will respond within 24 hours and coordinate disclosure.
Ctrl+N- New chatCtrl+T- Switch chat tabsCtrl+W- Close current chatCtrl+Q- Quit applicationCtrl+,- Open settingsCtrl+/- Show help
Enter- Send messageShift+Enter- New line in messageCtrl+L- Clear chat historyCtrl+F- Search messagesUp/Down- Navigate message history
Ctrl+A- Add contactCtrl+E- Edit contactDel- Remove contactSpace- Toggle status/- Search contacts
This project is licensed under the MIT License - see the LICENSE file for details.
- Signal Protocol for the cryptographic protocol
- Bubble Tea for the TUI framework
- BadgerDB for local storage
- The Go community for excellent libraries and tools
- Basic architecture design
- Core encryption implementation
- Simple TUI interface
- 1:1 messaging
- Local message storage
- Group chats
- File sharing
- Improved UI/UX
- Cross-platform builds
- P2P connections
- Advanced notifications
- Plugin system
- Mobile companion app
SecureChat - Secure, minimal, developer-focused terminal chat.