Ayllu 0.4 Has Been Released!
05/13/2025
Ayllu release 0.4.0 has been tagged after a year of inconsistent development. This release has seen a major reduction in the number of features available in Ayllu and a simplification of it's operation. Most of the features that have been removed will eventually make their way back into the software as time permits and can be done in a way that is simple to maintain. Although the core functionality of Ayllu has been minimized, two new major (unfinished) libraries were developed adjacently: maitred, an embedable SMTP server, and papyri, an OCI compliant container registry. See more details below.
Notable Reductions
The Ayllu Binary is Now Stateless
The ayllu-jobs
binary has been temporarily removed after several iterations of implementing sqlite based state. The binary is responsible for doing CLOC anaylsis with Tokei, calculating authorship statistics, and anything else that needs to be run at a periodic interval. The jobs themselves have worked well but I've not been satisfied with any approach I've used to communicate stateful data into the UI in a way that is extensible. Ultimately my goal is to maintain an ultra fast static web interface that can be easily extended with new kinds of repository information. A future update will re-enable the state as opt-in likely via an RPC interface or shared database crate.
Git Blame is Removed
Although the server has the ability to generate everything that is needed to display git blame
data I haven't been able to design UX that looks good enough to present it so I've opted to remove the code for now. If anyone has suggestions for how to do it in pure html/css please reach out.
Simplified Themeing
The themeing engine was reverted back from Tera to Askama see commit: 5c5e94.
New Features
Web Finger Protocol Support
A concept of static "membership" has been added to the server which is browsable over the webfinger protocol. You can use the quipu
binary to query resources on an any Ayllu server:
quipu finger "acct:demo@example.org"
{
"subject": "demo@example.org",
"links": [
{
"rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://example.org/demo"
},
{
"rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://example.org/@demo"
},
{
"rel": "http://webfinger.net/rel/avatar",
"href": "https://example.org/avatar.png"
},
{
"rel": "http://ayllu-forge.org/rel/description",
"properties": {
"text": "Programmer interested free software"
}
}
]
}
# Or via curl
curl 'http://localhost:10000/.well-known/webfinger?resource=acct:demo@example.org' |jq .
Currently the server only can share static account information from the global configuration file but future updates will expose repository and other information. Eventually there are plans to implement global searchable index of Ayllu instances which will crawl this protocol data.
Mirror Aware Repositories
Ayllu will detect repositories that contain origins that have the mirror
flag enabled and display them as "non-canonical" sources in the UI.
Multiuser Container Image
The multiuser container image has been further developed and offers a simple way for managing trusted multi-user forge environments.
New Crates
Two new crates ayllu-shell and ayllu-keys were added which when completed will allow a simple static configuration of user authorization into an Ayllu managed server.
Supplemental Libraries
Maitred SMTP Server
A new crate offering an embeddable SMTP server has been developed called maitred for use in Ayllu so that it can easily receive patches over SMTP. This project is made possible by the low-level protocol implementation of the stalwart project. Most of this crate is functional however ARC and DMARC verification need to be finished before we can safely handle messages. Once completed this will be implemented as part of the ayllu-mail
binary.
Papari OCI Container Registry
The Papyri OCI container registry has started development which will provide the ability to read and write container images directly into an Ayllu instance. This crate currently only supports direct file system storage but a SQLite blob backend or possibly S3 compatible store may be added. This crate is shipped with an export of Axum routes and once integrated will allow pushing and pulling OCI manifests directly from the web interface.
That's all for now, thanks for reading!