Onderling

Voor ontwikkelaars

Basis is de code achter alles op deze site: de app, de Telegram-ingang, het apparaat dat aan blijft, de relay, en de bibliotheken die ze delen. Zo past het in elkaar.

Eén assistent, veel ingangen

Elke manier van vragen, een chatbericht, een tik, een commando, een andere assistent, wordt hetzelfde: een operatie met argumenten. Een app declareert zijn operaties één keer, en chat, knoppen, commando's en het verkeer tussen assistenten zijn projecties van die ene declaratie. Waar een operatie draait is een aparte vraag: op het apparaat, bij een ander, in een model, in de opslag van de gebruiker.

De kring is de eenheid

Een kring is tegelijk het publiek, de opslag en de rechten van een item. Elk lid houdt een kopie op het eigen apparaat. Elk item is ondertekend met een sleutel die alleen bij die kring hoort, afgeleid van de herstelzin van het lid. Lidmaatschap wordt zo bewezen in plaats van opgesomd, en twee kringen kunnen niet zien dat ze een persoon delen.

Niets ertussen

Apparaten praten rechtstreeks met elkaar als dat kan. Lukt dat niet, dan geeft een relay of het NKN-netwerk verzegeld verkeer door en ziet het adressen, nooit inhoud. Opslag is optioneel en van de gebruiker zelf: een Solid pod. Een taalmodel is ook optioneel: lokaal via Ollama, of Privatemode, dat het model draait in een geattesteerde enclave, zodat de prompt end-to-end versleuteld blijft.

De code

JavaScript, Apache-2.0. De platformpakketten staan op npm onder de scope @onderling, en de app laat zien hoe ze samenwerken. Begin bij de README.