How Capy works
How Capy works
Capy has no accounts and no server that can read your rooms. This page shows how, from your first 24 words to the minutes after a call.
Each part is written for anyone, with an “Under the hood” note for people who want the names of the real pieces.
- No accounts
- Peer to peer
- AI on your computer
Peer to peer, on Pear
Your device talks straight to theirs.
In most apps, a message goes from you to a company's server, and the server sends it on. Capy has no such server. Your computer connects to the computers of the people in your room, and the app itself makes no web requests at all.
To find each other, devices use a public phone book that nobody owns, called a distributed hash table (DHT). Every room has a topic. Devices that share it look it up, learn each other's addresses and connect. A technique called hole punching gets the connection through home routers and firewalls, and everything on the link is encrypted end to end.
Sometimes a direct link can't be made, for example between two strict mobile networks. Then Capy goes through a blind relay: an always-on computer, run by the Capy team, that passes the encrypted bytes between the two devices. It can't read them, and it is only used when a direct link can't be made.
Who your device talks to
The people in the room, directly
Web requests the app makes
None
Encryption
End to end, on every link
If a direct link fails
A blind relay passes encrypted bytes
Under the hood
- RuntimePear · Bare
- Finding peersHyperDHT · Hyperswarm
- ConnectionsNoise · SecretStream
- Relayblind-relay
Your identity
24 words, and no account.
There is no sign-up, email or password. When you start, Capy makes 24 words. They are your identity. The only copy stays on your device, in a file that only your user account can read, and nothing is sent anywhere.
From the words, Capy derives a Keet identity key. Each time the app runs, it also makes a fresh key for this device, and your identity vouches for it. The device key signs everything you write: messages, your profile and read receipts. Everyone else's app checks those signatures, so nobody can write as you, and no server has to say who you are.
Type the same words on another computer and it finds your other devices by itself, and your rooms come over. Log out and the device forgets the words. Type them again to come back.
Where the words live
Only on your device
Account, email, password
None
What signs your messages
A device key your identity vouches for
When you log out
The device forgets the words
How a message becomes yours
Your 24 words
Kept on this device only. Nothing to reset, nothing sent.
Your identity key
The same on every device where you type the words.
A key for this device
Made each time the app runs. Your identity vouches that it is yours.
Signed messages
The device key signs what you write, so others can check it came from you.
Worth knowing
Lose the words and every device that has them, and nobody can bring your identity back, not even us. There is no account to reset. While one device is still signed in, Settings shows the words again.
Under the hood
- Identitykeet-identity-key
- Your other devicesblind-pairing
Rooms and invites
A room is a log everyone writes to.
Each member's device keeps its own log and adds to it. Autobase merges all the logs into one order that every device agrees on, and a small database on top (HyperDB) turns it into messages, profiles and tasks. There is no central copy: the room is the sum of its members' copies.
You join with an invite, a code you paste or scan as a QR code. Your app sends a request, and the app of a member who is online checks the invite and lets you in. From then on the whole history replicates to you, because every member's device holds a copy.
Any member could be running a modified Capy, so no device trusts a record just because it arrived. Before one counts, each device checks its shape, its size and its signature. A record that fails is skipped the same way everywhere.
Where a room lives
On every member's device
Who lets you in
A member who is online
Who checks each record
Every device, before it counts
The invite as a QR code
Drawn on your device
Joining a room
An invite
The room's creator makes a code. It can be shown as a QR code, drawn on the device.
A request
The newcomer pastes it, and their app asks to join.
A member lets them in
A member's app checks the invite and adds the newcomer as a writer.
The history replicates
The log copies to the new device and the room opens, messages included.
Under the hood
- Shared logAutobase
- DatabaseHyperDB
- Invitesblind-pairing
- ChecksAutobase apply
Blind peers
A helper that keeps what it can't read.
A room lives on its members' devices. If all of them are offline, a device coming back has nobody to copy from. A blind peer fills that gap. It is an always-on computer that keeps an encrypted copy of the room's data, files included, and hands it to members when they come back. It never has the key that opens any of it, hence blind.
Capy ships with one, run by the Capy team, and there is nothing to set up: every room is registered with it as it opens, except secure rooms, which never are. A blind peer holds signed blocks, so it can keep them or drop them, but it can't change them.
It also keeps the sealed copies of message keys that let a message open while its author is offline (more under storage).
Who runs it
The Capy team
What it keeps
Encrypted copies of rooms
What it sees
IP addresses, how much is stored, when
What it never sees
Messages, files, names
What it can change
Nothing: the blocks are signed
Secure rooms
Never given to it
Under the hood
- Clientblind-peering
- What it mirrorsAutobase · Hyperblobs · Hypercore
Storage and encryption
Every message has its own key.
Everything lives on the members' devices, in a folder the app keeps (a Corestore). Capy has no database anywhere. Photos, videos and files go in cores of their own, encrypted so that a blind peer can't read them.
Each message is sealed with a key of its own. That key is never in the room's log. It sits in a separate file on each device and travels only to members, over the room's encrypted connections.
So a message can open while its author is away, every device publishes a new prekey each day. The author seals each message's key to the other devices' prekeys, and blind peers keep those copies. Only the device that owns a prekey can open its copy.
Where your data lives
On the members' devices
What seals a message
A key of its own
Where that key is kept
A separate file on each device
Prekeys
New each day, destroyed after about 30 days
Photos, videos, files
Encrypted, in cores of their own
After Delete for everyone
Key dropped, file blocks cleared
- Delete for everyone is a signed record. Every device checks it, then drops the message's key and clears the files' blocks. What is left in the log is sealed noise.
- A prekey's private half is destroyed once its time is up (about 30 days, 60 at most), so even the copies a blind peer keeps open for nobody.
- “Free up space on this device” clears files here only, and they stay cleared after a restart. “Download again” brings them back from a member who has them.
Worth knowing
Delete can't reach what someone already kept. A member who read a message, photographed it or runs a modified app keeps what they have. What is guaranteed: nothing readable is left on honest devices, and nobody who joins later can read it.
Under the hood
- A key per messageAES-256-GCM
- PrekeysX25519 · sealed boxes
Secure rooms
Made for one call, then gone.
A secure room is for 2 to 8 people. It has its own folder and its own store, shared with nothing else in the app, and it keeps nothing but the chat: no files, transcripts, minutes, notes or AI.
Its key is made on the owner's device and kept in one file on the device that only your user account can read. It stays there through quits and restarts. The room is erased when the call ends (the default), when its time is up (a day by default, a week at most), when its owner erases it, or when you log out. Erasing purges every core of its store and removes the folder, key file included.
A secure room announces no topic, so it can't be found on the DHT. Members connect straight to each other by key. It is never on your account's list and never given to a blind peer. While one is open, Capy's windows are hidden from screenshots, recordings and screen sharing on macOS and Windows. Linux can't do that, and Capy says so.
People
2 to 8
Where the key lives
On the device, until erased
What it keeps
Only the chat
Blind peers
Never given a copy
Worth knowing
Someone in the room can still photograph the screen or run a modified Capy that saves what it sees. Until the room is erased, someone with your computer and your user account can read it, so full-disk encryption (FileVault, BitLocker) is worth having.
Under the hood
- The roomCorestore · Hyperswarm
- Hidden windowsElectron setContentProtection
Calls
Calls go between the people in them.
Your microphone is encoded as Opus audio and your camera as VP8 video. Both are cut into small packets and sent straight to the others in the call, over the same encrypted connections the room uses, as unordered messages that don't wait for one another.
The call's insights don't come from a server either. On your computer, a voice detector notices when you talk. Your device writes that, signed, into the room: in batches, every 5 seconds and when you leave. Every device then works out talk share and interruptions from the same records, so every screen shows the same numbers, also for someone who joined late.
Nobody hosts a call. Anyone in it can move the round along, mark a decision or edit the notes. The room's owner, or an admin, can mute or remove someone, and each app obeys only them.
Audio
Opus
Video
VP8
Sent to
The people in the call, encrypted
Talk share
Worked out on every device
Under the hood
- CodecsOpus · VP8 · WebCodecs
- TransportProtomux · unordered messages
AI on your computer
The AI runs here, not in the cloud.
Capy's AI is QVAC, Tether's on-device AI. You pick and download each model once in Settings → Notes & AI, and it comes over the peer-to-peer network, not from a website. Until you download one, those features stay off. The models then run in a second process on your computer.
Nobody transcribes you but you. With the transcript on, your computer turns your own voice into text with Whisper or Parakeet and signs each sentence into the room. The text is shared with the room: that is the transcript. The audio is not stored.
When a call ends, the last person to leave writes the minutes with a language model on their own computer, if they have a minutes model. The minutes appear in the room as a card anyone can open.
Stays on your computer
- The models, and everything they run on
- Your voice, as sound
- Catch me up, Prepare me and Search & ask answers
- Suggestions, until you click
Goes to the room
- The sentences of your own transcript, signed by you
- The minutes, when you are the last to leave
- What you choose to add: a decision, a task
From your voice to the minutes
Your microphone
Your voice is heard on your computer only.
Whisper or Parakeet
Turns your speech into text, on your computer.
Signed lines in the room
Each sentence is signed by you and joins the transcript everyone shares.
A language model
On the computer of the last person to leave, if it has a minutes model.
The minutes
They appear in the room as a card that opens the call's notes.
- Captions can be translated on your computer with Bergamot models.
- Search & ask finds words in transcripts, minutes and messages, and answers questions about past calls with EmbeddingGemma and the language model, citing the moments.
- Suggestions for decisions, tasks and the agenda item must quote a line of the transcript. Whatever can't is dropped, and nothing is added until a person clicks.
- What a model writes is marked as AI and kept apart from what people said.
Worth knowing
No AI service and no Capy server ever receives your voice or your text. A model can still be wrong: treat the AI as a note taker, not as a source of truth.
Under the hood
- WorkerBare
- Speech to text@qvac/asr-ggml · Whisper · Parakeet
- Language model@qvac/llm-llamacpp
- Models come fromQVAC registry · Hyperswarm
Updates
New versions come from other peers.
There is no update server. The Capy team publishes each version to the Pear network, and the app downloads it from other computers that already have it, the way a room replicates. Your app checks when it starts and again when a new version appears.
When the download is ready, a card in the sidebar offers Restart. It never restarts in the middle of a call. A production release needs a quorum of the team's signing keys, so a single key can't push an update on its own.
If a new version fails to start twice in a row, Capy puts the previous app back and doesn't try that version again until a newer one arrives. On a Mac outside Applications, Capy offers to move itself there so it can replace itself later.
Update server
None
Where it comes from
Other peers on the Pear network
Release signing
A quorum of the team's keys
If a version fails twice
The previous app comes back
An update's trip
The team publishes
A new version goes onto the Pear network, signed with the team's keys.
Peers pass it on
Computers that already have it share it with yours.
Your app checks and downloads
Capy first checks it can replace itself where it is.
You restart
Capy offers Restart. The previous app is kept until the new one has started.
Under the hood
- Updaterpear-runtime
Questions
Short answers.
Can the Capy team read my messages?
No. Messages go between the members' devices and are sealed with keys the team never has. The team runs a few always-on helpers: a blind relay and a blind peer, which see IP addresses and how much encrypted data moves, never what is in it, a seeder that keeps updates available, and an inbox for the bug reports you choose to send.
What happens if everyone in a room is offline?
The room waits. When someone comes back, messages sync. Because Capy keeps encrypted copies on its blind peer, you also get what you missed from it, even if nobody else is online. If you were away for more than 30 days, some messages can show “Waiting for this message” until a member who has the key is online.
Where is my data?
On the devices of the people in each room, in a folder the app keeps. An encrypted copy can also sit on the blind peer. A secure room is only on its members' devices, and is erased.
What if I lose my 24 words?
While one of your devices is still signed in, Settings shows the words again so you can write them down. If you lose the words and every device, nobody can recover your identity, not even us. That is the price of having no account to reset.
Does the AI send anything to a server?
No. Models run on your computer after you download them once, over the peer-to-peer network. The transcript of your voice goes to the room as text, signed by you, because that is what a shared transcript is. The audio is not stored. Capy makes no web requests at all.
Is it free? Why no servers of its own?
Yes, Capy is free, and in beta. Your devices do the work that servers do in other apps: they store the rooms, carry the calls and run the AI. The team only runs a few light helpers, such as the relay and the blind peer, which move and keep encrypted bytes.
What does a blind peer see?
Your device's IP address when it connects, how much encrypted data is stored, and when it is read or written. It can't see what is inside: messages, files, names.
Who can see my IP address?
The people you connect to in a room or a call, the network nodes that help you find them, and the relay and blind peer if they are used. That is how direct connections work. A VPN hides it if that matters to you.
Can someone in the room record it?
Yes. Anyone in a room sees what the room shows and can photograph or record the screen, or run a modified Capy that keeps what it receives. Capy's checks keep a modified app from harming other people's, but they can't stop a member from keeping what they saw. In a secure room, Capy's windows are hidden from screenshots and recordings on macOS and Windows, but a camera pointed at the screen still works.
Everything here runs on your devices. The team only runs a relay, a blind peer, a seeder for updates and an inbox for bug reports, and none of them can read your rooms.