Les'Go is a production-ready, peer messaging system written in Go. It features a centralized in-memory relay server and terminal-based clients with End-to-End Encryption (E2EE).
- Pure CLI Interaction: No TUI, just pure terminal input/output.
- Persistent Device Identity: 10-digit unique ID generated on first run.
- End-to-End Encryption (E2EE): RSA-2048 encryption for all messages.
- In-Memory Relay: Zero-knowledge server that only forwards encrypted data.
- Anonymous: No accounts, no database, no personal data stored.
- Easy Setup: Works out-of-the-box with public relay or private LAN (see SETUP.md).
├── docs/ # Product & architecture documentation
│ ├── connection.md # Network & connection architecture
│ ├── context.md # AI context for the product
│ ├── product.md # Product requirements
│ ├── protocol.md # Packet protocol definition
│ └── SETUP.md # Multi-device setup guide
├── server/ # Relay Server logic
│ └── main.go # WebSocket relay & session manager
├── README.md # You are here
├── todo.md # Project status & development log
└── go.mod # Dependencies
If you want to run or modify the code:
# Clone the repository
git clone https://github.com/XplnHUB/Les-Go.git
cd Les-Go
# Install dependencies
go mod download
# Go online (waits for requests)
lesgo
# Connect to a peer
lesgo <10-digit-id>If you just want to use the client:
go install github.com/XplnHUB/Les-Go/client@latest
# The 'lesgo' command will be available if your GOBIN is in your PATHLes'Go works perfectly on Linux (including Pop!_OS). If you have Homebrew installed on Linux:
brew tap XplnHUB/tap
brew install lesgoFor Pop!_OS users without Homebrew:
# Download for Intel/AMD Linux
curl -L -O https://github.com/XplnHUB/Les-Go/releases/download/v1.0.15/lesgo_1.0.15_linux_amd64.tar.gz
tar -xzf lesgo_*.tar.gz
sudo mv lesgo /usr/local/bin/Using GitHub CLI:
# Download the latest client for your architecture
gh release download v1.0.1 -p "*darwin_arm64.tar.gz"
tar -xzf lesgo_*.tar.gz
chmod +x lesgoUsing curl (Direct):
# Example for Mac Silicon
curl -L -O https://github.com/XplnHUB/Les-Go/releases/download/v1.0.1/lesgo_1.0.1_darwin_arm64.tar.gz
tar -xzf lesgo_1.0.1_darwin_arm64.tar.gz
./lesgo idLes'Go uses RSA-2048 for end-to-end encryption.
- On startup, the client generates a temporary public/private key pair.
- Public keys are exchanged automatically once a connection is accepted.
- Messages are encrypted locally and only decrypted by the recipient.
- The server only sees Base64-encoded ciphertext.
To test Les'Go between two different machines:
On the machine running the server, find your local network IP:
- Mac/Linux:
ifconfig | grep "inet " - Windows:
ipconfigAssume the IP is192.168.1.10.
Before running the client on the second machine, point it to the first machine's IP:
# Set the environment variable
export LESGO_SERVER=192.168.1.10:80
# Now run the client
go run ./client/*.go onlineOnce both are online, use lesgo connect <id> as normal. The messages will be encrypted and routed across your local network.
- Go 1.20+
github.com/gorilla/websocket
- Firewall: On the Server Mac, go to
System Settings -> Network -> Firewall. Ensure it's off or allowsserver_bin/go. - Network Isolation: If you are on a public/office Wi-Fi (like "Guest" networks), they often block devices from talking to each other. Try using a mobile hotspot.
- Ping Test: From the other Mac, try to reach the server:
If ping fails, the laptops cannot see each other on the network.
ping 10.98.42.31
- Incorrect Server Address: Ensure you ran
export LESGO_SERVER=10.98.42.31:80before starting the client.
This means another server is already running on port 8080. To fix it, kill the existing process:
- Mac/Linux:
lsof -i :80 -t | xargs kill -9 - Windows:
netstat -ano | findstr :80(then kill the PID via Task Manager)
If you want to run the relay server on any machine without installing Go:
docker build -t lesgo-server -f server/Dockerfile .
docker run -d -p 80:80 lesgo-serverOnce you have pushed a tag and the GitHub Action has finished:
docker pull ghcr.io/xplnhub/lesgo-server:latest
docker run -d -p 80:80 ghcr.io/xplnhub/lesgo-server:latestMIT