Onderling

For developers

Basis is the code behind everything on this site: the app, the Telegram door, the device that stays on, the relay, and the libraries they share. This is how it fits together.

One assistant, many doors

Every way of asking, a chat message, a tap, a command, another assistant, becomes the same thing: an operation with arguments. An app declares its operations once, and chat, buttons, commands and the agent-to-agent surface are projections of that one declaration. Where an operation runs is a separate question: on the device, on a peer, on a model, in the user's storage.

The circle is the unit

A circle is the audience, the storage and the permissions of an item, all in one. Each member keeps a copy on their own device. Every item is signed with a key that belongs to that circle alone, derived from the member's recovery phrase, so membership is proven rather than listed, and two circles cannot tell they share a person.

Nothing in the middle

Devices talk directly when they can. When they cannot, a relay or the NKN network passes sealed traffic on and sees addresses, never content. Storage is optional and the user's own, a Solid pod. A language model is optional too: local through Ollama, or Privatemode, which runs it inside an attested enclave so the prompt is encrypted end to end.

The code

JavaScript, Apache-2.0. The platform packages are published under the @onderling scope on npm, and the app shows how they compose. Start at the README.