← Все проекты

Capsule

Асинхронный голосовой мессенджер со сквозным шифрованием. Вы говорите — собеседник читает одну строку.

Год
2026
Статус
бета
Роль
Один разработчик — Android-клиент, сервер, протокол
Стек
Kotlin · Rust ↔ Kotlin (uniffi) · MLS (RFC 9420) · SQLCipher · Go · PostgreSQL · protobuf · WebSocket · On-device ML
Задача
Голосовое общение без давления: отправитель говорит сколько нужно, получатель сразу видит суть и слушает, когда удобно.
Статус
Работает полноценно, закрытая бета со знакомыми и друзьями.
Что сделано
Android-клиент, сервер на Go + PostgreSQL, собственная спецификация протокола.

Идея

Голосовые сообщения удобно записывать и неудобно слушать. Capsule расшифровывает речь и выделяет суть прямо на телефоне. Получатель читает одну строку, а аудио слушает позже, если нужно.

Путь голосового сообщения
  1. ГолосЗапись 0:42
  2. РасшифровкаРечь в текст на устройстве
  3. СутьОдна строка, тоже на устройстве
  4. ШифрованиеДо отправки, ключи только у участников
  5. СерверХранит и доставляет, но прочитать не может
  6. ПолучательРасшифровывает и читает одну строку

Сервер не должен читать переписку

Проблема
Мессенджеру нужен сервер для доставки, но любые данные на сервере могут утечь.
Решение
Сквозное шифрование по протоколу MLS: Rust-библиотека mls-rs подключена к Android через uniffi.

Сервер видит только зашифрованные данные, упорядочивает изменения группы, удаляет уже доставленные сообщения и шлёт пуши без содержимого. Локальная база на телефоне тоже зашифрована, через SQLCipher.

Расшифровка речи без облака

Проблема
Чтобы выделить суть голосового, нужно распознать речь. Отправлять аудио на внешний сервис значит сломать сквозное шифрование.
Решение
Распознавание и выделение сути работают на устройстве.

Аудио и текст не покидают телефон. Сейчас я улучшаю модель выделения сути.