Kunuleco User Manual
Everything you can do, and how to do it — from your first login to founding a Hall and building trusted circles.
This manual covers the full command surface of the current alpha build. You can read it top to bottom, or jump to the Command reference when you just need syntax. Commands are shown as you type them; angle brackets like <name> mark values you fill in, and [brackets] mark optional parts.
Two front doors, one set of commands
You reach a Kunuleco node either through the Urchin graphical client or over plain SSH. The world commands (called verbs) are identical in both. The only difference: in the Urchin client's chat mode you prefix a command with / (e.g. /look); over SSH you type the verb directly (look). This manual writes verbs bare — add the / when you're in the client's chat mode.
What is Kunuleco
Kunuleco is a platform for creating private digital spaces you actually own. The name comes from Esperanto: kunuleco means "fellowship" — the experience of being together with people who matter to you. It isn't a social network; it's infrastructure for genuine connection — small groups, trusted circles, real conversations.
Your space doesn't live on someone else's server. It runs on your machine, as a node, under your control. Four ideas hold the whole system together:
- You own your space. Your identity is a cryptographic key on your own machine. No platform issued it; no platform can revoke it.
- Invite-only by design. There are no public directories and no discovery feeds. People reach you because you handed them an invite.
- Multiple paths to connect. Local network, Veilid, Tor, or IPFS — if one route is blocked, others remain.
- Capability-based security. Access comes from holding an unforgeable token, not from being on a list. Being present somewhere and being able to do things there are separate decisions.
Two ways to connect
| The Urchin client | SSH / terminal |
|---|---|
The graphical app. Guided onboarding, a network view, accessibility settings, media popups, and client commands prefixed with /. Connects over TLS (default port 8123). |
Any SSH client connects to a node (default port 8122, e.g. ssh alice@host -p 8122). You type verbs directly — no / prefix. Everything in the Command reference works here. |
Client-only commands (network view, updates, accessibility, wizards) are listed under Urchin client commands and exist only in the graphical app.
Command mode & chat mode
The Urchin client has two input modes:
- Command mode — everything you type is a verb (
look,say hello,create ~room garden). - Chat mode — bare text goes to your active channel, and the whole line is the message. Prefix a command with
/to run it (/look), or address a different channel by its!sigil:!garden hello.
Switch with /cmd and /chat, and set your default with /defaultmode. Over SSH there are no modes — you're always typing commands directly.
Addressing never creates or switches: a channel is made only by the explicit act (create ~presence <name>), addressing an unknown one is an error, and sending never changes which channel is active.
Create your identity
Your identity is the first thing you make, and it belongs to you. It's a cryptographic keypair stored on your machine, protected by a password only you know.
There is no "forgot password"
A password reset would require someone else to have control over your identity — and no one does. Keep your password safe, and export an encrypted backup of your identity once it's created.
In the Urchin client
On the welcome screen, enter a username and choose Create Identity. You'll set a username, password, and theme. If the node already has members, you'll be sent to the Sponsor step instead (see below). When you're done you land on a success screen offering to create a room, join with an invite code, or go to your HOME.
Over SSH / first node
The very first account on a brand-new node is created freely, and it becomes the node's owner. The node also has an account of its own, the node user, which signs the owner's grants once at that moment and can never be signed into. After that, account creation is sponsored. The raw protocol commands are:
USER <username> begin login
PASS <password> authenticate
ADDUSER <username> <password> create an account
Sponsorship — how new accounts join
Once a node has members, a new person can't just create an account: a sponsor must authorize the registration, and a sponsor is someone who holds the right to create accounts (create_user). The owner holds it from the start and can pass it on. Not every member has it. In the client this is the "Sponsor required" panel — the newcomer supplies their desired credentials plus a sponsor's username and password, and the sponsor's authorization creates the account. This keeps a node's membership intentional rather than open to the world.
Owner rights expire unless they are renewed
The right to create accounts (create_user), the owner's right (node_admin), and the right to pass either on (delegate:…) each expire 90 days after they are granted, unless the person who granted them renews them. Nothing renews by itself. The owner's own grants, made by the node user, do not expire. When you sign in, the node tells you about grants you gave that lapse within 30 days. Renew one person's with renew <name>, or list them all with renew all and confirm with yes. Holding create_user does not make someone an owner, because only node_admin does. See Owner rights & grants.
The guided tour
The first time you log in through the Urchin client, the node introduces itself and walks you through the essentials. It opens in the node's own voice:
This node is yours, newly awake.
Type anything and it runs.
From there it has you run whoami (to meet your identity), transport (to see how you're connected), and look (to see where you are), explains the two input modes and the menus at the top, shows how to make a space and bring people in, and then closes:
That's enough to get started. Type help to see your commands. Type help all when you're ready for more. This node is yours.
The tour closes by handing you help — your commands are yours to explore. You can type skip at any point to jump to the closing. The tour runs once per identity.
Your first commands
These are the verbs the node teaches first — enough to look around, move, talk, and build.
| Command | What it does |
|---|---|
whoami | Show your identity, location, and inventory. |
look (or l) | Examine your surroundings; look <thing> inspects one thing. |
go <exit> | Move through an exit. Shortcuts: n s e w ne nw se sw up down. |
who | See who is here and who is online on this node. |
say <message> | Talk to everyone in the room. Shortcut: "<message>. |
create ~room <name> | Make a new room. |
invite <name> | Create an invite (you get a short code like tiger-castle-7). |
home | Return to your HOME. |
help · help all | Getting-started help, then the full verb listing. |
quit | Disconnect. |
Concept · Your identity
Your identity in Kunuleco is self-sovereign and built in three layers:
| Layer | Example | Purpose |
|---|---|---|
| Cryptographic root | k51qzi5uqu5dg… | Permanent, unforgeable anchor — an Ed25519 key. |
| Name#Discriminator | Mira#7K2QX9 | Human-friendly. The six-character tag is derived from your AID, in letters and digits chosen to be hard to misread, so no one can squat Mira#7K2QX9. |
| Short / intro code | tiger-castle-7 | A speakable code for first contact and invites. |
Under the hood your identity has three documents you'll occasionally see named:
- AIRO — your private credential blob, encrypted on disk (this is "your identity").
- PIRO — your public, shareable identity document: how peers learn to reach you across transports.
- NIRO — the node's own identity.
When your node connects to another, each side proves who it is with a signed hello, and what it proves is an AID, a KERI identifier. A name can change and anyone can claim one, so what must hold on to a person, such as a block or an admission to a room, keys on the AID the connection proved. KERI records each key event in an append-only chain that commits in advance to the next key, which is what will let a key be rotated. There is no command to rotate a key yet. Your older did:key:z6Mk… identifier still appears in places such as your peer registry. See Back up your identity for the practical side.
Concept · Spaces & Halls
Kunuleco spaces nest from broad to specific:
- HOME — your personal root space, created at first login. You are always its Steward.
- Halls — community hubs you found for a group. Each Hall (and your HOME) is divided into three zones.
- Zones — access tiers within a hub: Public (open to visitors), Common (members), and Private (stewards). Crossing into a zone is gated by your Standing.
- Rooms — the actual places you gather and talk, living inside a zone. Connected by exits (one-way or two-way).
You move with go <exit>, look with look, and return HOME with home. Found a community space with found hall <name> — it builds the hub, its three zones, and starter rooms (welcome / general / governance), and makes you the Steward.
How a Hall decides who gets in
Each Hall has a threshold: open (anyone joins as a Newcomer), knock (the Steward approves each arrival — the default), invite_only (short-code holders), or members_only (existing members must vouch). Set it with set hall threshold <mode>.
Live voice and avatar movement in a Hall
Members of a Hall can talk live and see each other's avatars move. Both travel over Veilid only, among the people in that Hall, and each stream carries the name its sender proved. The Steward turns them on or off with set hall voice on|off and set hall pose on|off. Voice is off until it is turned on, and pose is on until it is turned off. Your avatar's movement goes only to people who opened your window, and the client asks once before it sends your face. Live voice is not end-to-end encrypted.
Concept · Standing & trust
Standing is your trust level within a particular space. It rises from visitor to steward, and each tier unlocks deeper zones and more authority:
| Tier | Can… |
|---|---|
| Visitor | Read the Public zone. Implicit; not a member. |
| Newcomer | Read and write in the Public zone — the first member tier. |
| Familiar | Enter and participate in the Common zone. |
| Trusted | Moderate Common (remove content, remove people). |
| Steward | Enter the Private zone, govern the space, and grant Standing to others. |
Check yours with standing. A Steward grants a tier with standing <user> <tier>. Entry to a gated Hall flows through a knock queue: newcomers knock (handled automatically), the Steward reviews with knocks and uses accept / reject, and existing members can vouch for someone to speed them through.
Concept · Presence
Presence is being somewhere, with other people, right now. It has three properties: a location (which space you're in), visibility (others can see you're here), and it's ephemeral (it's gone when you disconnect).
Crucially, presence is not the same as capability. If someone can reach your node and join your room, they're present — but what they can actually do (open a capsule, post to a board) is a separate, capability-gated decision. You talk to a presence with say (the room), chat (your active channel — or a named one explicitly: chat !garden hello), or tell <person> (privately — a 1-on-1 message saved to a persistent history).
A person whose identity can't be derived renders as UNIDENTIFIED. The word is deliberate: it means we cannot say who this is, and absence of identity is never dressed up as somebody.
Concept · Capsules & capabilities
A capsule is a capability-gated container. It holds objects and can expose services — methods other people can call. Capsules are the unit of sharing: you can give someone access to one capsule without exposing anything else.
Access works by capability, not by membership list. You grant an identity specific capabilities (read, write, …) on a capsule, and revoke them later. A capsule can also carry services built from templates (echo, ping, inventory) which remote peers invoke over the network. Capsules are exported as capsule:<name>:<service_type> when shared.
Concept · Friends & petnames new
The social layer remembers the people you meet, so your contacts survive restarts instead of vanishing each session.
- Peer registry — a private, persistent record of everyone you've encountered, keyed by their DID. Each contact starts as discovered and can become a contact or be blocked. A block covers the person, not one key. It holds on every record for the AID they proved, over any transport and after a reconnect.
- Petnames — your own private aliases for people. A petname is bound to a specific identity (by DID), so an impostor reusing someone's display name can't inherit the alias. Set with
petname <identity> <name>. Once set,tellrecognizes it. - Friends — promote someone you've met to a contact with
friend. List them withcontacts, inspect one withfinger, and check who's reachable right now withfriends online. - Persistent chat & outbox —
tell <friend> <message>(also spelledwhisperor@chat) sends a one-to-one message and saves it to a history that survives restarts. With no message,tell <friend>shows your recent history together. If the friend is offline, the message waits in youroutboxand you canoutbox flushto retry once they're back.
You can only befriend someone you've met
Petnames and friends are anchored to a real identity you've actually seen on the network — by canonical name (alex#429754), an existing petname, or a live peer. This is what keeps the trust signal meaningful.
Concept · Connections & transports
Kunuleco speaks over several transports. When it connects to a peer it tries them at the same time and keeps the first that connects, so a blocked path doesn't cut you off. The messaging layer on top (called CapTP) is the same regardless of which transport carries it.
| Transport | Scope | When it's used |
|---|---|---|
| mDNS | Local network | Same Wi-Fi / LAN. Automatic discovery, no setup. A sighting on the local network is only a hint, and the signed hello decides who the other node is. |
| Tor | Internet | Reachability and reliable fallback via a persistent .onion address. It does not hide where your node is, because every hello carries your node's IPFS addresses. |
| Veilid | Internet | Encrypted private routes that traverse NAT without port-forwarding. |
| IPFS | Internet | Content-addressed last resort via DHT routing. |
A short code (like tiger-castle-7) is a memorable lookup key — behind it sits your real connection info (identity plus mDNS / Veilid / Tor endpoints) and a one-time token. You hand someone a code; they join it. See how you're connected with transport and which daemons are running with @node_processes.
In the Urchin client, the status bar names the link's state exactly. Encrypted (certified) means the channel is encrypted and the node's certificate matches the one your client holds, either your own node on this computer or a remote node whose trust bundle you imported. Encrypted (uncertified) means the channel is encrypted but the node's identity is not verified yet. The pair is deliberate, because the second is the weaker claim, and the bar never shows a plain "connected" where identity is unproven.
Trusting a remote node. Ask the node's operator for a trust bundle. The operator produces one with @node_trust and sends it to you, and you import it with /trust <bundle> [host], which records that node's certificate so every later connection must match it. Check the fingerprint with the operator by another route before you rely on it. If a later connection does not match the bundle, the client refuses the connection instead of making it, and it tells you the certificate did not match. /untrust [host] forgets a bundle, and connections to that node are UNVERIFIED again and will say so.
How do I… make a room and invite someone?
1Stand in a zone, then create the room. Rooms live inside zones (public, common, or private); creating one from your home hub or a Hall hub is refused, with a hint naming the zones you can enter.
go public
create ~room garden --desc A quiet place to talk
2Share it so others can reach it (this also opens a presence/chat channel). Sharing a room does not move you into it. You stay where you are.
share room garden
3Create an invite. You'll get a short code to pass along:
invite garden -short
→ tiger-castle-7
4Your guest joins with the code (or your canonical name):
join tiger-castle-7
To wire rooms together, use exits <room> add <name> <target> (add --oneway for a one-way passage).
How do I… found a Hall and manage entry?
found hall riverside
In the Urchin client, /found-wiz runs this as a guided ritual (name → description → atmosphere → threshold → optional first room). Either way, it creates the Hall hub, its Public/Common/Private zones, and welcome / general / governance rooms. You're the Steward. Then shape it:
describe hall What brings us together is shared music.
set hall atmosphere Playful
set hall threshold knock
With knock, arrivals queue for your approval:
| Command | What it does |
|---|---|
knocks | List people waiting to join, with any vouches. |
accept <user> | Admit them (grants Newcomer standing). |
reject <user> | Decline the request. |
vouch <user> | Vouch for a pending knocker (Familiar+); auto-admits at the threshold. |
standing <user> familiar | Promote a member to a higher tier (Steward only). |
How do I… add friends and keep a chat history? new
Once you've met someone (you've seen them connect or discovered them), add them and give them a petname in one step:
@friend add alex#429754 my-bandmate
That befriends alex#429754 and sets the petname my-bandmate. From then on:
contacts list your friends
friends online see who's reachable right now
finger my-bandmate full detail on one contact
tell my-bandmate Hey, you around? one-to-one, saved to history
tell my-bandmate show recent history with them
(tell, whisper, and @chat are the same command — use whichever you prefer.)
In the Urchin client you don't need the roster first: anyone you can see offers Whisper — click their name.
If they were offline when you sent, the message waits in your outbox:
outbox see what's queued
outbox flush retry delivery now
Manage aliases directly with petname <identity> <name>, list them with petnames, and remove one with petname <name> --clear. To stop following someone, unfriend <identity>; to cut them off entirely, block <identity>.
How do I… share a capsule or board?
Capsule. Create one, then share it and grant capabilities:
create ~capsule notes
share capsule notes
grant notes alex#429754 read,write
Revoke with revoke notes alex#429754. See who has what with list grants notes.
@board_create music Music Chat
post Practice moved to Friday --board music
posts --board music
reply 3 Works for me
share board music share the board, read-only
Shares are read-only. --post is refused: a share that grants
posting grants it to everyone the board is shared with, which is not something the current
build can scope to one person. Anyone you share a board with can read it; nobody gains the
ability to post by being shared it.
How do I… share media?
media upload ~/pictures/poster.png --caption Friday's show
media list
media share <id> lobby
Uploads (PNG / JPEG / GIF / WebP) go to IPFS and are shared into a presence as a clickable tag; in the Urchin client they open in a media popup. Remove your own with media delete <id>.
How do I… back up or move my identity?
Because there's no password reset, an encrypted export is your safety net and the way to move to a new machine.
export-identity '~/kunuleco-backup.id' <base64_passphrase>
import-identity '~/kunuleco-backup.id' <base64_passphrase> --overwrite
What a restore brings back
A copy of your identity restores who you are. It does not restore what a node let you do: permissions live on the node that granted them, and a node you restore onto has no record of you.
Quote the path; the passphrase is base64
In the Urchin client, type export-identity bare — a guided dialog picks the save path, masks the passphrase, and does the quoting and base64 wrapping for you.
Typing the full command yourself (over SSH): put the path in single quotes. The parser treats a bare backslash as an escape, so an unquoted Windows path like C:\Users\you\id.bin silently becomes a different filename — no space needed, no error shown. Quotes also protect paths with spaces. Encode the passphrase yourself with echo -n 'passphrase' | base64; don't type a raw secret on the command line, where it could land in your shell history or logs. Store this copy of your identity somewhere safe; anyone with the file and the passphrase holds your identity.
How do I… check my connection & troubleshoot?
| Command | Use it to… |
|---|---|
transport | See which transports are active (mDNS / Tor / Veilid / IPFS). |
@node_processes | Check which daemons are running. |
ping <user> | Confirm a peer is reachable and over which protocols. |
@peers · @discover | List connected peers / everyone discovered. |
@netcheck | Run a P2P compatibility check. |
@version | Show the server build and commit. |
In the Urchin client, /network shows a live network view and /check-updates / /update handle upgrades. Updates are cryptographically verified: the app checks each release against a signed manifest before it applies anything, and a fresh install works even offline because the app carries that signed manifest with it. The app you downloaded is the trust anchor, and nothing installs or updates without a valid signature.
Command reference
Case-insensitive. help <verb> prints detailed help for any command. Verbs beginning with @ are lower-level or diagnostic; their plain-word equivalents (above them here) are the everyday way in.
Account & session
| Command | Description |
|---|---|
USER <username> pre-login | Begin login; follow with PASS. |
PASS <password> pre-login | Authenticate. Repeated failures are rate-limited. |
ADDUSER <username> <password> | Create an account. Free for the first account on a node; afterward requires a sponsor. |
passwd <old> <new> | Change your password. (Client: /passwd.) |
whoami | Your name, location, and inventory. |
who | Who is present here, and who is logged in on this node. |
quit · LOGOUT | Disconnect. |
Navigation & looking
| Command | Description |
|---|---|
look [target] · l | Examine surroundings, or a specific object / capsule. |
go <exit> | Move. Shortcuts: n s e w ne nw se sw up down. |
home | Return to your HOME. |
exits <room> add <name> <target> [--oneway]exits <room> remove <name> | Add or remove exits between rooms. |
inspect <object> · peer <object> | Examine something in close detail (state, capabilities, metadata). |
manifest realm <peer>#<disc> | Open a portal to a peer's realm, loading their published Halls as exits. |
Talking
| Command | Description |
|---|---|
say <message> · "<message> | Talk to everyone in the current room. |
chat <message> | Send to your active channel. The whole line is the message — the first word is never read as a target. |
chat !<channel> <message> · !<channel> <message> | Address a named channel explicitly — ! is the channel sigil. An unknown channel is an error; addressing never creates a channel or switches your active one. |
@psay --to <host>:<presence> <message> advanced | Send into a presence by naming the node that hosts it, as a handle with its tag (@psay --to alice#482938:lobby hello). local:, self:, here:, me: or a bare : mean your own presence. join <host> <presence> is the matching join. Everyday chat never needs a host, and chat does not read one. |
tell <person> [message] · whisper · @chat new | One-to-one direct message, saved to a persistent history that survives restarts. Resolves petnames. No message = show recent history. If the person is offline the message queues in your outbox. |
outbox [status] · outbox flush new | Messages queued for offline friends; flush retries delivery. |
Friends & petnames new
| Command | Description |
|---|---|
friend <identity> | Add a peer you've met to your contacts. |
unfriend <identity> | Remove from contacts (keeps the discovered record). |
block <identity> · unblock <identity> | Block a person (and drop any open session) / lift the block. A block keys on the AID they proved, so it covers every record for that person. If the name belongs to more than one identity, or this node has never verified who it is, block says so and blocks nothing. unblock restores them as they were, back in your contacts if they were a contact. |
blocked | List who you have blocked. |
contacts | List your friends. |
finger <identity> | Detailed info: registry, petname, directory, and live status. |
petname <identity> <name>petname <name> --clear | Set / clear a private alias bound to a specific identity. |
petnames | List your petnames. |
@friend add <id> [petname]@friend remove|rename|list … | One-step convenience: befriend and name in one go; remove, rename, or list. |
friends [online] | Friends roster; online actively polls who's reachable now. |
Building · rooms, Halls, objects
| Command | Description |
|---|---|
create ~room <name> [--desc …] | Create a room. Other prototypes: ~capsule, ~board, ~object, ~presence, ~place. |
describe room <name> <text> | Set a room's description. |
found hall <name> | Found a Hall (hub + Public/Common/Private zones + starter rooms). You become Steward. |
set hall atmosphere|threshold|harbor|vouch_restores|voice|pose|residency|verb … | Configure a Hall you steward. voice is off unless it is set, and pose is on unless it is set. |
describe hall <text> | Set the Hall's intention. |
halls · zones | List Halls you have standing in / zones in the current place. |
standing [<user> <tier>] | View your Standing; a Steward grants newcomer|familiar|trusted|steward. |
knocks · accept <u> · reject <u> · vouch <u> | Review and resolve requests to enter a gated Hall. |
get <obj> · drop <obj> · put <item> in <container> | Handle objects. (take = get.) |
inventory · i | Show what you're carrying. |
destroy <name> | Permanently remove an object (or destroy room|capsule <name>). |
Capsules, capabilities & services
| Command | Description |
|---|---|
create ~capsule <name> | Create a capability-gated container. |
share capsule <name> [--no-presence] [revoke] | Share a capsule. Unless you pass --no-presence, it opens a presence for the capsule and puts you in it (a room share does not move you). Only the capsule's owner can share it. |
list capsules · list grants <capsule> | List your capsules / who holds capabilities on one. |
grant <capsule> <identity> <caps> [--service <type>] | Grant capabilities (e.g. read,write), optionally on a specific service. |
revoke <capsule> <identity> [caps] [--service <type>] | Revoke capabilities; no caps = revoke all. |
service list|add|remove <capsule> [echo|ping|inventory] | Manage services mounted on a capsule. |
service invoke <peer> <method> <capsule> | Call a method on a remote capsule's service. |
Boards
| Command | Description |
|---|---|
post <message> [--board <name>] | Post to a board (default general). |
posts [--board <name>] [--thread <id>] · read | Read board posts. |
reply <post_id> <message> | Threaded reply. |
@board_create <id> <name…> · @board_list | Create / list boards. |
share board <id> | Share a board, read-only. --post is refused — see above. |
@board_delete_post <id> owner | Delete a post (author or board owner). |
Media
| Command | Description |
|---|---|
media upload <filepath> [--caption "…"] | Upload an image (PNG/JPEG/GIF/WebP) to IPFS. |
media list · media info <id> | List your media / details for one item. |
media share <id> [presence] | Share into a presence as a clickable tag (default lobby). |
media delete <id> | Delete your own media. |
Identity
| Command | Description |
|---|---|
@whoami | Your peer-to-peer identity: DID, peer ID, routes. |
export-identity <path> <base64_passphrase> | Export your identity to an encrypted file. |
import-identity <file> <base64_passphrase> [--overwrite] | Import an identity from a file in the node's imports folder (it reads nowhere else); won't overwrite without --overwrite. It refuses a name another account holds, and the node's own name. |
Owner rights & grants
| Command | Description |
|---|---|
delegations | List the grants you gave or hold, with their ids and when each expires. The owner sees every grant on the node. |
undelegate <id> | Revoke a grant, and what was passed on from it. It refuses the node user's own grants and the last node_admin. |
renew <name> | Renew every expiring grant you gave that person, for another 90 days. |
renew all · yes | renew all lists every grant you gave that can be renewed and signs nothing. yes, within 10 minutes, renews exactly that list. |
Invites & joining
| Command | Description |
|---|---|
invite [presence] [-short|-noshort] | Create an invite to a space (defaults to the current presence / lobby). |
meet new | Show your peer seed (a kunul1… code) and a QR so someone with you in person can connect to your node directly over the LAN — no internet, no directory. They run join <seed>. |
meet guest new | Show this node's address and a QR so a phone running the Urchin app can join it as a thin client. |
join <identity|shortcode|name|seed> [presence] | Join remotely by code or canonical name, or in person by a kunul1… peer seed (from someone's meet; the connection is verified against the identity the seed pins, and a seed from an older build is refused with its reason). --local joins a presence on this node; --here materializes a remote room as a walkable place. |
door <presence> open|invite | Keep a ~presence you own open to anyone (the default) or make it invite-only. The lobby is always open. |
door <presence> invite|uninvite <person> | Invite someone to an invite-only presence, or withdraw it. The invite is kept against the identity their connection proved, so someone else using the same name is refused. |
ping <username> | Check whether a peer is connected, and over which protocols. |
@whoknows [identity] | Show the cached public-identity directory. |
Advanced & diagnostics advanced
Shown by help debug. Not needed for everyday use — handy when verifying connectivity or reporting a bug.
| Command | Description |
|---|---|
transport <status|enable|disable|force> <t> | Steer transport selection for your next join (mdns/ipfs/veilid/tor, and force none clears). It does not re-route messages to peers you are already connected to, and it applies node-wide, not just to your session. enable, disable and force are the owner's. |
@discover · @peers · @netcheck | Discovered peers / connected peers / compatibility check. |
@presences · @pstats · @pwhere | Active presences / presence stats / where you are now. |
@piroshow · @pconnect <identity> | Your public identity document / connect via automatic transport racing. |
@ipfsid · @ipfspeers · @ipfscleanup | IPFS peer ID, swarm peers, stream cleanup. |
@p2pstatus · @p2pconnect <id> · @p2pdisconnect <id> | IPFS peer-to-peer bridge. |
@veilidstatus · @veilidroute · @veilidconnect · @veilidsend · @vpeers · @vcaptp | Veilid status, your route blob, connect / test send, peers, session state. |
@torstatus · @toraddress · @torconnect <peer> <onion> | Tor status, your .onion address, connect to a peer. |
@node_trust | Emit this node's trust bundle, for the operator to hand to people who connect. They import it with /trust. |
@version · @node_processes · @captp_debug | Build version, running daemons, CapTP session state. |
debug <topic> | Internal state: location, places, capsules, registry, actor, capabilities, all. |
bug <description> | Capture a bug report. It is saved as a file on your own machine, and nothing is uploaded. Zip the bugs/ folder and send it with a note. (Client: /bug.) |
Urchin client commands client only
These exist only in the graphical client (prefix with / in chat mode). Over SSH they don't apply. In the world view, the ACTIONS panel carries the social verbs — each entry dispatches the typed command it names; on Android the world is the primary way in.
| Command | Description |
|---|---|
/chat · /cmd · /defaultmode | Switch to chat / command mode; set your default mode at login. |
/world · /home | The world navigator — your node as a place. Its ACTIONS panel carries the social verbs. |
/who | Who's here right now, live. |
/chat-window | Your current channel as a chat window. It shows the conversation from the moment you open it — earlier scrollback stays in the console. |
/harbor | Browse Halls peers have published, over the world view; a portal steps you through. |
/network · /netdetail · /refresh | Show the P2P network view; toggle IPFS peers; poll now. |
/trust <bundle> [host] · /untrust [host] | Record a remote node's certificate so every later connection must match it (the operator runs @node_trust) / forget it, returning that node to UNVERIFIED. |
/services | Show the node services view. |
/settings | The settings menu, over the console. |
/theme · /display · /a11y | Theme, display size, accessibility (scanlines, glow, motion). Font size: Ctrl + / Ctrl -. |
/check-updates · /update [name] · /reinstall | Check for and install updates (all, client, server); full reinstall. |
/restart · /reconnect | Restart Urchin (after a client update) / reconnect without restarting. |
/found-wiz · /join-wiz | Guided Hall-creation ritual / guided join with an invite code. |
/invite-wiz · /friend-wiz · /create-wiz | Guided dialogs: mint an invite (with a copy button) / add a friend by identity / create a standalone presence. |
/describe-wiz | Set this place's description — offered only where you own it. |
/create-room-wiz | Create a room here — offered only inside a zone. |
/bug | Capture a bug report from inside the session, right when something looks wrong. It is saved as a file on your own machine, and nothing is uploaded. Zip the bugs/ folder and send it with a note. |
/passwd · /clear · /logdebug on|off | Change password / clear the terminal / toggle debug logging. |
/quit · /exit · /help | Disconnect / close Urchin / open help. |
Glossary
| Term | Meaning |
|---|---|
| AIRO | Your private, encrypted identity credential on disk — "your identity." |
| PIRO | Your public, shareable identity document: how peers reach you across transports. |
| NIRO | The node's own identity. |
| DID | Your canonical key as a decentralized identifier (did:key:z6Mk…) — the truth about who you are. |
| KERI | The pre-committed, hash-chained key-rotation scheme that lets you rotate a key without losing your identity. |
| CapTP | The capability messaging protocol that rides on top of any transport. |
| Capsule | A capability-gated container for objects and services; the unit of sharing. |
| HOME | Your personal root space, created at first login. You always steward it. |
| Hall | A community hub you found, divided into Public / Common / Private zones. |
| Zone | An access tier within a hub, gated by Standing. |
| Standing | Your trust level within a space: Visitor → Newcomer → Familiar → Trusted → Steward. |
| Steward | The governing role of a space — grants Standing and manages entry. |
| Presence | Being somewhere with others, right now. Separate from capability. |
| Petname | Your private alias for a peer, bound to their identity so it can't be hijacked. |
| Short code | A speakable lookup key (e.g. tiger-castle-7) standing in for your connection info. |
| Harbor | The shelf of Halls peers have published for others to visit — browsed from the world view. |
| UNIDENTIFIED | How a person with no derivable identity renders. It means we cannot say who this is — absence never renders as somebody. |