Skip to content

jorgegarcia33/lume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lume

A lightweight, terminal-based peer-to-peer (P2P) chat application written in C.

Features
  • P2P Communication: Direct messaging between peers using TCP/IP.
  • Automatic Discovery: Local network peer discovery via UDP beacons.
  • Terminal UI: Interactive interface built with ncurses.
  • File Transfer: Support for sending and receiving files over the network.
  • End-to-End Encryption: All messages and file transfers are encrypted using X25519 key exchange and XSalsa20-Poly1305 authenticated encryption via libsodium. Encryption is fully transparent — no configuration or key management required.
Requirements
  • GCC
  • Make
  • ncurses library
  • pthread library
  • libsodium library
Installation

Quick Install (Debian/Ubuntu)

The easiest way to install Lume is by running our automated script:

curl -sSL https://raw.githubusercontent.com/jorgegarcia33/lume/master/install.sh | bash

Manual Installation

  1. Download the latest lume.deb package from the Releases section.
  2. Install the package using:
    sudo apt install ./lume.deb
  3. Launch the application:
    lume <username> <port>

Build from Source

If you prefer to build the project manually:

make
sudo make install
Usage
lume <username> <port>
  • Start with arguments: lume <username> <port>
  • Start with saved config: lume (loads from ~/.config/lume/lume.conf)
  • Configure interactively: lume config
Controls & Commands
  • Arrow Keys (Up/Down): Cycle through the list of discovered peers in the network.
  • Type & Enter: Send a text message to the currently selected peer.
  • /file <path>: Send a file to the selected peer (e.g., /file ./document.txt).
  • ESC: Exit the application.
Configuration File

You can easily create or update your configuration using the config command:

lume config

Alternatively, you can manually create ~/.config/lume/lume.conf with the following format:

username=yourname
port=12345

Both fields are required. The application will only use the config file if you run lume without arguments.

Contributing

Please see CONTRIBUTING.md for guidelines on how to contribute, report issues, or request features.

About

Lume is a lightweight, terminal-based P2P chat and file transfer tool written in C. It features automatic local network discovery, direct messaging over TCP with end-to-end encryption (X25519 + XSalsa20-Poly1305), and a multithreaded ncurses interface for decentralized, secure communication.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors