accord
accord copied to clipboard
Instant messaging chat system in Rust over TCP with encryption
Instant messaging chat system over TCP.
Written in Rust with tokio-rs.
Packet design and handshake inspired partially by Minecraft.

Features
- Standalone server
- GUI client (using
druid
UI toolkit) with customizations via config file - TUI client
- Encryption
- Sending images (via clipboard)
- Server management (banning, whitelists, etc)
GUI
Requirements
Because accord's gui client uses druid
, it requires gtk on Linux and BSD.
See druid's Readme notes for more information.
Configuration
GUI's theme (and some saved data) can be edited in config.toml
file.
- On Unix system it's in
$XDG_CONFIG_HOME/accord-gui/config.toml
- On Windows system it's in
$LOCALAPPDATA/accord-gui/config.toml
Colors are in hexadecimal format (#rrggbb
, #rrggbbaa
, #rbg
or #rbga
).
Images from links
GUI client can automatically try to load an image from a message with a link, however this is a potential security risk (e.g. IP grabbing), so it's disabled by default.
(If you're using a VPN or a proxy, then the risk should be nonexistent and in worst-case scenario it's still less risky than clicking on a random link.)
Short-term goals
- Improve GUI experience (sidebar with active users, loading up past messages and more)
- Verify that the encryption is secure
- Add more features
Long-term goals
- Figure out long-term goals
The Stack
- Server:
- tokio-rs
- postgres
- GUI:
- tokio-rs
- druid
Setting up accord server
Using docker container
- Clone docker compose repo
git clone https://github.com/LoipesMas/accord-docker.git
cd accord-docker
- Edit
config.toml
(you probably only want to change operators) -
docker compose up -d
to run the server in the background
From source
- Compile accord-server
git clone https://github.com/LoipesMas/accord.git
cd accord
cargo b -p accord-server --release
- Set up postgresql database somewhere.
Refer to postgres instructions for how to do that. - Launch
accord-server
. It will error something about connecting to the database, but we just need the default config. - Edit the config (probably located in
~/.config/accord-server/config.toml
) with correct postgres credentials. - Launch
accord-server
again, this time it should connect. - Done!
Now clients can connect.
Contributing
Contributions are very welcome! Features, ideas, bug fixes, anything.