Skip to content

Presence

Presence is being somewhere with other people right now. It is not history and it is not a message left for later. It is who is here at this moment.

Why presence matters

Most online communication is asynchronous. You send, they read later, they reply, and you read later still. That works for many things, but it is not being together. Kunuleco also supports the other kind, where you can see who else is here, you notice when someone arrives, and what you say reaches the people present as you say it.

Two kinds of here

In a place on your node. When you are in a place, you are present there. who lists the people in your current place and everyone signed in on your node.

In a presence. A presence is a named gathering that one node hosts and people on other nodes join. Every node has a lobby. You can make your own with create ~presence <name>. Someone on another node joins it with join <host> <presence>, for example join mira#7K2QX9 officers, and leaves with leave <presence>.

The door on a presence

A presence you make with create ~presence has a door, and only you, its owner, can change it. It is open by default, which means anyone who knows its name may join.

door officers                    show its door and how many people are invited
door officers invite             only people you invite may join
door officers open               anyone who knows its name may join
door officers invite mira#7K2QX9 invite a person
door officers uninvite mira#7K2QX9

An invite is stored against the identity a connection proved, not against a typed name. You can invite someone by the name their connection proved, by the exact name of an account on your node, or by their reference. A person you did not invite is told that the host refused the join, because the presence is invite-only and its owner has not invited them. The lobby is always open.

When someone joins, the host records only the name their connection proved, and a join under any other name is refused. On your side of a presence you joined, your node accepts that presence's messages only from its host.

Presence is not permission

A door decides who may be present. It grants nothing else. Someone in your presence or your place cannot open a capsule there unless you have granted it to them, and granting capsule access is a separate decision. See Trust and standing.

How it travels

The host keeps the member list. When someone speaks, the host passes the message to each member on another node over a connection it already has to them. It tries the LAN session first, then the member's stored connection, then Tor, then Veilid. If none of those works, the person who spoke is told that the message was not sent. The full order is in Reference: Transports.

The member list is kept in memory, not written to disk. When a member's connection closes, the host takes them off the list and the others see the updated membership, so nothing of their presence is left behind.