1
0
Fork
You've already forked awebo
0
forked from awebo-chat/awebo
/ȏȏ< awebo awebo awebo
  • Zig 97.7%
  • Objective-C 2.3%
2026年05月23日 19:56:41 +02:00
.forgejo fleshed out screenshare flow + ffmpeg 2026年03月23日 18:27:44 +01:00
ci Dockerfile for forgejo worker ( #24 ) 2026年01月19日 09:03:10 +01:00
deploy add systemd service file for server deployment 2026年03月06日 18:33:00 +01:00
design typo 2026年01月18日 15:58:02 +01:00
src ospicker working 2026年05月23日 19:56:41 +02:00
.gitignore update to zig 0.16.0-dev.2533+355c62600 2026年02月06日 18:26:53 -08:00
build.zig temp 2026年05月20日 08:38:37 +02:00
build.zig.zon temp 2026年05月20日 08:38:37 +02:00
LICENSE "init" 2026年01月15日 19:40:27 +01:00
LICENSE-APACHE "init" 2026年01月15日 19:40:27 +01:00
LICENSE-MIT "init" 2026年01月15日 19:40:27 +01:00
README.md update README.md 2026年03月23日 18:30:54 +01:00

Awebo Chat

Light-weight, self-hostable group chat application with voice rooms and screensharing support.

From small groups of friends and work groups, up to worldwide communities, and without any enshittification.

Awebo server can run on extremely cheap hosting solutions (like Hetzner's 2.99EUR/mo VPS).

Awebo is written in Zig.

Development stage

Awebo is currently pre-alpha. We have working calls (all platforms) and screensharing (sending from macOS, receiving on all platforms).

As of March 2026 Awebo is complete enough to host Awebo development voice calls on Awebo.

A call with 3 screensharing sessions active at the same time (March 2026):

Does Awebo use WebRTC?

No, we are using state of the art codecs (Opus DRED, h264, HEVC, AV1, FFV1) and then write everything above from scratch, including UDP packet framing and jitter buffers. WebRTC is a complicated protocol with bloated C++ implementations that needlessly bump up system requirements and increase resource consumption.

We are currently focusing on native awebo clients but we plan to also create a web client, in which case we will most likely add to Awebo support for WebTransport.

Running the project

Create a new server instance

zig build server -- server init --server-name banana --owner-handle admin --owner-pass admin

This is only needed the first time and whenever the schema changes (make sure to delete awebo.db before re-running the command).

Run the server:

zig build server -- server run

Run the client:

zig build gui

The first time you will be asked to add a remote server, after that the info will be cached in the local config directory. See logs to learn how to reset your local cache if needed.

NixOS

If you get a runtime SDL error that there are no devices, try:

nix-shell -p sdl3
zig build gui -fsys=sdl3

You might also need to do the same with -fsys=pulseaudio.

Testing with multiple users

If you want to launch two or more instances of the client, each with a different logged user, use the -Dlocal-cache build option like so:

# from inside the awebo repository
mkdir user1
cd user1
zig build gui -Dlocal-cache

Repeat multiple times as needed replacing 'user1' with a different name.

The -Dlocal-cache flag will create a build of the client that stores cache and authentication data in .awebo-cache and .awebo-config respectively, and by dedicating a directory to each user you can achieve isolation.

This can also be useful to be able to connect as the same user twice, as you will not be able to do so without this flag (the client takes an exclusive lock to the sqlite database).