Your First Invitation¶
An invitation is an offer of trust. You're saying: I want you here. Kunuleco has no directory of people, so nobody can search for you by name. People reach you because you handed them a way in, and there are two ways, depending on whether your friend is next to you or somewhere else.
Your friend needs Urchin installed and an account of their own first (Installation, Your First Identity).
In Person: meet¶
If your friend is in the room with you, on the same network:
Urchin shows your peer seed, a code starting with kunul1, and a QR code for it. Your friend types the seed into
their own terminal:
Their node dials yours directly over the local network. No internet and no directory are involved. The seed pins
your identity, so their node refuses anyone else who answers in your place. That is what handing it over face to face
is for. When the check passes, their node records that you met in person and suggests friend as the next step. The
seed works while your node stays on that network. A seed from an older build of Kunuleco is refused with the reason.
meet guest is different. It shows your node's address and a QR code so that someone running Urchin on a phone can
sign in to your node as a client.
From Anywhere: invite¶
This makes an invitation to the presence on the chip above Urchin's input. On a new account that is your lobby. Once
you have founded a Hall or walked into one (Your First Hall), it is the Hall. The chip shows which.
To pick one yourself, name it, as in invite lobby.
The reply gives the full join line, such as join Mira#7K2QX9 lobby, and a short, speakable code, something like
tiger-castle-7. The code is a lookup key for your node's connection details, registered with Kunuleco's lookup
service. It is not your identity. Anyone holding the code can use it, so treat it like a door code. Add -noshort if
you want the full join line only. Tell your friend the code, and they type:
Their node reaches yours across the internet and joins the presence the invitation names.
The notification appeared quietly. Alex had used the code. After three months in a new city, Mira wasn't alone in her digital space anymore.
The lobby is always open, so a friend who joins your lobby is in straight away.
A Hall has a door. With the default knock threshold, your friend's join is queued as a knock, and they see that
it was. Your node tells you, and you let them in from inside the Hall:
Your friend then runs the same join again and is let in as a Newcomer. The other thresholds are on
Your First Hall.
Inviting someone into one of your rooms works differently, because a room has a door of its own.
Talking¶
Once your friend has joined, type a line in Urchin and it goes to the channel shown on the chip, which is the presence you are both in. Everyone present sees it.
For a one-to-one conversation that is kept, add your friend as a contact, then tell them something:
You can friend only someone your node has already seen, by a connection or on the local network. @friend add
Alex#4Q8RMT alex does two things at once. It adds the contact and sets a petname, a private alias of your own, so
from then on tell alex … works. A petname is bound to that person's identity, so someone else using the same display
name does not inherit it.
tell keeps a history that survives restarts, and whisper and @chat are the same command. tell alex with no
message shows your recent history together. If your friend is offline, the message waits in your outbox and is sent
when they reconnect. outbox flush retries straight away.
How the Connection Is Made¶
Your node tries every way it has of reaching your friend at the same time, and keeps the first one that connects:
- Local network, if you are on the same network
- Veilid, across the internet through private routes
- Tor, across NAT. It does not hide where your node is.
- IPFS
Whatever carries it, each side proves who it is with a signed hello before anything else is trusted.
Seeing Who Is Around¶
| Command | Shows or does |
|---|---|
who |
Who is present here, and who is signed in on this node |
contacts |
Your contacts |
friends online |
Which of your contacts are reachable right now |
finger <name> |
Everything your node knows about one contact |
ping <name> |
Whether a peer is connected, and over which transports |
petname <identity> <alias> · petnames |
Sets an alias, or lists yours. petname <alias> --clear removes one, and an alias must be cleared before it can point at someone else. |
unfriend <name> |
Drops a contact |
block <name> · unblock <name> |
Blocks a person, or lifts the block |
block keys on the identity the person proved, so it holds across every way they might connect, and it drops any open
connection. If your node has never verified who a name belongs to, block says so and blocks nothing. For every
command, see the command reference.
Next Step¶
You have an account, a place, a Hall and someone to talk to. Let's step back and look at what happened.