EchoFog
v0.2.0 Own screen capture up to 144 fps, anonymous mode, spacesСвой захват экрана до 144 кадров, анонимный режим, пространства

A private network with no company in the middle Своя сеть, в которой нет компании посередине

EchoFog is a peer-to-peer VPN, an end-to-end encrypted messenger and group calls in one open-source app. Exits are other people's computers and VPSes, relays are the participants themselves, and there is no central server in between.

EchoFog — это P2P-VPN, мессенджер со сквозным шифрованием и групповые звонки в одной открытой программе. Выходы — компьютеры и VPS обычных людей, ретрансляторы — сами участники, а центрального сервера посередине нет.

Open source, MPL-2.0 · Windows and Linux · experimental, no independent audit yetОткрытый код, MPL-2.0 · Windows и Linux · экспериментальная версия, независимого аудита пока не было

VPNVPN

Go online through people, not a companyВыход в интернет через людей, а не через компанию

Pick an exit by ping, price, speed and which of your sites open through it, or let automatic mode keep testing candidates in the background and move you when one slows down. The rating is computed on your computer; there is no shared rating server.

Выбирайте выход по пингу, цене, скорости и тому, какие из ваших сайтов через него открываются, или оставьте автоматический режим: он фоном проверяет кандидатов и переключает, когда выход замедлился. Рейтинг считается у вас, общего сервера рейтингов нет.

  • One app or the whole computer: a local SOCKS5 proxy, or all traffic through the exit with a kill switch.
  • Одна программа или весь компьютер: локальный SOCKS5-прокси или весь трафик через выход, с kill switch.
  • Free or paid exits: paid ones are paid per gigabyte in TON, in small chunks, straight to their owner (testnet for now).
  • Бесплатные и платные выходы: платные оплачиваются за гигабайт в TON, маленькими порциями, прямо владельцу (пока в тестовой сети).
  • Share your own connection with everyone, or only with people who have your link.
  • Раздавайте своё подключение всем или только тем, у кого есть ваша ссылка.
Choosing an exit by ping, price, speed and sites

CamouflageМаскировка

On the wire it looks like a visit to a websiteСо стороны это похоже на заход на обычный сайт

A connection to a node in another country looks like HTTP/3 to the website the node stands next to: a Chrome-like handshake, with the node's secret check hidden inside it (QUIC-REALITY). Someone who probes the node without the secret gets the real site. If QUIC is cut, the app falls back to TCP that also looks like HTTPS, and it splits long TCP flows over short connections.

Соединение с нодой в другой стране выглядит как HTTP/3 к сайту, рядом с которым эта нода стоит: рукопожатие как у Chrome, а проверка секрета ноды спрятана внутри него (QUIC-REALITY). Кто постучится к ноде без секрета, получит настоящий сайт. Если QUIC не проходит, приложение переходит на TCP, который тоже выглядит как HTTPS, и делит длинные TCP-потоки на короткие соединения.

Measured on our own testbed with a censor we wrote, not yet against a real national firewall at scale.

Измерено на нашем стенде с цензором, которого мы написали сами; против настоящего национального файрвола в больших масштабах пока не проверяли.

Chats and spacesЧаты и пространства

A community server, without the serverСервер сообщества, только без сервера

Direct chats and groups run on a log of signed events that every member keeps. Replies, threads, reactions, pins and edits sync between devices with nobody in the middle, and messages wait for people who are offline on the relays they choose.

Личные чаты и группы работают на журнале подписанных событий, который хранит каждый участник. Ответы, ветки, реакции, закрепы и правки синхронизируются между устройствами без посредника, а сообщения ждут тех, кто не в сети, на выбранных ими релеях.

  • Spaces with text channels, categories and voice rooms that never ring.
  • Пространства с текстовыми каналами, категориями и голосовыми комнатами, которые никому не звонят.
  • Roles and rights per channel, announcement channels, slow mode, invitations, join requests, a moderation log.
  • Роли и права по каналам, каналы объявлений, медленный режим, приглашения, заявки, журнал модерации.
  • Files go straight from the sender, pictures arrive with a preview.
  • Файлы идут прямо от отправителя, картинки приходят с превью.
A space with text channels and a voice room

Calls and streamsЗвонки и трансляции

Stream to many from your own uploadТрансляция на многих со своего канала

Group calls and screen sharing travel over relay trees built from the participants' measured upload, so one person can stream to many without a media server. Media is end-to-end encrypted: relays forward what they cannot read.

Групповые звонки и показ экрана идут по деревьям ретрансляции, собранным из исходящих каналов участников, поэтому один человек может транслировать многим без медиасервера. Медиа зашифровано сквозным ключом: ретрансляторы пересылают то, что не могут прочитать.

  • Up to 4K at 60 fps, and 1080p or 1440p at 120 and 144 fps.
  • До 4K на 60 кадрах, а 1080p и 1440p — на 120 и 144 кадрах.
  • On Windows the app captures the screen itself, on the graphics card, with the computer's sound but not the call's.
  • На Windows приложение само захватывает экран на видеокарте, со звуком компьютера, но без звука звонка.
  • Lost packets are rebuilt from parity or resent by the neighbour in the tree, not by the person streaming.
  • Потерянные пакеты восстанавливаются по избыточности или переотправляются соседом по дереву, а не тем, кто транслирует.
Watching a shared screen during a call

When a direct link failsКогда напрямую не выходит

It tells you why, and what helpsПриложение скажет почему и что поможет

Most people sit behind their provider's own NAT, and two of them often cannot reach each other directly. Then the call goes through a relay, and the app says so: why, what would help (a public IP from the provider, a forwarded port), and which relays the call could use, your own one by link included.

Большинство людей сидят за NAT своего провайдера, и двое таких часто не могут соединиться напрямую. Тогда звонок идёт через релей, и приложение это показывает: почему так вышло, что поможет (белый IP у провайдера, проброшенный порт) и через какие релеи можно пустить звонок, в том числе через свой по ссылке.

Why a call goes through a relay, and the relays to choose from

Your addressВаш адрес

You decide who sees your IPВы решаете, кто видит ваш IP

Where the internet is censored, the app joins the network through a few camouflaged guard servers instead of connecting to everyone. Anonymous mode goes further: through Tor nobody in the network sees your address, through your own relay only that relay does.

Там, где интернет цензурируют, приложение входит в сеть через нескольких замаскированных охранников, а не подключается ко всем подряд. Анонимный режим идёт дальше: через Tor ваш адрес не видит никто в сети, через свой релей — только он.

  • Hidden nodes answer only the people with their link, and other nodes do not pass their address on.
  • Скрытые ноды отвечают только тем, у кого есть их ссылка, и другие ноды не передают их адрес дальше.
  • Tor or SOCKS5 for the app's own traffic, and calls set to go only through relays.
  • Tor или SOCKS5 для собственного трафика приложения, а звонки можно пустить только через релеи.
Anonymous mode and joining the network through guards

How it worksКак устроено

The users are the networkСеть — это сами пользователи

No central serverНет центрального сервера

Nodes find each other through a Kademlia DHT. A few bootstrap nodes help with the very first connection; after that the network does not need them.

Ноды находят друг друга через DHT Kademlia. Несколько стартовых нод помогают только с самым первым подключением, дальше сеть без них обходится.

Everyone can carry trafficТрафик несут все

Exits, relays and stream trees are other users' computers and VPSes. Each node decides what it shares and with whom.

Выходы, релеи и деревья трансляций — компьютеры и VPS других пользователей. Каждая нода сама решает, что и кому раздаёт.

Payments without accountsОплата без аккаунтов

Paid exits are paid in TON from the built-in wallet, in small chunks as you use them. No accounts and no cards. Testnet for now.

Платные выходы оплачиваются в TON из встроенного кошелька маленькими порциями по мере расхода. Без аккаунтов и карт. Пока в тестовой сети.

Open and in GoОткрыто и на Go

The core and the node are Go, the desktop app is Wails and Svelte, all in one repository under MPL-2.0.

Ядро и нода написаны на Go, десктоп — на Wails и Svelte, всё в одном репозитории под MPL-2.0.

Run a nodeСвоя нода

Your own exit on a $5 VPSСвой выход на VPS за $5

The node is a ready image for amd64 and arm64. Run it public, free or with your own price per gigabyte, or hidden, so that only friends with your invitation link can use it and nobody else can tell it is there.

Нода — это готовый образ для amd64 и arm64. Запустите её публичной, бесплатно или со своей ценой за гигабайт, или скрытой: тогда ею пользуются только друзья со ссылкой-приглашением, а остальным не видно, что она вообще есть.

Documentation →Документация →

# in deploy/ of the repository# в папке deploy/ репозитория
cp .env.example .env
docker compose pull
docker compose up -d
docker compose logs -f   # the invitation link# ссылка-приглашение

ghcr.io/admiralcore/echofog-node

Honest statusЧестно о статусе

EchoFog is experimental. There has been no independent security audit, and the camouflage has been tested on our own testbed, not against a real national firewall at scale. Please don't rely on it where your safety depends on it.

EchoFog — экспериментальная программа. Независимого аудита безопасности не было, а маскировку проверяли на собственном стенде, не против настоящего национального файрвола в больших масштабах. Не полагайтесь на неё там, где от этого зависит ваша безопасность.

Reports from real networks help most, whether it works there or not: open an issue.

Больше всего помогают отчёты из настоящих сетей — работает там или нет: напишите в issues.

DownloadСкачать

Get EchoFogУстановить EchoFog

All files of every release are on GitHub, with a SHA256SUMS file to check them.

Все файлы каждого релиза лежат на GitHub вместе с файлом SHA256SUMS для проверки.

Windows

The desktop app: VPN, chats and calls, with the app's own screen capture.

Приложение: VPN, чаты и звонки, со своим захватом экрана.

EchoFog-…-windows-amd64.exe Latest releaseПоследний релиз

Linux

The same desktop app for Linux (WebKitGTK 4.1).

То же приложение для Linux (WebKitGTK 4.1).

EchoFog-…-linux-amd64 Latest releaseПоследний релиз

NodeНода

The headless node for a VPS or a home server: a binary for Linux and Windows, or the Docker image.

Нода без окна для VPS или домашнего сервера: файл для Linux и Windows или образ Docker.

echofog-node-…-linux-amd64 Latest releaseПоследний релиз