While a lot of the core tools in qaul.net already exist, the user-facing applications are mostly still prototypes. Following is a list of supported clients/ platforms with instructions on how to build, and configure them.
|Client name||Desktop platforms||Mobile platform||Version|
While it is possible to install dependencies with platform specific
tools (such as
apt on Debian, etc), it is far more recommended to
use nix to build qaul.net instead.
While the actual build isn't handled by nix (yet), it makes aquiring the dependencies a lot easier. Follow the instructions on how to install nix on your platform here
shell.nix in the qaul.net repo root defines dependencies. Fetch
them into your environment by running
nix-shell in the repo root
(this might take a while).
Afterwards you can simple run
cargo build --bin qaul-hubd --release
to build a new hubd binary.
The output artefact will be written to
❤ (uwu) ~/p/code> cd qaul.net direnv: loading ~/projects/code/qaul.net/.envrc direnv: export +AR +AR_FOR_TARGET +AS +AS_FOR_TARGET +CC // ... snip ... ❤ (uwu) ~/p/c/qaul.net> cargo build lorri-keep-env-hack-qaul ...
This manual is part of the main source repository and you can build it from the same nix environment as the rest of the project.
$ cd docs/users $ mdbook build
If you want to enable live-reloading to work on this manual, you can also use the dev server.
$ mdbook serve
This is a multi purpose router and database daemon for qaul.net. It handles network driver and user state as a detached process, and allows both http and unix ipc clients to connect to it.
It doesn't come with it's own user interface, which means you will
have to build one separately and configure it to connect to your
Because all networking is done in userspace, no root access is required.
qaul-hubd with nix is recommended! If you
need to build via system dependencies, follow this guide, depending on
You will need to have a Rust compiler, and cargo toolchain installed
on your system (minimum version
v1.42). Install instructions
On MacOS you will need to install a package manager first to install all the developer tools. Alternatively you can also get them by downloading XCode from the App Store.
Homebrew is a popular package manager for MacOS!
You need to install a general development environment with the following tools available.
- Debian/ Ubuntu/ Mint:
sudo apt install make gcc cmake git
- Fedora/ CentOS:
sudo dnf install make gcc cmake git
- Arch Linux:
sudo pacman -Sy make gcc cmake git
brew install make gcc cmake git
Clone the main code repo:
$ git clone https://git.open-communication.net/qaul/qaul.net $ cd qaul.net/
Then simply run
cargo build --bin qaul-hubd --release to build the
The output artefact will be written to
In order for
qaul-hubd to work properly it will have to run in the
background to handle incoming and outgoing network connections. It's
recommended to launch it via a user systemd unit.
[Unit] Description=qaul.net hub daemon After=network.target [Service] Type=simple ExecStart=$HOME/bin/qaul-hubd <your parameters here>
Save this file in
Now you can reload the daemon and start the unit.
$ systemctl daemon-reload --user $ systemctl enable --user qaul-hubd.service $ systemctl start --user qaul-hubd.service
Following is a list of qaul-hubd configuration values. Those marked
* are mandatory. Commandline arguments take precedence over
|ENV variable||Runtime argument||Description|
|-P / --peers [PATH]||Specify the path to a peer file, containing a newline-separated list of peers to connect to|
|-p / --port [PORT]||Specify a tcp port to which qaul-hubd should bind itself to listen for incoming network traffic|
|HUBD_UDP_DISCOVERY=0||--no-udp-discover||Prevent qaul-hubd from registering a multicast address to find other clients on the same network. Some networks may forbid this, or cause performance issues.|
|HUBD_SETUP_UPNP=0||--no-upnp||Disable automatic UPNP port forwarding. Some networks may forbid this, or cause performance issues.|
|HUBD_RUN_MODE=[MODE]||-m / --mode [MODE]||Specify the peering mode of this hub. Possible values: "static", "dynamic"|
|HUBD_ADDR=[ADDR]||-a / --addr [ADDR]||A valid address to bind to. Must be a valid ip address format.|
This is a web client written in ember.js. It's meant to be installed on a communal computer and can provide multiple users access to an underlying qaul.net instance.
Requires a running
qaul-hubd instance to connect to.