Skip to content
Capy

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. The app makes no web requests, except one you control: your own device fetches a page to preview a link you type. A link you click in a message opens in your own web browser, as it would from any other app; Capy's windows don't load it.

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: a 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. Big files and a room's Files never take the relay: they wait for a direct link.

Who your device talks to

The people in the room, directly

Web requests the app makes

Only to preview a link you type

Encryption

End to end, on every link

If a direct link fails

A blind relay passes encrypted bytes

HyperDHTfind each other by topicYouThemDirect linkencrypted end to endBlind relaysees only encrypted bytes
The DHT only introduces devices. Messages and calls go on the direct link. The dashed path through the relay is the fallback.
  • Capy remembers the devices of the people in your rooms that it met recently, up to 8 per room and 32 in all, and lets go of any it hasn't seen for 14 days. It keeps reconnecting to them directly, without looking the room up again, so after a restart, or between two calls, it doesn't have to find them first. Who may connect doesn't change: every connection is checked as before. The list stays on your computer, and secure rooms are never on it.

Under the hood

  • RuntimePear · Bare
  • Finding peersHyperDHT · Hyperswarm
  • ConnectionsNoise · SecretStream
  • Relayblind-relay
  • Known devicesHyperswarm joinPeer
Pear docs: peer-to-peer, demystified

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. Capy keeps them on your device, in a file that only your user account can read, and doesn't send them 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 a message without your signature isn't shown as yours, 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, and keeps your rooms, secure rooms aside, for when you type them again. To clear this computer's copy, Log out and erase, at the bottom of Settings → Privacy & security, removes everything Capy kept for the account here, while your rooms stay with the other people in them and on your other devices.

Where the words live

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

  1. Your 24 words

    Kept on this device. Nothing to reset, nothing sent.

  2. Your identity key

    The same on every device where you type the words.

  3. A key for this device

    Made each time the app runs. Your identity vouches that it is yours.

  4. 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.

No device trusts a record just because it arrived. Before one counts, each device checks its shape, its size, its signature and whether its author may do that, such as removing someone or renaming the room. A record that fails is skipped the same way everywhere.

The room also holds up against a member who tries to break it. Each device limits how much it takes live from any one person, in the room and in its calls, and from people the room never let in, so nobody can flood the others' apps. If a member sends far more than anyone does, or something that can't be read, Capy stops taking in what they send on that computer and goes on with everyone else's; the room says so above the composer, and its owner or an admin can remove them from there. And nobody can make your computer lose anything else: Delete for everyone clears only that message's own files, and Remove from Files takes a file out of the list without touching anyone else's copy.

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

AnaBoYouAutobasemergesOne shared view
Each person writes only to their own log. Autobase gives every device the same merged view.

Joining a room

  1. An invite

    The room's creator makes a code. It can be shown as a QR code, drawn on the device.

  2. A request

    The newcomer pastes it, and their app asks to join.

  3. A member lets them in

    A member's app checks the invite and adds the newcomer as a writer.

  4. The history replicates

    The log copies to the new device and the room opens, messages included.

  • A room can have a picture. Its owner and its admins set, change or take it off from the room's menu in the sidebar, next to Rename room, and the history says who changed it. In a secure room only its owner can. A click on the picture in the room's header shows it large. Members on Capy 1.0.7 or earlier keep seeing the room's letter.
  • Pasting the invite of a room you're already in opens that room and says “You’re already in this room”, instead of joining it a second time.
  • While a join waits for a member to let you in, it shows as “Joining…” in the sidebar. Right-click it, or press Shift+F10 on it, and Cancel joining stops it and leaves nothing behind. After 10 minutes with nobody letting you in, the row says so.

Under the hood

  • Shared logAutobase
  • DatabaseHyperDB
  • Invitesblind-pairing
  • ChecksAutobase apply
Pear docs: build a multiwriter app with Autobase

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 a computer meant to stay online that keeps an encrypted copy of the room's data, chat files up to 25 MB included, and hands it to members when they come back. Bigger files and a room's Files are never given to it. 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 rooms, and chat files up to 25 MB

What it sees

IP addresses, how much is stored, when

What it can't read

Messages, files, names

What it can change

Nothing: the blocks are signed

Secure rooms

Never given to it

1 · Everyone is offlineAnaBoBlind peerlocked blocksofflineoffline2 · Ana opens CapyAnaBoBlind peerlocked blockssyncs what she missedoffline
The padlocks are the point: the blind peer stores and serves the blocks, and can't open them.

Under the hood

  • Clientblind-peering
  • What it mirrorsAutobase · Hyperblobs · Hypercore
Pear docs: blind peering

Photos and files

Drop it in the chat, and the room has it.

Photos, videos and files go into a room from the attach button, by dropping them on the window or by pasting. Photos show in the conversation and open in a viewer that zooms with the wheel, a pinch or its buttons: zoom out, zoom in, back to fit and actual size. Videos and sounds play where they are, and any file can be saved. The previews of photos and videos are made on your computer.

Up to 25 MB, a file in the chat travels like the room's messages. It is encrypted with the room's key and comes from whoever has it. When two devices can't connect directly, it can go through the team's blind relay, which passes only encrypted bytes, and the team's blind peer keeps an encrypted copy, so a member who was offline still gets it when nobody else is online. Neither of them can open it. Video and voice messages are held to the same 25 MB.

Two kinds of file don't work that way. A file above 25 MB is a big file, and every file in a room's Files follows the same rule as a big file: they go only on direct links, never through the team's helpers. So they come over only while you and someone who has the file are both online, at the same time. The table puts the three side by side.

A file coming in says how it's going, from what your computer measures: how much of it came, its speed, about how long is left once the speed is steady, and from how many computers. When it can't come yet, it says why, such as “Waiting for Ana to be online” or “Waiting for the message's key”, and “Couldn't download” comes with Try again. A message's photos, files and voice and video messages download while the message is on your screen.

Which way each file goes

  • Chat file, up to 25 MB

    Directly, device to device
    Yes
    Through the encrypted relay
    Yes
    Kept by the blind peer, encrypted
    Yes
    Reaches someone who was offline?
    Yes, from the blind peer, even with everyone else away
  • Chat file, over 25 MB

    Directly, device to device
    Yes
    Through the encrypted relay
    No
    Kept by the blind peer, encrypted
    No
    Reaches someone who was offline?
    No. Only while you and someone who has it are both online, connected directly
  • A room's Files, any size

    Directly, device to device
    Yes
    Through the encrypted relay
    No
    Kept by the blind peer, encrypted
    No
    Reaches someone who was offline?
    No. Only while you and someone who has it are both online, connected directly

Photos, videos, voice and video messages and documents sent in the chat are all chat files, sorted by their size. Secure rooms keep no files at all.

How files go in

Attach, drop or paste

Largest file in the chat

10 GB

Chat files are encrypted with

The room's key

Secure rooms

No files

  • “Delete for everyone” is for the author, and for the room's owner, its admins and its moderators. Every device running Capy then destroys the message's key and clears the file's blocks, so what is left can't be opened.
  • “Free up space on this device” clears a file here only, yours too, and it stays cleared after a restart. “Download again” brings it back from a member who has it.

Worth knowing

What someone saved outside Capy, a file they downloaded to a folder or a photo of the screen, stays with them. A member on Capy 1.0.7 or earlier sees chat files up to 25 MB as before, but for a message with a bigger file they see only a line with its name and size, saying Capy 1.0.8 or later downloads it. Someone on Capy 1.0.9 or earlier still sends files of up to 100 MB the old way, and you get them as before.

Under the hood

  • Files in the chatHyperblobs
  • Photo and video previewsbare-media
  • Copies for offline membersblind-peering
Pear docs: store and serve large media with Hyperblobs

Big files

Up to 10 GB, from one computer straight to another.

A file in the chat can be up to 10 GB. Above 25 MB it is a big file, and it never downloads by itself: its card shows its name, its size and Download. Before a download starts, Capy checks there is room for it on your disk. A big file has to be a file on your computer: one pasted from the clipboard can be 25 MB at most.

A big file goes only between two devices connected directly. It never goes through the team's blind relay, and the blind peer never keeps it. So it moves only while the person who sent it, or someone who has the whole file, is online and reachable directly. When nobody is, a download waits and the card says “Waiting for … to be online with you”, with the sender's name.

A download can be paused and resumed, keeping what already came, or cancelled, which clears what came. While it moves, and while you send one, the card shows how much is through, the speed and, once the speed is steady, about how long is left. A room's Files follow these same rules for every file, whatever its size: a file in them reaches you only while you and a member who has it are both online at the same time.

Largest file

10 GB

Above 25 MB, it goes

Only on direct links

Downloads by itself

Never

Kept by the blind peer

Never

Big files and a room's FilesAnaYouDirect link onlywhile someone who has it is onlineBlind relaynot for these filesBlind peernever keeps themWaiting for Ana to be online with youwhat the card says until a direct link is there
This drawing is only about big files and a room's Files. Chat files up to 25 MB can still use the relay and the blind peer.

A big file's trip

  1. Shared in the chat

    The file stays on the sender's computer. The room gets a card with its name and size.

  2. You press Download

    Nothing comes until you ask. Capy first checks your free space.

  3. A direct link

    It comes straight from a device that has it. With only a relay between you, it waits.

  4. Pause, resume or cancel

    Pausing keeps what came. Cancelling clears it.

Worth knowing

Direct only has a cost: the sender, or someone with the whole file, has to be online when you are, and your two networks have to reach each other without the relay, which some pairs of networks can't. A file that has to wait for people who are rarely online at the same time is better kept to 25 MB, the size the blind peer keeps for them.

Under the hood

  • Resumable downloadsHypercore · Hyperblobs
  • Direct linksHyperswarm · HyperDHT

A room's Files

The project's files, kept together.

Besides what's sent in the chat, a room has a Files tab: a tree of folders and files that the people in the room keep together. Anyone in the room can upload a file or a whole folder with its subfolders, make folders, rename and move things, and put a new version of a file over the old one.

Each member's device writes what they add into a drive of its own for that room, a Hyperdrive. The room's log holds signed records that place each file in the shared tree: where it goes, its size, a fingerprint of its content, who added it and when. Every device checks those records before it shows them, as it does with messages.

Nothing in Files downloads by itself. A file or a folder comes when you press Download, with pause, resume and cancel, and only over direct links, whatever its size: the team's relay never carries these files and the blind peer never keeps them. So a file moves only while you and someone who has it are both online, at the same time: if the person who added it is offline and nobody else has it, it waits until you're both online. Uploads and downloads show how far they are, the speed and, once it's steady, about how long is left.

Who adds files

Anyone in the room

Who removes from Files

Whoever added it, the owner or an admin

Through the team's helpers

Never, at any size

Secure rooms

No Files tab

Delete for everyone, in the chatIts key=Unreadableno key opens itThe key is destroyed on every device running CapyRemove from Filesdesignbrief.pdflogo.pngBothe copy Bo downloaded staysOut of Files for everyone; copies already downloaded stayRemove from this deviceYouAnaDownloadcleared here only, still in the room
None of the three reaches a copy someone saved outside Capy, and Remove from Files leaves the copies people already downloaded.
  • “Remove from this device” clears your copy here. The file stays in the room's Files, and Download brings it back from someone who has it.
  • “Remove from Files” takes the file out of the room's Files for everyone, and your computer drops its own copy and stops sharing it. People who already downloaded it keep their copy, which Capy lists for them under “Removed from Files · still on this computer”, with Free up space. Whoever added it can remove it, and so can the room's owner and its admins.
  • “Delete for everyone” is the chat's own: it destroys a message's key, so its sealed copies can't be opened.

Worth knowing

Remove from Files can't take back a copy someone already downloaded, in Capy or outside it: nobody can delete what is on someone else's computer. Someone on Capy 1.0.9 or earlier still clears their own copy when the removal reaches them, as those versions did. Put in Files what you are fine with the room keeping.

Under the hood

  • Each member's filesHyperdrive
  • The shared treeAutobase · HyperDB
Pear docs: a peer-to-peer filesystem with Hyperdrive

Link previews

The sender's device fetches the page, once.

When you type a link in the composer, Capy makes a preview card: the page's title, a short description, the site's name and a small picture. To make it, your computer fetches that page. The card shows in the composer with an ×, so you can drop it before you send.

The preview then travels inside your signed message. The other people in the room never fetch anything: their devices don't contact the website, and everyone sees the same card, members who were offline when you sent it included.

This is the one time Capy fetches a web page, and it happens in the app's background process: the app's windows still make no web requests. Capy fetches only http and https addresses, never one on your own network or computer, checks that again at every redirect (three at most), and stops after 5 seconds, 512 KB of page or 2 MB of picture. The picture is made into a small image on your device.

Who fetches the page

Only the sender's device, once

What the website sees

A visit from the sender's IP address

Who never contacts it

Everyone else in the room

Where to turn it off

Settings → Privacy & security

The websiteyour device fetches it, onceone visit, from your IP addressYouAnaBoexample.orgThe page's titlethe preview rides insideyour signed messageAna's and Bo's devices never contact the websiteWith previews off, nothing is fetched and the link gets no card
One visit to the website, from the sender's device. The card is part of the message, so it is the same everywhere.
  • Link previews are on until you turn them off in Settings → Privacy & security. Off, your device fetches nothing and a link gets no card.
  • A link in a message, and a card's picture, site and title, opens in your own web browser when you click it or press Enter on it, never inside Capy. Resting the mouse on it shows its full address first, and selecting text across it opens nothing. In a secure room links stay plain text, and Capy opens none while one is on screen.
  • A secure room never makes a preview.
  • Someone on Capy 1.0.7 or earlier sees the plain link.
  • After it's sent, whoever may delete the message (its author, the room's owner, an admin or a moderator) can take the card off with Remove preview, and every device running Capy then shows the message without it. Anyone else can Hide preview, on their own device only.

Worth knowing

The website sees a visit from your IP address when the preview is made, as it would if you opened the page yourself. The page is fetched while the link sits in the composer, before you send, so dropping the card with its × doesn't take that visit back. The card shows what the page said about itself at that moment, which can change later. If you'd rather no page is fetched, turn previews off. A link you click is opened by your browser, so that site sees what any visit from your browser tells it.

Under the hood

  • Fetching the pagebare-fetch
  • The pictureWebP

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 central database. Photos, videos and files sent in the chat go in cores of their own, encrypted with the room's key so that a blind peer can't read them. A room's Files go in each member's own drive, which the blind peer never gets.

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

SendingMessagesealedSealed messagein the room's logIts keyMembers' devicessent only over the room's encrypted connectionsDeleting for everyoneIts keydestroyed on every device=Unreadableno key opens it
The key and the message live in different places, so destroying the key is enough to make the message unreadable.
  • 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, copied it, photographed it or saved it with other software keeps what they have. What Capy does: once the delete reaches a member's Capy, nothing readable of the message is left in it, and people who join later can't 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, sealed with your system's keychain where there is one (the Keychain on a Mac, DPAPI on Windows, the secret service on Linux), so a copy of the file is no use outside your session. It stays there through quits and restarts. The room is erased for everyone when the call ends, so a call there is never started by someone alone: the call button and the lobby's Start call wait until another member is online, saying “Start the call when someone else is here”. Joining a call that is already on always works. If no call ends it, it is erased a day after it was made, a safety limit nobody sets: making a secure room asks only how many people it holds. Its owner can erase it any time, and logging out erases it on that device. 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 asks macOS and Windows to keep its windows out of screenshots, recordings and screen sharing, which some capture tools may not respect. Linux can't do that, and Capy says so. On a Mac, its folder is marked so Time Machine leaves it out of backups.

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

Erase time to pick

None: the call's end, or a day

Mac backups

Left out of Time Machine

Createdkey on the deviceCallchat, audio, videoErasedkey and folder removedkept through quits and restartsnothing leftEach device keeps the key in one fileNever announced on the DHT
The room is erased when the call ends. The other ways it ends are in the text.
  • If a sealed key file can't be opened, for example under another user or after the keychain was reset, Capy erases that room on this device and says so once.

Worth knowing

Someone in the room can still photograph the screen or save what they see with other software. 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. The Mac's mark is Time Machine's, which other backup tools may ignore, Windows and Linux have no such mark for one folder, and on a Linux with no keyring the key file stays unsealed, protected by your account's permissions.

Under the hood

  • The roomCorestore · Hyperswarm
  • Hidden windowsElectron setContentProtection
  • The key fileElectron safeStorage
  • Mac backupsTime Machine exclusion

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.

A call takes up to 16 people at once, and a secure room's call the 2 to 8 it was made for; a room itself can have more members. Each device seats people in the order it saw them join the call, keeps a seat until its person leaves, and exchanges the call's audio and video only with the people it seated. When a call is full, Join says “This call is full · 16 of 16”, and someone who joined at the same moment as the last seat is told “The call filled up just before you” and can join when someone leaves.

A call adapts to the link as it goes. Video, from a camera or a shared screen, starts at about half its rate and climbs while the link stays good, and backs off when it turns poor or frames keep getting lost. The sound waits a little longer for voices that arrive late, and eases back when they don't. While a call struggles, the AI that only follows it on your computer (the live summary, suggestions and caption translation) waits, so the call gets the computer first.

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.

The connection signal, the bars on the tiles and the card in the lobby and in the call's Insights, comes from what Capy really measures: the round trip, how long a small message takes to reach another device and come back, and loss, how many packets don't arrive. Every audio and video packet carries a number, so the device receiving them can tell which came, which were lost and which came late. A round trip on the network isn't the delay you hear in a call, so Capy doesn't show it as one: you see the bars, or Good, So-so or Poor with a plain line, such as “From a quick test, video may stutter. Voices should be fine.”

When someone else shares a screen or presents a PDF, it takes your stage, but nobody has to watch it: Minimize folds it into a chip in the call's header, with the page for a PDF, and Show brings it back. Minimize the same person a second time and what they share stays minimized for the rest of the call, which you can undo. On the canvas, Esc first stops following whoever leads it, then minimizes it too. Only your view changes: nothing about it is sent, and the person presenting isn't told.

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

Connection signal

Round trip and lost packets

A call's delay

Not shown as a number

People in a call

Up to 16 at once

Video's rate

Follows the link

AnaYouBoVoice detectorruns on each deviceaudio (Opus) · video (VP8)no server mixes the callTalk share is worked out on every screen from the same records
Each link carries encrypted audio and video straight between two devices. If a direct link fails, the blind relay passes the same encrypted bytes.

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 is over for you, your computer does the rest by itself, if it has a minutes model: first your own minutes, then the decisions, tasks and unanswered questions it found, for you to add with a click, then chapters for the transcript. It never does this while you're in another call, and if Capy closed first, it does it the next time it opens, for calls of the last two days. Your minutes stay on your computer and show first in the call's notes. If the room has no minutes of that call yet, yours are shared with it, so someone with no model, or on an older Capy, still has some to read, and Capy shows whose they are. The minutes and the suggestions each have a switch in Settings → Notes & AI.

Stays on your computer

  • The models, and everything they run on
  • Your voice, as sound
  • Catch me up, Prepare me and Search & ask answers
  • The transcript's chapters, and suggestions until you click

Goes to the room

  • The sentences of your own transcript, signed by you
  • Your minutes, when the room has none of that call yet
  • What you choose to add: a decision, a task

From your voice to the minutes

  1. Your microphone

    Your voice is heard on your computer only.

  2. Whisper or Parakeet

    Turns your speech into text, on your computer.

  3. Signed lines in the room

    Each sentence is signed by you and joins the transcript everyone shares.

  4. A language model

    On your computer, by itself, once the call is over for you, if you have a minutes model.

  5. The minutes

    Yours show first in the call's notes. If the room has none yet, yours are shared with it.

  • 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.
  • A call too long for the model on your computer to read at once is read in smaller parts, so it still gets its minutes. If even a part is too long, Capy says so in plain words.
  • What a model writes is marked as AI and kept apart from what people said.

Worth knowing

Capy doesn't send your voice or your text to any AI service, and the team's helpers only handle them encrypted. 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
QVAC, by Tether

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. When a new version turns up while it's open, Capy looks for it after a short random wait, a few minutes at most.

When the download is ready, a card in the sidebar offers Restart now. In a call it waits: the card offers to restart when the call ends, and restarts at once only if you pick Restart now anyway. A production release needs a quorum of the team's signing keys, so a single key can't push an update on its own.

On macOS and Linux, an update nobody restarts for installs itself. Once it has been ready for two hours of Capy running (time asleep doesn't count), Capy waits for a quiet moment: no call and none ringing, no secure room on screen, no file being sent or downloaded, nothing being recorded, and you away from the computer for three minutes or its window out of sight. Then the card counts down one minute, with Restart now and Not now. Not now puts it off for at least an hour, up to three times, and a call that starts stops the countdown. The next time Capy opens, it says it was updated while you were away. On Windows it never restarts by itself.

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.

Versions before 1.0.8 could wait up to an hour for that. Quitting and opening Capy again checks at once.

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

A new version shows up

Within minutes

From 1.0.7 or earlier

Up to an hour, or at the next launch

Restarts by itself

macOS and Linux, at a quiet moment

During a call

Never restarts by itself

An update's trip

  1. The team publishes

    A new version goes onto the Pear network, signed with the team's keys.

  2. Peers pass it on

    Computers that already have it share it with yours.

  3. Your app checks and downloads

    Capy first checks it can replace itself where it is.

  4. You restart, or it does

    Capy offers Restart now, and on macOS and Linux restarts by itself at a quiet moment if you leave it. The previous app is kept until the new one has started.

Under the hood

  • Updaterpear-runtime

When something breaks

Capy picks itself back up.

Capy runs as two parts on your computer: the window you see, and a background part that keeps your rooms and talks to other devices. An error no longer stops the background part: it's noted, and the rest goes on. If it stops anyway, Capy starts it again by itself, after 1, 5 and then 30 seconds, and the window says “Reconnecting…”, then “Capy reconnected”. After three tries in a row it stops and offers Restart.

The window looks after itself too. If it crashes, it loads again, up to three times in two minutes, and if it stops answering for 10 seconds, Capy asks whether to wait or load it again. A message Capy can't show reads “This message couldn't be shown” while the rest of the room draws as usual, and if your microphone, camera, screen share or sound stops in a call, Capy says so and how to start it again.

When the window loads again, what you were typing in a room comes back, and so does a message you sent while the background part was away, until the room shows it. In a secure room nothing is stored for that.

Errors are kept on your computer and go nowhere unless you send a report from Settings → Help & feedback, where you see exactly what goes first. In a report, each error says which version of Capy it happened in and the newest comes first, and the list on your computer starts over after an update. For a call that went badly, a report can also carry a second-by-second log of up to its last 15 minutes: whether the link was direct or through the relay, round trip, loss, jitter, sending rate, how busy the app was and which AI tasks were running, with no names, keys or addresses.

If the background part stops

Capy starts it again

If the window crashes

It loads again

A message it can't show

Says so; the rest draws

Errors

Kept here, sent only in a report you send

Worth knowing

Loading the window again ends a call you were in, so join it again. After three failed restarts in a row, Capy stops trying and waits for you. Your rooms and messages stay as they are either way.

Under the hood

  • Background partBare worker, started again by Electron
  • WindowElectron render-process-gone

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 helpers: a blind relay and a blind peer, which see IP addresses and how much encrypted data moves, not what is in it, a seeder that shares updates, 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. Capy also keeps encrypted copies on its blind peer, so you can 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. Big files and a room's Files stay only on members' devices, never on the blind peer.

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 comes with 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. None of it goes to the web: the only page Capy fetches is the one for the preview of a link you type.

Why no servers of its own?

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, the relay and blind peer if they are used, the website of a link you preview, when your device fetches it, and the website of a link you open, as with any visit from your browser. That is how direct connections work. A VPN can hide 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 keep what their computer received. Capy's checks keep one member from breaking the room or erasing what others have, but nothing can stop a member from keeping what they saw. In a secure room, Capy asks macOS and Windows to keep its windows out of screenshots and recordings, but some capture tools may not respect that, and a camera pointed at the screen still works.

Can the Capy team see my files?

No. Chat files up to 25 MB are encrypted with the room's key: the team's blind peer keeps a copy it can't open, and the relay passes only encrypted bytes. Big files and a room's Files never reach the team's helpers at all. What the helpers see is IP addresses and how much encrypted data moves, and when.

Why does a file say “Waiting for … to be online with you”?

Big files (over 25 MB) and every file in a room's Files go only between two devices connected directly, never through the team's relay or blind peer. The card says this while nobody who has the file is online and directly reachable: the person who shared it may be offline, or your two networks may only reach each other through the relay. It moves once a direct link is there. A chat file up to 25 MB can also come through the relay or from the blind peer, so it says “Waiting for … to be online” only while nobody who has it, the blind peer included, is connected.

Is there a size limit for files?

A file in the chat can be up to 10 GB. Up to 25 MB it travels like a message, through the relay or from the blind peer when needed. Above that it downloads only when you press Download, only over a direct link, and Capy checks your free space first. A video or voice message can be up to 25 MB, and so can a file pasted from the clipboard: a bigger one has to be a file on your computer. Secure rooms keep no files.

What happens when I remove a file?

It depends on which remove. Delete for everyone, in the chat, destroys the message's key on every device running Capy and clears its files there, so what is left can't be opened. Remove from Files takes a file out of the room's Files for everyone and stops your computer sharing it, but people who already downloaded it keep their copy. Remove from this device, in Files, or Free up space on this device, in the chat, clears only your copy, and Download, or Download again in the chat, brings it back. None of them reaches a copy someone saved outside Capy.

Will someone on an older version see my files and pictures?

Photos, videos and files up to 25 MB, yes, as before. On Capy 1.0.7 or earlier, a message with a file over 25 MB shows only a line with the file's name and size, a room's picture shows as its letter, a link preview shows as the plain link, and there is no Files tab. On 1.0.8 and 1.0.9, a file over 25 MB comes as a big file, with its Download button.

Does Capy connect to websites?

Only to make a link preview, and only on the sender's device: when you type a link with previews on, your computer fetches that page once, before you send it. Models, updates and rooms come over the peer-to-peer network, and the app's windows make no web requests. A link you click in a message, and the Terms of Use and the Privacy Policy, open in your own browser.

What happens when I click a link in a message?

It opens in your computer's web browser, never inside Capy. Rest the mouse on it first to see its full address. The site then sees what any visit from your browser tells it, and nothing about your room. In a secure room links are plain text and nothing opens.

Does a link preview tell the website who I am?

The website sees one visit from your IP address when the preview is made, as if you had opened the page, and that it comes from Capy. Capy has no account to tell it about and doesn't say which room the link is for. The other people in the room never contact the site: the preview travels inside your message.

Can I turn link previews off?

Yes, in Settings → Privacy & security. With them off, your device fetches nothing and links get no card, though a click still opens them in your browser. You can also drop one preview with its × before you send. A secure room never makes previews.

Who can change a room's picture?

The room's owner and its admins, from the room's menu in the sidebar. The history says who changed it. In a secure room, only its owner.

My join is still waiting. Can I cancel it?

Yes. A join waiting for a member to let you in shows as “Joining…” in the sidebar: right-click it, or press Shift+F10 on it, and pick Cancel joining. Nothing is left behind. If you paste the invite of a room you're already in, Capy opens that room instead.

Can I choose when a secure room is erased?

No, there is nothing to set. It is erased for everyone when its call ends, or a day after it was made if no call happens. Its owner can erase it sooner, and logging out erases it on that device.

Why can't I start a call in my secure room?

A secure room is erased when its call ends, so a call started alone would erase it by accident. The call button waits until another member is online, saying “Start the call when someone else is here”. A call that is already on can always be joined, and the room is erased when the last one in it hangs up.

Does a secure room end up in my backups?

On a Mac, Capy marks each secure room's folder so Time Machine leaves it out. Other backup tools may ignore that mark. Windows and Linux have no such mark for one folder, so a backup of your user folder taken while the room lasts can hold it. Its key file is sealed with your system's keychain where there is one, so a copy of the file is no use outside your session.

What does the connection signal measure?

Two things: the round trip, how long a small message takes to reach the other device and come back, and how many packets get lost on the way. Every audio and video packet is numbered, so the receiving device can count the ones that don't arrive. Capy shows Good, So-so or Poor, and doesn't present the round trip as the call's delay.

How many people can be in a call?

Up to 16 at once. A room can have more members than that: while its call is full they still read and write in the room, Join says the call is full, and they can join when someone leaves. A secure room's call holds the 2 to 8 it was made for.

Do I have to watch what someone shares in a call?

No. A shared screen or a presented PDF takes your stage, but Minimize folds it into a chip in the call's header, and Show brings it back whenever you want. Minimize the same person twice and what they share stays minimized for the rest of the call. Only your own view changes: nothing is sent, and the person sharing isn't told.

Will Capy restart by itself to update?

On macOS and Linux, if you leave an update waiting: two hours after it's ready, at a quiet moment while you're away, with a one-minute countdown you can put off up to three times. Never during a call, a transfer or a recording, or with a secure room on screen. On Windows you restart it yourself.

What happens if Capy stops working?

Its background part starts again by itself, and the window says “Reconnecting…”, then “Capy reconnected”; after three tries in a row it offers Restart. A window that crashes loads again by itself, and one that stops answering asks whether to wait or reload. Your rooms and messages stay as they are and, outside secure rooms, what you were typing comes back, but a call you were in ends: join it again.

Privacy PolicyWhat Capy doesn't collect, and what others can see.Download CapyIn beta, for macOS. Test builds for Windows and Linux.Pear documentationThe peer-to-peer stack Capy is built on.

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.