This page summarises completed tasks, and current round of tasks within the NLnet grant for the A12-Directory improvements. All items are now completed, so this page only covers the latest updates for the last RfP to make review faster. See the edit history for the page to see the earlier changes.
Milestone 3
(G) Allow server-side scripts to dynamically permit a single client to re-join as a source sharing a custom composition.
This is provided in the controller side function 'source_client' (https://codeberg.org/letoram/arcan/src/branch/master/doc/ctrl/source_client.lua) but there is quite a few commits involved in how it routes through all layers.
- When called a temporary keypair is generated and reserved for the new slot.
- This is sent to the target client, that remembers the keypair and emulates a 'NEWSEGMENT'.
- This arrives in the application event-handler as a 'segment_request' that the appl then can 'define_recordtarget()' to specify which local media sources should apply in the sharing.
- If it accepts by doing that, a new outbound connection is made to the directory with the temporary keypair and joins as a hidden source in the namespace of the controller that performed the 'source_client' request.
- Now other clients can sink it.
https://codeberg.org/letoram/arcan/commit/95af94ad72b03fe3dba915deb94856a455522dba https://codeberg.org/letoram/arcan/commit/d98e49a589294bfdc300a95b49b858f7d687520e https://codeberg.org/letoram/arcan/commit/1be3cf3a57e352a8d16ab9adeafc891b89eeccdd https://codeberg.org/letoram/arcan/commit/6e43006f0eba5b9770b3185f0fed899f3ffd7d27
Milestone 4
(A) - The chat tool is now available via arcan-net arcan.divergent-desktop.org consort The source code can be found here: https://codeberg.org/letoram/consort
The purpose is to replace our Discord chat with something we control, and better integrate with development. It already supports bridging to IRC and forwarding updates to our code repository.
- The game is now available via arcan-net arcan.divergent-desktop.org peypey The source code can be found here: https://codeberg.org/letoram/peypey
The purpose is mainly to have an interactive application that we can use for automated testing that works both offline and online. The online mode doesn't require a full controller but rather uses the broadcast messaging mode to route the input back and forth so one can 'feel' the round-trip.
This gives us something we can visually record and compare, while also collecting network traffic. It is a step towards having API for a 'lossy' messaging channel (which requires a different approach to cryptography than the rest of the protocol).
(E) Harness and engine modifications to hook client side application to easier simulate/test/developer server side code.
This came as part of the work on consort, and brought iteration cycles down from minutes to seconds. The first part of the harness is in this function: https://codeberg.org/letoram/consort/src/commit/db20e4854f4474e715d0f6d2e413933897ba6ba0/appl/consort/network.lua#L189
along with softening the sandboxing ruleset for the main engine when running in developer-debug mode only: https://codeberg.org/letoram/arcan/commit/578c69c3fe72d510f9d519ca219ed94a57a90bef
Milestone 5
(A) Make arcan-net support drive-by tickets, patches and other metadata through server-side config controlled external resource hooks.
After some experimentation, this turned into a more generic mechanism:
https://codeberg.org/letoram/arcan/commit/be5c646e6bd77e8afa4e6fe3f8c4a721982891ae https://codeberg.org/letoram/arcan/commit/d72f67136aa1d816e9cd51cfe4b11da6aba11b3b
This adds an admin controlled hook_resource function where they can redirect special files, like .ticket and .patch
to a custom external program and have the input/output route back to the originating client.
The way it is setup on our testing server (developer access keys only right now, will be opened to users in 0.7.2 with the 'a farewell to hubs' blog post) one can:
arcan-net --get-file consort .ticket ticket.template arcan.divergent-desktop.org
To get currently pending ones from your key, as well as a template of fields to fill in (vim ticket.template) and submit:
arcan-net --put-file consort .ticket ticket.template arcan.divergent-desktop.org
With the same procedure for drive-by patches. With this approach our CI runner gets a simple one-liner to both submit feedback/create ticket and notify developers via our chat.
Milestone 6
(A,B) This is consolidated in one big tedious update: https://codeberg.org/letoram/arcan/commit/7ff17334373213877e99070fccdea24f56f66234
(D) Summary Blog Post, User Guide
The publication date landed after the MoU deadline because the host was down over the weekend.
https://arcan-fe.com/2026/06/02/arcan-10-years-of-online-obscurity/
https://codeberg.org/letoram/arcan/src/branch/master/doc/a12_devel.md
https://codeberg.org/letoram/arcan/src/branch/master/doc/a12_directory.md
While not exactly intended for this, there is a bonus blog post that is still worth a read: https://arcan-fe.com/2026/04/20/arcan-spring-hackathon-report/
(with two more coming in a few days).