Adding people
Five ways to add a contact, all ending in the same unverified contact (compare safety numbers to verify):
| Way | Where | Needs |
|---|---|---|
| Card link or QR code | My card, Add contact | nothing new |
Invite code (K7F92-MQX4T) | My card → Invite code; Add contact → type it | relay with invite support; same relay on both sides |
| Read code from a picture | Add contact → Read code from a picture | works on Linux and Android |
| Add someone nearby | Add contact → Add someone nearby | same network; UDP port 47831 and a random TCP port reachable |
| Group member | Group members → add icon next to a member | the group credential carries the member's card |
| Share / open link | My card → Share; opening an kaiku://card/... link opens Add contact | Android; Linux after install.sh (a second launch hands the link to the running app; with SAIVO_DATA_DIR set each launch is its own app) |
Invite codes
- 10 characters from a 32-letter alphabet (50 bits), hashed with SHA-256 before the relay sees them.
- The relay keeps the card in memory for 10 minutes, deletes it on first use, holds at most 5000, and answers invite requests from all connections at 5 per second (burst 20).
Nearby
- While the screen is open the device broadcasts name, an 8-hex code and a TCP port; the card is fetched over TCP and must hash to the announced code.
- Anyone on the network can announce; the code on both screens is the check, and the contact stays unverified.