What is Prattle?

Prattle is a simple chat application written using C++11, SFML and TGUI as a group project by me and Amish Naidu, with support from Manasij Mukherjee and Bruno Van de Velde.

Prattle uses a single server, multi client model and different instances of the server cannot communicate with each other. Full protocl and technical documentation guide can be found here.

Current features supported are:

Planned features can be found on our TODO.

Prattle still doesn’t boast of ANY security layer. Using Prattle for regular communication is not advisable. :innocent:









Source, Building & Running

To build Prattle, there are a few dependencies:

First clone the repo:

$ git clone

There are three separate CMake build scripts to build prattle-server, prattle-client and prattle-server-controller separately.

Doing this will build the server(prattle-server):

$ cd Prattle
$ mkdir build && cd build
$ cmake ..
$ make

Doing this will build the client(prattle-client):

$ cd ../../
$ cd Client
$ mkdir build && cd build
$ cmake ..
$ make

Doing this will build the server-controller(prattle-server-controller):

$ cd ../../
$ cd Server-Controller
$ mkdir build && cd build
$ cmake ..
$ make

How to run the server

Now put the contents of Prattle/Server/build into a server (e.g., a VPS), allow firewall exceptions for TCP traffic through port 19999 and then invoke the server:

$ ./prattle-server

Log messages will be written to server_log.txt, which you can consult in case of errors, warnings etc.

Client and Server-Controller usage

Now that the prattle-server is running, cd into the directory where prattle-client was built. Then edit the server_addr field in Prattle/Client/resources/config/client.conf to the public IP of the server where prattle-server is running and invoke it:

$ ./prattle-client

Log messages will be written to client_log.txt, which you can consult in case of errors, warnings etc.

Similarly, the prattle-server-controller can be used to control the prattle-server. It requires using a passphrase to bind the prattle-server-controller to the prattle-server.


  1. Port 19999 is used by default. You are free to edit the port of course. Just make the necessary changes in Prattle/Server/resources/server.conf and Prattle/Client/resources/config/client.conf.

  2. You can also host the prattle-server on a regular machine provided the machine has a static IP and required network configuration so that clients can connect to it (firewall settings, NAT filters, etc.).


Prattle is licensed under the MIT License.