At the start of June we made the first public release of lcagent.
lcagent is our multicast agent. It can be used like a multicast netcat/socat. You can read more in this annoucement email.
The source is available from our mirrors.
Available on Codeberg:
https://codeberg.org/librecast/lcagent
Sourcehut:
https://git.sr.ht/~librecast/lcagent
We’ve been using this tool internally to control CI builds and launch processes since July 2024. As part of NGI0 Core we added capability token support and tidied up the code and documentation for a public release.
Following on from our initial release of lcagent - the Librecast Multicast agent, we are now at version 0.1.0
In server mode, lcagent can be configured to listen on Librecast Channels (multicast groups) and execute programs in response to packet data received on those Channels.
Packets must be accompanied by an authorized token and signed by the matching key or they will be silently dropped.
Data is encoded with #RaptorQ using Librecast’s liblcrq library to provide forward error correction in the event of packet loss.
lcagent can be used to send and receive data over multicast and to pipe data between programs on one computer and as many receivers as the multicast network can support simultaneously. We're currently using it now to run our own CI builds by multicasting the patch to multiple build servers simultaneously.
This could also be useful for monitoring and configuration management.
Also in June we rebuilt our Librecast CI system using the newly released lcagent program, automating VM creation and CI builds. When committing to a branch, a git hook automatically triggers to generate a patch and multicast it via lcagent to all the test nodes. The test results are reported back and stored in a sqlite database for later analysis. As we add more complex tests and timing data to this mix we’ll be able to more easily see the effects of code changes on performance across the different platforms we support and keep an eye out for regressions.