January 27, 2026, 7:45pm 1
barev uses Yggdrasil network underneath, which takes care of routing and end to end encryption. Currently it has two implementations: a purple plugin (we use it with Pidgin) and a set of libraries written in Pascal and a test cli program. It supports messages, presence, statuses, typing notifications, avatars, file transfers.
More info in the links, and I’ll try to write more in comment.
Repository
1 Like
norayr January 27, 2026, 7:55pm 2
I did not want to invent something new. I like to stick with existing standards.
So some history:
In the beginning the idea was to try using B…
January 27, 2026, 7:45pm 1
barev uses Yggdrasil network underneath, which takes care of routing and end to end encryption. Currently it has two implementations: a purple plugin (we use it with Pidgin) and a set of libraries written in Pascal and a test cli program. It supports messages, presence, statuses, typing notifications, avatars, file transfers.
More info in the links, and I’ll try to write more in comment.
Repository
1 Like
norayr January 27, 2026, 7:55pm 2
I did not want to invent something new. I like to stick with existing standards.
So some history:
In the beginning the idea was to try using Bonjour, because it is standardized and serverless, over the Yggdrasil network.
For that I wrote a small utility. I would add my peer to a config file, and it would poke that IP’s bonjour port from time to time. I know, very ugly. If the port responded, it would force Avahi (local MDNS server) to believe there’s such contact and it has such IP address. Then Bonjour would sort of work over Yggdrasil.
But that was a very bad solution. We could not set statuses (away, for example), we could not exchange files, because Bonjour shares them by using local IPs. Overall it was a dirty hack and we realized Bonjour relies on MDNS too much for us to be useful over a mesh network.
So this idea was put aside.
Then I “forked” Bonjour plugin. Well, it does not build outside of Pidgin tree, so first I had to make it to build. Then gradually I was taking whatever XMPP standars are there for streams, messaging, avatars, notifications, status updates (we also have “do not disturb”, which Bonjour lacks), file transfers, and make it all work but without servers.
It took some time, and I am very thankful for support, inspiration and testing to folks in Yggdrasil muc.
So we have a purple plugin now which works.
Since when using Yggdrasil you are exposed to whole Yggdrasil network, people tend to use firewalls. Users could whitelist one port for Barev, but file transfers in Bonjour implementation would choose random ports. So I have adapted it to use a dedicated port range, that could be unlisted.
1 Like
norayr January 27, 2026, 7:59pm 3
How to use: Basically, you build the plugin, and copy it to ~/.purple/plugins or install systemwide. Then in Pidgin you add an account, and choose a nick. You can also choose custom port, by default it is 1337. Better leave it as is for now. Then you add buddies.
You add buddies as nick@ipv6 where ipv6 is their yggdrasil IP.
Barev plugin will allow connections only from those nicks and ips and ports that are known. So random people can’t contact you. The connection will be dropped as early as possible. For example from unknown IP.
It is only possible to communicate if you explicitly added each other as nick@ipv6.
If you remove a contact from the roster, it will not be able to interact with you.
It is not possible to impersonate a contact, because Yggdrasil takes care of this. It also takes care of end to end encryption.
If there’s a route it will find a route and it will encrypt the traffic.
1 Like
norayr January 27, 2026, 10:17pm 6
here is a link to the pascal library