FOSSil Chat is a work-in-progress, privacy-focused chat platform designed around community-hosting, federated servers, end-to-end encryption (E2EE), and a user-friendly experience.
It exists to address a simple, yet important and often-overlooked problem - how can people communicate privately in an internet environment where control and surveillance are increasing?
Currently, we are under early development, with little code and functionality, but our aim is to create the most privacy-oriented and simple-to-use IM program. This means:
- Extremely strong E2EE
- Markdown support for messages
- Fast messaging times
- Federated servers (community-hosted)
- You need Rust and Cargo
- To clone the repository, ensure you have Git installed, and type
git clone https://codeberg.org/FOSSil/FOSSil.gitinto the terminal. - Then,
cdinto the cloned directory, thencdinto server or client, then runcargo runto run the program.
-
client/ contains the client application.
- client/src/main.rs is the entry point for the client. It starts the Tokio runtime, launches the networking task, and starts the GUI.
- client/src/gui.rs contains the graphical user interface code using
eframeandegui. - client/src/network.rs handles TCP communication with the server. It connects to the server, sends packets, receives packets, and handles server responses.
-
server/ contains the server application.
- server/src/main.rs is the entry point for the server. It creates the initial
ServerStateand starts the TCP listener. - server/src/tcp.rs manages TCP connections. It accepts clients, configures TCP keepalive, reads incoming packets, and handles disconnected clients.
- server/src/handler.rs contains packet handling logic. It processes joins, leaves, messages, and errors.
- server/src/server.rs contains the
ServerStatestruct, which stores connected users, messages, and message IDs.
- server/src/main.rs is the entry point for the server. It creates the initial
-
fossil_shared/ contains code shared between the client and server.
- fossil_shared/src/lib.rs exposes shared modules.
- fossil_shared/src/packet.rs contains the
Packetenum, which defines the data types exchanged between client and server. - fossil_shared/src/message.rs contains the
Messagestruct used for storing message data.
-
Project Root contains project configuration and metadata.
- Cargo.toml contains workspace configuration and dependencies.
- Cargo.lock contains locked dependency versions generated by Cargo.
- .gitignore contains files ignored by Git.
- README.md contains project documentation and usage instructions.
Note
The project is in very early development - at the moment, we have a functioning CLI message system.
Warning
FOSSil is currently under active development and is not yet ready for production use. Features, protocols, and APIs may change without notice.
This project is licensed under the GNU AGPL-3.0 License. Read TRADEMARKS.md and LICENSE.md for legal information.