mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-11 01:57:20 +00:00
1298 lines
104 KiB
HTML
1298 lines
104 KiB
HTML
|
|
<!DOCTYPE html>
|
|
<html lang="en"
|
|
|
|
|
|
dir="ltr"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<script>if (localStorage.getItem('theme') === 'dark' || (!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: dark)').matches)) document.documentElement.classList.add('dark')</script>
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title></title>
|
|
<meta name="Content-Type" content="text/html;charset=utf-8"/>
|
|
|
|
<link rel="icon" type="image/png" sizes="96x96" href="/img/favicon.ico"/>
|
|
<meta name="theme-color" content="#ffffff">
|
|
<link href="/css/tailwind.css" rel="stylesheet"/>
|
|
<link id="prism-theme" rel="stylesheet" href="/css/prism-light.min.css"/>
|
|
<link href="/css/style.css" rel="stylesheet"/>
|
|
<link rel="stylesheet" href="/css/doc.css"/>
|
|
<link rel="stylesheet" href="/css/design3-nav.css">
|
|
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
|
</head>
|
|
|
|
<body class="bg-white dark:bg-[#000832]">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header id="navbar">
|
|
<a href="/" class="logo logo-light ltr:mr-auto rtl:ml-auto"><img src="/img/new/logo-light.png" alt="logo"></a>
|
|
<a href="/" class="logo logo-dark ltr:mr-auto rtl:ml-auto"><img src="/img/new/logo-dark.png" alt="logo"></a>
|
|
|
|
<nav id="menu">
|
|
<ul>
|
|
<li class="nav-link ">
|
|
<a href="/">
|
|
<span class="nav-link-text">Home</span>
|
|
</a>
|
|
</li>
|
|
|
|
<hr>
|
|
|
|
<li class="nav-link ">
|
|
<a href="/directory/">
|
|
<span class="nav-link-text">Directory</span>
|
|
</a>
|
|
</li>
|
|
|
|
<!-- <hr>
|
|
|
|
<li class="nav-link send-file ">
|
|
<a href="/file/">
|
|
<span class="nav-link-text">Send file</span>
|
|
</a>
|
|
</li>
|
|
|
|
<hr> -->
|
|
|
|
<li class="nav-link">
|
|
<a href="javascript:void(0);">
|
|
<span class="">Guide</span>
|
|
<span href="" id="btn-mobile">
|
|
<svg viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.50447 0.902966C1.21571 0.627397 0.747525 0.627397 0.458761 0.902966C0.169996 1.17853 0.169996 1.62532 0.458761 1.90089L4.21933 5.48961C4.25543 5.52406 4.29433 5.5542 4.33533 5.58003C4.62234 5.76088 5.01237 5.73074 5.26504 5.48961L9.02561 1.90089C9.31438 1.62532 9.31438 1.17853 9.02561 0.902966C8.73685 0.627397 8.26867 0.627397 7.97991 0.902966L4.74219 3.99273L1.50447 0.902966Z"/>
|
|
</svg>
|
|
</span>
|
|
</a>
|
|
|
|
<ul class="sub-menu">
|
|
|
|
<li><a href="/docs/guide/readme.html" class="">Quick start</a></li>
|
|
|
|
<li><a href="/docs/guide/send-messages.html" class="">Sending messages</a></li>
|
|
|
|
<li><a href="/docs/guide/secret-groups.html" class="">Secret groups</a></li>
|
|
|
|
<li><a href="/docs/guide/chat-profiles.html" class="">Chat profiles</a></li>
|
|
|
|
<li><a href="/docs/guide/managing-data.html" class="">Managing data</a></li>
|
|
|
|
<li><a href="/docs/guide/audio-video-calls.html" class="">Audio & video Calls</a></li>
|
|
|
|
<li><a href="/docs/guide/privacy-security.html" class="">Privacy & security</a></li>
|
|
|
|
<li><a href="/docs/guide/app-settings.html" class="">App settings</a></li>
|
|
|
|
<li><a href="/docs/guide/making-connections.html" class="">Making connections</a></li>
|
|
|
|
</ul>
|
|
</li>
|
|
|
|
<hr>
|
|
|
|
<li class="nav-link">
|
|
<a href="javascript:void(0);">
|
|
<span class="">Reference</span>
|
|
<span href="" id="btn-mobile">
|
|
<svg viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.50447 0.902966C1.21571 0.627397 0.747525 0.627397 0.458761 0.902966C0.169996 1.17853 0.169996 1.62532 0.458761 1.90089L4.21933 5.48961C4.25543 5.52406 4.29433 5.5542 4.33533 5.58003C4.62234 5.76088 5.01237 5.73074 5.26504 5.48961L9.02561 1.90089C9.31438 1.62532 9.31438 1.17853 9.02561 0.902966C8.73685 0.627397 8.26867 0.627397 7.97991 0.902966L4.74219 3.99273L1.50447 0.902966Z"/>
|
|
</svg>
|
|
</span>
|
|
</a>
|
|
|
|
<ul class="sub-menu">
|
|
<li><a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md"
|
|
target="_blank">Whitepaper
|
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a></li>
|
|
<li><a href="/privacy">Privacy Policy</a></li>
|
|
<li><a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md"
|
|
target="_blank">SMP protocol
|
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a></li>
|
|
<li><a href="/docs/protocol/simplex-chat.html">Chat protocol</a></li>
|
|
<li><a href="/docs/glossary.html">Glossary</a></li>
|
|
|
|
<hr>
|
|
|
|
|
|
<li><a href="/docs/simplex.html" class=" lg:px-[20px] inline-block whitespace-nowrap">SimpleX network</a></li>
|
|
|
|
<li><a href="/docs/business.html" class=" lg:px-[20px] inline-block whitespace-nowrap">SimpleX for business</a></li>
|
|
|
|
<li><a href="/docs/directory.html" class=" lg:px-[20px] inline-block whitespace-nowrap">SimpleX Directory</a></li>
|
|
|
|
<li><a href="/docs/android.html" class=" lg:px-[20px] inline-block whitespace-nowrap">Accessing Android files</a></li>
|
|
|
|
<li><a href="/docs/server.html" class=" lg:px-[20px] inline-block whitespace-nowrap">Host SMP Server</a></li>
|
|
|
|
<li><a href="/docs/xftp-server.html" class=" lg:px-[20px] inline-block whitespace-nowrap">Host XFTP Server</a></li>
|
|
|
|
<li><a href="/docs/webrtc.html" class=" lg:px-[20px] inline-block whitespace-nowrap">WebRTC servers</a></li>
|
|
|
|
<li><a href="/downloads/" class=" lg:px-[20px] inline-block whitespace-nowrap">Downloads</a></li>
|
|
|
|
<li><a href="/reproduce/" class=" lg:px-[20px] inline-block whitespace-nowrap">Verify & reproduce builds</a></li>
|
|
|
|
<li><a href="/transparency/" class=" lg:px-[20px] inline-block whitespace-nowrap">Transparency</a></li>
|
|
|
|
<li><a href="/security/" class=" lg:px-[20px] inline-block whitespace-nowrap">Security</a></li>
|
|
|
|
<li><a href="/faq/" class=" lg:px-[20px] inline-block whitespace-nowrap">FAQ</a></li>
|
|
|
|
|
|
<hr>
|
|
|
|
<li><a href="/docs/translations.html"
|
|
>Translate SimpleX Chat
|
|
</a></li>
|
|
<li><a href="/docs/android.html"
|
|
>Accessing Android files
|
|
</a></li>
|
|
<li><a href="https://github.com/simplex-chat/simplex-chat/blob/stable/apps/simplex-bot-advanced/Main.hs"
|
|
target="_blank">Chat bot example
|
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a></li>
|
|
<li><a href="https://github.com/simplex-chat/simplex-chat/tree/stable/packages/simplex-chat-client/typescript"
|
|
target="_blank">TypeScript SDK
|
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a></li>
|
|
<li><a href="/docs/cli.html">Terminal CLI</a></li>
|
|
<li><a href="https://github.com/simplex-chat/simplexmq"
|
|
target="_blank">SimpleXMQ
|
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<hr>
|
|
|
|
<li class="nav-link ">
|
|
<a href="/blog">
|
|
<span class="nav-link-text">Blog</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
|
|
<div class="right-links">
|
|
|
|
<a class="box-btn token md:hidden" href="/donate">
|
|
Donate
|
|
</a>
|
|
|
|
<button href="#" class="theme-switch-btn">
|
|
<svg class="sun" width="469" height="469" viewBox="0 0 469 469" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M225.768 1.44594C220.301 3.84594 214.701 10.6459 213.768 15.9793C213.234 18.3793 213.101 31.7126 213.368 45.7126L213.768 71.1793L217.634 76.1126C226.701 88.1126 242.968 87.5793 252.301 75.0459C254.968 71.5793 255.101 69.5793 255.101 42.2459C255.101 14.9126 254.968 12.9126 252.301 9.44594C250.834 7.44594 248.034 4.51261 246.168 3.17928C241.768 -0.154057 231.101 -1.08739 225.768 1.44594Z"/>
|
|
<path d="M72.9687 65.3128C63.7687 71.5794 60.1687 81.4461 63.7687 91.1794C65.502 95.4461 98.702 129.446 104.035 132.379C106.035 133.446 110.569 134.246 114.035 134.246C126.035 134.246 134.435 125.846 134.435 113.846C134.435 110.379 133.635 105.846 132.569 103.846C129.635 98.5128 95.6353 65.3128 91.3687 63.5794C85.102 61.3128 77.902 61.9794 72.9687 65.3128Z"/>
|
|
<path d="M377.102 63.7128C373.102 65.3128 338.969 98.7794 336.302 103.846C335.236 105.846 334.436 110.379 334.436 113.846C334.436 125.846 342.836 134.246 354.836 134.246C358.302 134.246 362.836 133.446 364.836 132.379C370.169 129.446 403.369 95.4461 405.102 91.1794C408.702 81.4461 405.102 71.5794 395.902 65.3128C391.102 61.9794 383.102 61.3128 377.102 63.7128Z"/>
|
|
<path d="M211.635 108.246C185.635 113.179 163.502 125.046 144.302 144.112C117.902 170.512 104.968 203.579 106.835 240.246C109.768 297.712 149.102 344.912 205.902 359.179C218.568 362.379 250.302 362.379 262.968 359.179C310.435 347.312 345.768 312.646 358.702 265.046C362.435 251.446 362.835 219.446 359.368 205.712C347.368 158.112 312.302 122.379 265.235 110.112C251.768 106.512 225.502 105.579 211.635 108.246Z"/>
|
|
<path d="M12.4349 214.779C-0.498477 220.379 -4.09848 237.579 5.23486 248.246C11.2349 255.046 15.6349 255.846 45.3682 255.313C74.0349 254.913 75.1015 254.646 81.6349 245.713C85.9015 239.979 85.5015 228.113 80.8349 221.979C74.4349 213.713 71.2349 212.913 42.1682 212.913C23.7682 213.046 15.2349 213.579 12.4349 214.779Z"/>
|
|
<path d="M396.035 215.179C393.635 216.379 390.035 219.445 388.035 221.979C383.368 228.112 382.968 239.979 387.235 245.712C394.035 254.779 394.301 254.912 426.435 254.912C458.568 254.912 458.835 254.779 465.635 245.712C469.501 240.512 469.501 227.979 465.635 222.779C458.968 213.845 458.301 213.579 428.035 213.179C404.435 212.912 399.768 213.179 396.035 215.179Z"/>
|
|
<path d="M103.101 336.779C96.7013 340.779 65.368 373.179 63.768 377.313C57.368 394.513 74.168 411.313 91.368 404.913C95.6347 403.179 129.635 369.979 132.568 364.646C135.368 359.446 134.968 349.046 131.768 343.846C126.168 334.646 112.035 331.179 103.101 336.779Z"/>
|
|
<path d="M344.035 336.912C341.635 338.379 338.569 341.445 337.102 343.845C333.902 349.045 333.502 359.445 336.302 364.645C339.235 369.979 373.235 403.179 377.502 404.912C387.235 408.512 397.102 404.912 403.369 395.712C406.702 390.779 407.369 383.579 405.102 377.312C403.369 373.045 370.169 339.045 364.835 336.112C359.635 333.312 349.235 333.712 344.035 336.912Z"/>
|
|
<path d="M225.368 385.712C222.968 387.046 219.368 390.112 217.368 392.646L213.768 397.312V426.379C213.768 458.246 213.901 458.779 222.968 465.446C228.168 469.312 240.701 469.312 245.901 465.446C254.834 458.779 255.101 457.979 255.501 428.246C256.034 397.579 255.234 394.379 246.834 387.979C241.101 383.579 231.634 382.512 225.368 385.712Z"/>
|
|
</svg>
|
|
|
|
<svg class="moon" width="469" height="469" viewBox="5 5 20 23" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M10.895 7.574c0 7.55 5.179 13.67 11.567 13.67 1.588 0 3.101-0.38 4.479-1.063-1.695 4.46-5.996 7.636-11.051 7.636-6.533 0-11.83-5.297-11.83-11.83 0-4.82 2.888-8.959 7.023-10.803-0.116 0.778-0.188 1.573-0.188 2.39z"></path>
|
|
</svg>
|
|
</button>
|
|
|
|
|
|
<div class="nav-link flag-container">
|
|
<a href="javascript:void(0);">
|
|
|
|
|
|
<p style="text-align:center;">en</p>
|
|
<svg viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.50447 0.902966C1.21571 0.627397 0.747525 0.627397 0.458761 0.902966C0.169996 1.17853 0.169996 1.62532 0.458761 1.90089L4.21933 5.48961C4.25543 5.52406 4.29433 5.5542 4.33533 5.58003C4.62234 5.76088 5.01237 5.73074 5.26504 5.48961L9.02561 1.90089C9.31438 1.62532 9.31438 1.17853 9.02561 0.902966C8.73685 0.627397 8.26867 0.627397 7.97991 0.902966L4.74219 3.99273L1.50447 0.902966Z"/>
|
|
</svg>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
<ul class="sub-menu">
|
|
|
|
|
|
|
|
|
|
<li>
|
|
<a href="/docs/protocol/channels-overview.html">
|
|
<p>English</p>
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<button id="cross-btn" class="nav-toggle-btn">
|
|
<svg id="cross" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M12.7973 11.5525L7.59762 6.49833L12.7947 1.44675C13.055 1.19371 13.0658 0.771991 12.8188 0.505331C12.5718 0.238674 12.1602 0.227644 11.8999 0.480681L6.65343 5.58028L1.09979 0.182228C0.839522 -0.070157 0.427909 -0.059127 0.18094 0.207531C-0.0660305 0.474191 -0.0552645 0.895911 0.205003 1.14894L5.70862 6.49833L0.20247 11.851C-0.0577975 12.104 -0.0685635 12.5257 0.178407 12.7924C0.306324 12.9306 0.477936 13 0.650181 13C0.811033 13 0.971873 12.9397 1.09726 12.817L6.65343 7.41639L11.9025 12.5186C12.0285 12.6406 12.1893 12.7015 12.3495 12.7015C12.5218 12.7015 12.6934 12.6321 12.8213 12.4939C13.0689 12.2273 13.0582 11.8062 12.7973 11.5525Z" />
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</header>
|
|
<div id="mobile-header">
|
|
<a href="/" class="logo flex dark:hidden ltr:mr-auto rtl:ml-auto"><img src="/img/new/logo-symbol-light.svg" alt="" srcset=""></a>
|
|
<a href="/" class="logo hidden dark:flex ltr:mr-auto rtl:ml-auto"><img src="/img/new/logo-symbol-dark.svg" alt="" srcset=""></a>
|
|
|
|
<button id="hamburger" class="nav-toggle-btn">
|
|
<svg viewBox="0 0 100 80" width="36" height="36">
|
|
<rect width="100" height="15"></rect>
|
|
<rect y="30" width="100" height="15"></rect>
|
|
<rect y="60" width="100" height="15"></rect>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
|
|
|
|
<script>
|
|
// switch theme
|
|
const sunIcon = document.querySelector('.sun');
|
|
const moonIcon = document.querySelector('.moon');
|
|
|
|
const userTheme = localStorage.getItem('theme');
|
|
const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
const prismThemeLink = document.getElementById('prism-theme')
|
|
|
|
function iconToggle () {
|
|
sunIcon.classList.toggle('hidden');
|
|
moonIcon.classList.toggle('hidden');
|
|
}
|
|
|
|
function updateThemeColor() {
|
|
const meta = document.querySelector('meta[name="theme-color"]');
|
|
if (meta) meta.setAttribute('content', getComputedStyle(document.body).backgroundColor);
|
|
const navbar = document.querySelector('header#navbar');
|
|
if (navbar && navbar.classList.contains('open')) {
|
|
navbar.style.transition = 'none';
|
|
navbar.classList.remove('open');
|
|
setTimeout(() => {
|
|
navbar.classList.add('open');
|
|
setTimeout(() => navbar.style.transition = '', 0);
|
|
}, 0);
|
|
}
|
|
}
|
|
|
|
function themeCheck() {
|
|
if (userTheme === 'dark' || (!userTheme && systemTheme)) {
|
|
document.documentElement.classList.add('dark');
|
|
moonIcon.classList.add('hidden');
|
|
if (prismThemeLink) {
|
|
prismThemeLink.setAttribute('href','/css/prism-dark.min.css')
|
|
}
|
|
}
|
|
else{
|
|
sunIcon.classList.add('hidden');
|
|
if (prismThemeLink) {
|
|
prismThemeLink.setAttribute('href','/css/prism-light.min.css')
|
|
}
|
|
}
|
|
updateThemeColor();
|
|
}
|
|
themeCheck();
|
|
|
|
function themeSwitch () {
|
|
if (document.documentElement.classList.contains('dark')) {
|
|
document.documentElement.classList.remove('dark');
|
|
localStorage.setItem('theme', 'light');
|
|
if(prismThemeLink){
|
|
prismThemeLink.setAttribute('href','/css/prism-light.min.css')
|
|
}
|
|
iconToggle();
|
|
} else {
|
|
document.documentElement.classList.add('dark');
|
|
localStorage.setItem('theme', 'dark');
|
|
if (prismThemeLink) {
|
|
prismThemeLink.setAttribute('href','/css/prism-dark.min.css')
|
|
}
|
|
iconToggle();
|
|
}
|
|
updateThemeColor();
|
|
}
|
|
|
|
const nav = document.querySelector('header#navbar');
|
|
|
|
window.addEventListener('click',(e)=>{
|
|
if(e.target.closest('.nav-link')){
|
|
if(e.target.closest('.nav-link').classList.contains('active')){
|
|
e.target.closest('.nav-link').classList.remove('active');
|
|
}
|
|
else{
|
|
document.querySelectorAll('.nav-link').forEach(el => el.classList.remove('active'))
|
|
e.target.closest('.nav-link').classList.add('active');
|
|
}
|
|
}
|
|
else if(e.target.closest('.nav-toggle-btn')){
|
|
if(nav.classList.contains('open')){
|
|
nav.classList.remove('open');
|
|
document.getElementById('mobile-header').classList.remove('nav-open');
|
|
document.documentElement.classList.remove('lock-scroll');
|
|
}
|
|
else{
|
|
document.documentElement.classList.add('lock-scroll');
|
|
document.getElementById('mobile-header').classList.add('nav-open');
|
|
nav.classList.add('open');
|
|
}
|
|
}
|
|
else if(e.target.closest('.theme-switch-btn')){
|
|
themeSwitch();
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<section id="doc" class="bg-white dark:bg-[#000832] mt-[66px]">
|
|
<div>
|
|
<main>
|
|
<aside class="sidebar px-4 lg:px-7">
|
|
<div class="h-[66px] lg:h-0">
|
|
<a href="/" class="h-full flex dark:hidden lg:hidden items-center ltr:mr-auto rtl:ml-auto"><img class="w-auto max-h-[50px] pr-10" src="/img/new/logo-light.png" alt="logo"/></a>
|
|
<a href="/" class="h-full hidden dark:flex dark:lg:hidden items-center ltr:mr-auto rtl:ml-auto"><img class="w-auto max-h-[50px] pr-10" src="/img/new/logo-dark.png" alt="logo"/></a>
|
|
</div>
|
|
<ul class="!my-4">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p class="">Guide</p>
|
|
<ul>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/readme.html">Quick start</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/send-messages.html">Sending messages</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/secret-groups.html">Secret groups</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/chat-profiles.html">Chat profiles</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/managing-data.html">Managing data</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/audio-video-calls.html">Audio & video Calls</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/privacy-security.html">Privacy & security</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/app-settings.html">App settings</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/guide/making-connections.html">Making connections</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p class="">Reference</p>
|
|
<ul>
|
|
|
|
<li>
|
|
<a class="" href="/docs/simplex.html">SimpleX platform</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/business.html">SimpleX for business</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/directory.html">SimpleX Directory</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/android.html">Accessing files in Android app</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/cli.html">Terminal CLI</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/contributing.html">Contributing guide</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/server.html">Hosting your own SMP Server</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/translations.html">Contributing SimpleX app translations</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/webrtc.html">Using custom WebRTC ICE servers</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/docs/xftp-server.html">Hosting your own XFTP Server</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/downloads/">Download SimpleX apps</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/reproduce/">Verify and reproduce builds</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/transparency/">Transparency Reports</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/security/">Security Policy</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a class="" href="/faq/">Frequently Asked Questions</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p class="">Protocol</p>
|
|
<ul>
|
|
|
|
<li>
|
|
<a class="" href="/docs/protocol/simplex-chat.html">SimpleX Chat Protocol</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
</ul>
|
|
</aside>
|
|
<article class="content px-4 lg:px-7">
|
|
|
|
|
|
|
|
<!-- <div class="sticky top-[66px] bg-white dark:bg-[#071C46] z-[49] !py-2 lg:hidden">
|
|
<div class="relative flex items-center justify-between">
|
|
<button class="menu flex items-center gap-2">
|
|
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewBox="0 0 24 24" class="menu-icon h-4 w-4 fill-[rgb(60,60,60)] dark:fill-white">
|
|
<path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path>
|
|
<path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path>
|
|
<path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path>
|
|
<path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path>
|
|
</svg>
|
|
<span class="!text-[rgb(60,60,60)] dark:!text-white">Menu</span>
|
|
</button>
|
|
|
|
<div class="nav-link">
|
|
<a href="javascript:void(0);" class="flex items-center gap-2 !no-underline !text-[rgb(60,60,60)] dark:!text-white">
|
|
<span class="">On this page</span>
|
|
<span href="" id="btn-mobile" class="flex items-center justify-center h-auto w-auto mt-1">
|
|
<svg class="fill-black dark:fill-white" width="10" height="6" viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.50447 0.902966C1.21571 0.627397 0.747525 0.627397 0.458761 0.902966C0.169996 1.17853 0.169996 1.62532 0.458761 1.90089L4.21933 5.48961C4.25543 5.52406 4.29433 5.5542 4.33533 5.58003C4.62234 5.76088 5.01237 5.73074 5.26504 5.48961L9.02561 1.90089C9.31438 1.62532 9.31438 1.17853 9.02561 0.902966C8.73685 0.627397 8.26867 0.627397 7.97991 0.902966L4.74219 3.99273L1.50447 0.902966Z"/>
|
|
</svg>
|
|
</span>
|
|
</a>
|
|
|
|
<ul class="flex flex-col items-start gap-2 absolute bg-white dark:bg-black top-full left-0 right-0 mt-[10px] w-full h-auto rounded-md shadow-[0_0_3px_rgb(60_72_88_/_15%)] sub-menu hash-list">
|
|
<li class="mb-5">
|
|
<a href="#" id="back-to-top">Back to top</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
<div><p>Revision 1, 2026-04-28</p>
|
|
<h1 id="simplex-channels-stateful-information-delivery-and-management" tabindex="-1">SimpleX Channels: stateful information delivery and management</h1>
|
|
<h2 id="table-of-contents" tabindex="-1">Table of contents</h2>
|
|
<ul>
|
|
<li><a href="#introduction">Introduction</a>
|
|
<ul>
|
|
<li><a href="#what-are-simplex-channels">What are SimpleX Channels</a></li>
|
|
<li><a href="#channels-as-transport-layer">Channels as transport layer</a></li>
|
|
<li><a href="#content-visibility-and-participant-privacy">Content visibility and participant privacy</a></li>
|
|
<li><a href="#in-comparison">In comparison</a></li>
|
|
<li><a href="#non-goals">Non-goals</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#architecture">Architecture</a>
|
|
<ul>
|
|
<li><a href="#state-and-distribution">State and distribution</a></li>
|
|
<li><a href="#identity-and-ownership">Identity and ownership</a></li>
|
|
<li><a href="#governance">Governance</a></li>
|
|
<li><a href="#roles">Roles</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#cryptographic-primitives">Cryptographic primitives</a></li>
|
|
<li><a href="#security">Security</a>
|
|
<ul>
|
|
<li><a href="#design-objectives">Design objectives</a></li>
|
|
<li><a href="#signing-scope-roster-only-content-optional">Signing scope: roster only, content optional</a></li>
|
|
<li><a href="#threat-model">Threat model</a></li>
|
|
<li><a href="#current-gaps">Current gaps</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#future-work">Future work</a>
|
|
<ul>
|
|
<li><a href="#stateful-access-and-history-navigation">Stateful access and history navigation</a></li>
|
|
<li><a href="#transcript-integrity">Transcript integrity</a></li>
|
|
<li><a href="#end-to-end-encrypted-side-conversations">End-to-end encrypted side conversations</a></li>
|
|
<li><a href="#relay-addition-and-removal">Relay addition and removal</a></li>
|
|
<li><a href="#governance-evolution">Governance evolution</a></li>
|
|
<li><a href="#pre-moderation">Pre-moderation</a></li>
|
|
<li><a href="#scheduled-delivery">Scheduled delivery</a></li>
|
|
<li><a href="#link-preview-proxying">Link preview proxying</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#conclusion">Conclusion</a></li>
|
|
</ul>
|
|
<h2 id="introduction" tabindex="-1">Introduction</h2>
|
|
<p>The SimpleX network provides private point-to-point communication without user or endpoint identifiers, but most speech that matters is public. Every existing platform that distributes content at scale identifies both publishers and their audiences to the operator - none protect participation privacy. SimpleX Chat supported peer-to-peer groups, but they cannot scale to large audiences. SimpleX Channels close this gap.</p>
|
|
<h3 id="what-are-simplex-channels" tabindex="-1">What are SimpleX Channels</h3>
|
|
<p>SimpleX Channels are a stateful information delivery and management layer built on the <a href="https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md">SimpleX network</a>. SMP queues provide stateless, unidirectional packet delivery between two endpoints. Channels add persistence, state, and scalable distribution - enabling one-to-many publishing with cryptographic identity independent of infrastructure operators.</p>
|
|
<p><a href="https://simplex.chat">SimpleX Chat</a> is the first application, presenting channels as a broadcast publication model where owners publish and subscribers read, react, and comment. But channels are not limited to this use case - they are a general-purpose layer for distributing and managing stateful information (feeds, telemetry, automated pipelines, coordination services, social media). This document describes channels as a transport mechanism - the same mechanism will also be used for large groups, communities, wikis, forums, and other social media primitives.</p>
|
|
<p>The critical difference from conventional publish-subscribe systems is that channel identity and governance are controlled cryptographically by the channel owners, not by the infrastructure operators. Relays - SimpleX network clients that forward and optionally cache channel content - can be added, removed, and replaced without changing the channel's identity, address, content, or cryptographic trust chain. A channel's relationship with its relays is transient; its identity is permanent. The authoritative record of content is hosted on channel owners' devices; relays perform transmission and caching similar to CDN infrastructure.</p>
|
|
<p>Channel owners hold full control of the channel - its identity, content, governance rules, and membership - through self-custody of cryptographic keys. No infrastructure operator, relay provider, or third party can control or alter a channel without the owner's keys. Blockchain systems achieve a related property for financial assets - no third party can control holdings - through network-wide consensus. Channels achieve it through local authority and cryptographic signatures, without global consensus or a public ledger. Unlike blockchain state, channel state is mutable by the owner and not publicly verifiable by third parties.</p>
|
|
<h3 id="channels-as-transport-layer" tabindex="-1">Channels as transport layer</h3>
|
|
<p>The SimpleX network has three transport layers, each built on the one below:</p>
|
|
<ol>
|
|
<li>
|
|
<p><strong>SMP</strong> (<a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md">SimpleX Messaging Protocol</a>) - stateless, unidirectional packet delivery between two endpoints through SMP routers. Provides fixed-size blocks, 2-node onion routing, and transport metadata protection.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>SimpleX agents</strong> (<a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md">agent protocol</a>) - bidirectional, redundant connections between endpoints, with end-to-end post-quantum double ratchet encryption. The <a href="/docs/protocol/simplex-chat.html">SimpleX Chat Protocol</a> runs on top of this layer, providing direct messaging, group communication, and metadata delivery for file transfers via <a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/xftp.md">XFTP protocol</a>.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Channels</strong> - stateful, one-to-many information delivery and management with cryptographic ownership and programmable governance. This layer runs on top of chat and agent layer 2, and it is described in this document.</p>
|
|
</li>
|
|
</ol>
|
|
<p>No network-wide user profile identifiers exist at any of these layers. Just as SMP enables private messaging by providing transport without user identifiers, channels enable public communication while preserving participation privacy at the distribution layer.</p>
|
|
<p>Channel relays are themselves SimpleX clients in the SMP network, connecting to SMP routers using the same protocol, the same 2-node onion routing, and the same fixed-size transport blocks as any other endpoint. Even though the SMP network can distinguish a relay from a person's phone by its transport patterns, it prevents relays from learning anything about other network endpoints. In the case of SimpleX Chat, any CLI client can act as a chat relay without modifications.</p>
|
|
<p>Channels therefore inherit all of SMP's transport privacy properties:</p>
|
|
<ul>
|
|
<li>
|
|
<p><strong>Relays cannot observe subscriber network addresses.</strong> The relay sees SMP queue addresses, not IP addresses or network sessions. The subscriber's IP is known only to their SMP router, which cannot see the message content (encrypted at the agent layer) or the IP addresses of whoever sends messages.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>SMP routers cannot see channel content.</strong> Messages between relay and subscriber are end-to-end encrypted. The SMP router forwards fixed-size encrypted blocks without knowing whether they carry channel messages, direct messages, or anything else.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Participation in multiple channels is unlinkable.</strong> Each channel connection uses independent SMP queues with separate cryptographic credentials. Because of packet-level anonymity in 2-node routing, even if a subscriber uses the same SMP routers for all channels, the sending relays cannot determine this without collusion with those routers. Clients choose independently operated routers by default.</p>
|
|
</li>
|
|
</ul>
|
|
<p>No single point in the system sees both content and network identity. SMP routers see network addresses but not content, and no single SMP router can see which endpoints are communicating because clients choose independently operated routers. Relays see content but not network addresses.</p>
|
|
<h3 id="content-visibility-and-participant-privacy" tabindex="-1">Content visibility and participant privacy</h3>
|
|
<p>Any channel joinable via a public link, whether encrypted or not, must be considered completely public - the cost of joining through automated means has collapsed with large language models and is approaching zero. End-to-end encrypting such content provides no privacy; it only undermines users' security by creating false expectations and increases infrastructure operators' risks by making them unable to see what they deliver. Private channels with encrypted content are a separate use case discussed in <a href="#end-to-end-encrypted-side-conversations">Future work</a>.</p>
|
|
<p>Content of public channels is therefore not end-to-end encrypted between owner and subscriber. Relays can read the messages they forward. Relay operators cannot undetectably alter channel content when multiple relays serve the channel, and cannot alter signed content at all - the authoritative state is held by owners. That each channel can use multiple chat relays provides both technical reliability and censorship resistance against any relay-specific content policies.</p>
|
|
<p>The achievable privacy property for public communication is participation privacy - protecting who reads and writes content. The SMP transport carries no user identifiers, and relays are ordinary SMP clients, so subscribers connect without revealing their identity, network address, or any information that persists across channels. If an adversary joins a SimpleX channel, they see everything that is sent, but cannot determine who sent it or link any participant to anything outside the channel.</p>
|
|
<p>Other systems make the opposite choice: content encryption in exchange for participant identification. For groups and channels joinable via public links this is the opposite of what is needed - the content encryption is meaningless (anyone can join and read), while the participant identification is the security threat.</p>
|
|
<h3 id="in-comparison" tabindex="-1">In comparison</h3>
|
|
<p><strong>Telegram channels</strong> - the operator controls channel identity (usernames are revocable), has full access to both content and participant identity. Channels cannot exist without Telegram's permission.</p>
|
|
<p><strong>Nostr relays</strong> - a single persistent key is used for publishing, following, and identity. Relays see content, the user's key, and their IP address. All posts and follow lists are signed and non-repudiable, linked to the same key - making both publishing and reading activity traceable and undeniable.</p>
|
|
<p><strong>Signal groups</strong> - content is end-to-end encrypted, but the operator manages group state and can observe the membership graph. Groups are capped at 1,000 members with no concept of a channel.</p>
|
|
<p><strong>Matrix rooms</strong> - server operators see room membership and metadata. Room identity is bound to the creating server's domain - if the server disappears, the room identity is lost.</p>
|
|
<p><strong>Mastodon / ActivityPub</strong> - publisher identity is bound to a server domain - if the server disappears, the identity is lost. Server operators see all content and all follower relationships. No encryption or privacy of any kind.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Property</th>
|
|
<th>Telegram</th>
|
|
<th>Nostr</th>
|
|
<th>Signal</th>
|
|
<th>Matrix</th>
|
|
<th>Mastodon</th>
|
|
<th><strong>SimpleX</strong></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Content visible to operator</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td>No</td>
|
|
<td>Configurable</td>
|
|
<td>Yes</td>
|
|
<td><strong>Yes</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Participant identity visible to operator</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td><strong>No</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Channel identity independent of infrastructure</td>
|
|
<td>No</td>
|
|
<td>Yes</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td><strong>Yes</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Sovereign ownership (no 3rd party can seize)</td>
|
|
<td>No</td>
|
|
<td>Yes</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td><strong>Yes</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Programmable governance</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td><strong>Planned</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Cryptographic content deniability</td>
|
|
<td>No</td>
|
|
<td>No</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td>No</td>
|
|
<td><strong>Yes (default)</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Scalable one-to-many delivery</td>
|
|
<td>Yes</td>
|
|
<td>Yes</td>
|
|
<td>No</td>
|
|
<td>Limited</td>
|
|
<td>Yes</td>
|
|
<td><strong>Yes</strong></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3 id="non-goals" tabindex="-1">Non-goals</h3>
|
|
<p>Channels do not attempt to:</p>
|
|
<ul>
|
|
<li><strong>Encrypt public content from relay operators.</strong> See <a href="#content-visibility-and-participant-privacy">Content visibility and participant privacy</a>.</li>
|
|
<li><strong>Assign persistent identities to participants.</strong> There are no usernames, public keys, or any identifiers that persist across channels or link activity across contexts.</li>
|
|
<li><strong>Require network-wide consensus.</strong> Channel state is authoritative on owner devices. The network does not validate channel transactions.</li>
|
|
<li><strong>Guarantee immutability of content.</strong> Channel state is fully controlled and mutable by owners, unlike blockchain state, which is immutable by design.</li>
|
|
</ul>
|
|
<h2 id="architecture" tabindex="-1">Architecture</h2>
|
|
<p>The introduction established what channels provide and why. This section describes how: where state lives, how identity and ownership work, how governance evolves, and what each participant does.</p>
|
|
<h3 id="state-and-distribution" tabindex="-1">State and distribution</h3>
|
|
<p>The authoritative record of a channel - content, member roster, profile, cryptographic keys, governance rules - is held by channel owners on their own devices, not on relays, not on any server, and not on any shared ledger. Relays hold transient copies for distribution and optional caching, analogous to CDN edge nodes: the origin holds the truth, CDN nodes come and go. Consensus is only required between channel owners, not across the entire network.</p>
|
|
<pre><code> ┌──────────┐
|
|
│ Owner │ <- authoritative state
|
|
└────┬─────┘
|
|
│
|
|
┌───────────┼───────────┐
|
|
│ │ │
|
|
┌────▼───┐ ┌────▼───┐ ┌────▼───┐
|
|
│Relay A │ │Relay B │ │Relay C │ <- cache / distribution
|
|
└────┬───┘ └────┬───┘ └────┬───┘
|
|
│ │ │
|
|
┌─────┼─────┐ ... ┌─────┼─────┐
|
|
│ │ │ │ │ │
|
|
S1 S2 S3 S7 S8 S9 <- received copies
|
|
</code></pre>
|
|
<p>Content originates on the owner's device and flows through relays to subscribers. Each relay independently forwards to all of its subscribers. Subscribers do not connect to owners or to each other - this provides better scalability than peer-to-peer SimpleX groups, where adding a member requires N new connections. When multiple relays serve the same channel, subscribers deduplicate at the client level.</p>
|
|
<p><strong>Failure modes:</strong></p>
|
|
<ul>
|
|
<li>
|
|
<p><strong>Loss of a relay is loss of a cache node, not loss of data.</strong> The owner can send the same content through a replacement relay.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Loss of all owner devices is the catastrophic event</strong> - relay caches become orphaned and the channel's private keys are gone. Multiple owners and backups mitigate this risk.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Disagreements between relays are resolved by the origin.</strong> The owner's version is authoritative, settling cache inconsistency through any reachable relay.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Subscribers hold their own received copies. Signed messages are independently verifiable without consulting the relay or owner. Unsigned content depends on cross-relay consistency or future transcript integrity mechanisms.</p>
|
|
<h3 id="identity-and-ownership" tabindex="-1">Identity and ownership</h3>
|
|
<p>A channel's identity is the SHA-256 hash of the genesis root public key, computed at creation time and never changed - even if relays are added, removed, or the channel link is rotated. It is self-authenticating: derived from a key pair that only the channel creator held. It is embedded in the channel's link, distributed in the profile to all members, and used as a binding prefix in all signed messages.</p>
|
|
<p>Subscribers validate that the identity in the link matches the identity in the profile, preventing link substitution. Profile updates that attempt to change the identity are rejected. Full validation that the identity equals the hash of the root key is deferred: if current clients enforced this check, they would reject future rotated links as invalid. The identity is correctly managed today; validation will be enforced with the key rotation protocol. See the <a href="https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2026-03-28-group-identity-binding.md">group identity binding RFC</a>.</p>
|
|
<p>The root key does not sign messages directly. Instead, it authorizes owner keys through a signed chain. At creation, the owner generates a root key pair and a separate member key pair for signing. The member key is published as an authorization entry signed by the root key. New owners can be added by any previously authorized owner signing a new entry. Anyone retrieving the channel link can verify this chain without network access.</p>
|
|
<p>The root key is a bootstrap key - it certifies owners, then need not be used again. All owners are cryptographically indistinguishable to subscribers (they all have equally valid authorization chains), which - provided multiple owners were signed by the root key - conceals the creator's identity.</p>
|
|
<p>The channel link is the out-of-band trust anchor - relays and SMP routers cannot modify link content. All members announce their signing keys on joining. Owner keys are verifiable against the link. Role changes (promoting members to admin, moderator) are signed by owners at the protocol level.</p>
|
|
<p>A planned extension will record role changes as a linearly ordered signed roster log with consistent sequencing across all owners, relays, and subscribers. This linearization prevents ambiguous roster states from concurrent unordered changes, and creates a verifiable chain of trust from the channel link through owners to all elevated roles. Out-of-band key verification for non-owner members will further extend this to E2E encrypted conversations.</p>
|
|
<h3 id="governance" tabindex="-1">Governance</h3>
|
|
<p>"Management" in "information delivery and management" refers not only to managing content but to managing the channel itself - who can make decisions, and how.</p>
|
|
<p>The low-level protocol supports multiple owners from the initial release. The application-level governance model evolves through a planned progression:</p>
|
|
<p><strong>Current (v6.5): Single owner.</strong> One owner controls the channel. All administrative actions (profile changes, roster modifications, relay management) are decided by this single owner. The protocol-level owners chain supports verification of multiple entries, but the application creates and manages only one.</p>
|
|
<p><strong>Near-term (v7): Multiple owners, any-owner-decides.</strong> Multiple owners share control of the channel. Any owner can independently make any administrative decision - add or remove members, change the profile, manage relays. This is the most common decision-making model in practice (equivalent to "all admins are equal" in most online platforms). No coordination between owners is required for any action.</p>
|
|
<p><strong>Future: Multisig and programmable governance.</strong> Further stages include M-of-N multisig for administrative actions and, eventually, programmable governance rules defined as code in the channel's definition. The protocol must support these without prescribing a specific governance model.</p>
|
|
<h3 id="roles" tabindex="-1">Roles</h3>
|
|
<ul>
|
|
<li>
|
|
<p><strong>Owners</strong> create the channel, hold the authoritative state and private keys on their devices, publish content, and manage the member roster. Owners sign administrative messages and optionally content messages. A channel must have at least one owner.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Relays</strong> receive content from owners and members with posting rights, optionally cache it, and forward it to subscribers. They accept new subscriber connections and introduce them to the channel owners. Relays cannot author messages. A channel must have at least one active relay. Relays are ordinary SimpleX clients - a relay can be operated by anyone (a channel operator, a third-party service provider, or a self-hosted instance) and each creates its own contact address link, bound to the channel's identity. The relay's relationship with the channel is transient - owners can add and remove relays without changing the channel's identity.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Subscribers</strong> connect to relays and receive content. They cannot send messages by default, but can be given posting rights.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Additional roles (moderator, admin, member, author) exist in the hierarchy and are inherited from the group protocol.</p>
|
|
<p>For protocol-level detail - wire formats, message types, signing and verification mechanics, delivery pipeline - see <a href="/docs/protocol/channels-protocol.html">SimpleX Channels Protocol</a>.</p>
|
|
<h2 id="cryptographic-primitives" tabindex="-1">Cryptographic primitives</h2>
|
|
<ul>
|
|
<li>
|
|
<p><strong>Ed25519</strong> - channel identity (root key pair), owner authorization chain, and message signing. The signature binding prefix includes the channel's entity ID and the sender's member ID, preventing cross-channel replay.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>SHA-256</strong> - derives the channel's entity ID from the genesis root public key. Immutable, serves as the channel's permanent identity.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Double ratchet with post-quantum KEM</strong> (inherited from <a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/agent-protocol.md">SimpleX agent layer</a>) - end-to-end encryption for all SMP transport. Not channel-specific - channels inherit it by being built on the agent layer. Future E2E side conversations (support scope, member DMs, private channels) will use the same mechanism.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Content messages are not signed by default to preserve cryptographic deniability - see <a href="#signing-scope-roster-only-content-optional">Signing scope</a>. Owners may opt into signing all content in a future release.</p>
|
|
<h2 id="security" tabindex="-1">Security</h2>
|
|
<p>This section examines what the architectural properties protect against, where they hold, and where gaps remain.</p>
|
|
<h3 id="design-objectives" tabindex="-1">Design objectives</h3>
|
|
<p>The channel protocol is designed to achieve the following security objectives:</p>
|
|
<ol>
|
|
<li><strong>Stable message delivery</strong> between channel participants, resilient to individual relay failures.</li>
|
|
<li><strong>No possibility for a relay to substitute the channel</strong> - the channel's identity is cryptographically bound to the link and profile controlled by channel owners.</li>
|
|
<li><strong>No possibility for a relay to impersonate an owner</strong> - administrative messages require valid signatures.</li>
|
|
<li><strong>Prevention of relay-initiated roster manipulation</strong> - member removal, role changes, and other roster modifications require valid owner signatures.</li>
|
|
<li><strong>Relay transience</strong> - the owner can add and remove relays, including the last relay, without permanently losing the channel. Subscribers can restore connectivity by retrieving updated link data.</li>
|
|
<li><strong>Sender anonymity within multi-owner channels</strong> - owners can publish as the channel, hiding which specific owner authored a message from subscribers.</li>
|
|
<li><strong>Participant privacy</strong> - relay operators cannot determine subscriber identity or network address, and subscribers cannot determine each other's identity. This is inherited from the SMP transport layer.</li>
|
|
</ol>
|
|
<h3 id="signing-scope-roster-only-content-optional" tabindex="-1">Signing scope: roster only, content optional</h3>
|
|
<p>By default, only roster-modifying and administrative messages are signed. Content messages are not signed. Two reasons:</p>
|
|
<ol>
|
|
<li>
|
|
<p><strong>Cryptographic deniability.</strong> Signing creates non-repudiable proof of authorship verifiable by any third party. Without signatures, no such proof exists - a relay could have fabricated any unsigned message.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Proportional defense.</strong> Changes to roster, channel profile, and permissions can be disruptive and irreversible - they must be authenticated at processing time. Content manipulation is detectable post-hoc through cross-relay consistency, and the authoritative record on the owner's device is unaffected.</p>
|
|
</li>
|
|
</ol>
|
|
<p>Owners will be able to opt into signing content on a per-channel or per-message basis - some publishers want non-repudiable authorship, others prefer deniability.</p>
|
|
<h3 id="threat-model" tabindex="-1">Threat model</h3>
|
|
<p>This threat model assumes the <a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/security.md">SimpleX network threat model</a> and addresses threats specific to the channel layer.</p>
|
|
<p><strong>A single compromised relay</strong></p>
|
|
<p><em>can:</em></p>
|
|
<ul>
|
|
<li>Substitute unsigned content or selectively drop messages for its subscribers. Detectable by subscribers connected to other relays - the owner's version is authoritative. TODO: difference detection not yet implemented.</li>
|
|
<li>Selectively target specific subscribers while delivering correctly to others.</li>
|
|
<li>Ignore the "message from channel" directive, revealing which owner sent a message. Detectable out-of-band.</li>
|
|
<li>Fabricate or hide subscriber connections, inflating or deflating counts. Detectable if subscribers are connected to other relays.</li>
|
|
</ul>
|
|
<p><em>cannot:</em></p>
|
|
<ul>
|
|
<li>Undetectably substitute content - subscribers on honest relays receive the original.</li>
|
|
<li>Alter the channel's authoritative state on the owner's device.</li>
|
|
<li>Substitute the channel profile or impersonate an owner - these require valid signatures.</li>
|
|
<li>Redirect subscribers to a different channel - the entity ID is validated across link and profile.</li>
|
|
<li>Determine subscriber identity or network address - inherited from SMP transport.</li>
|
|
<li>Correlate subscriber participation across channels - each connection uses independent SMP queues. The subscriber chooses their SMP router independently, so collusion between a relay and the relay's SMP router does not compromise connections through a different router.</li>
|
|
</ul>
|
|
<p><strong>All relays compromised and colluding</strong></p>
|
|
<p><em>can:</em></p>
|
|
<ul>
|
|
<li>Undetectably substitute unsigned content for all subscribers, unless owners sign content messages.</li>
|
|
<li>Prevent delivery of any messages, including signed ones (signing prevents substitution, not dropping).</li>
|
|
<li>Fabricate or hide subscriber connections undetectably.</li>
|
|
</ul>
|
|
<p><em>cannot:</em></p>
|
|
<ul>
|
|
<li>Forge signed administrative messages or substitute the channel profile.</li>
|
|
<li>Alter the authoritative state on the owner's device.</li>
|
|
</ul>
|
|
<p><strong>Compromise of owner keys</strong></p>
|
|
<p>An attacker who obtains the root private key or an owner's member private key (through device compromise, backup theft, or coercion) can impersonate the owner and sign arbitrary administrative messages. This is a different threat from key loss - the channel continues operating, but under adversarial control. Mitigation depends on owner-side operational security and future multisig governance. For the threat model of the channel link itself (the trust anchor), see the <a href="https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2025-04-04-short-links-for-groups.md">short links for groups RFC</a>.</p>
|
|
<p><strong>Loss of all owner devices</strong></p>
|
|
<p>The channel can have no new content, no administrative updates, no new owners. Relay caches continue delivering existing content but cannot be refreshed, and will eventually expire in the absence of the owner connection. Multiple owners and key backups mitigate this risk.</p>
|
|
<p><strong>A subscriber</strong></p>
|
|
<p><em>can:</em></p>
|
|
<ul>
|
|
<li>See all public content, by design.</li>
|
|
<li>Join multiple times with different profiles, inflating counts.</li>
|
|
</ul>
|
|
<p><em>cannot:</em></p>
|
|
<ul>
|
|
<li>Identify other subscribers, send messages to the channel (unless given posting rights), or forge messages of the owner or other subscribers.</li>
|
|
</ul>
|
|
<p><strong>A passive network observer</strong></p>
|
|
<p><em>can:</em></p>
|
|
<ul>
|
|
<li>Observe communication with an SMP router, but not whether it is channel-related.</li>
|
|
</ul>
|
|
<p><em>cannot:</em></p>
|
|
<ul>
|
|
<li>Determine which channel a subscriber uses, correlate channel activity with other SimpleX activity, or identify a relay as distinct from an ordinary user, other than by traffic volume. Inherited from SMP transport.</li>
|
|
</ul>
|
|
<h3 id="current-gaps" tabindex="-1">Current gaps</h3>
|
|
<ol>
|
|
<li><strong>Cross-relay consistency detection.</strong> Duplicate messages are silently deduplicated without hash comparison. Designed but not implemented.</li>
|
|
<li><strong>Link entity ID validation.</strong> Deferred to a future version with key rotation. See <a href="https%3A//github.com/simplex-chat/simplex-chat/blob/stable/simplex-chat/docs/rfcs/2026-03-28-group-identity-binding.md">group identity binding RFC</a>.</li>
|
|
<li><strong>Multi-relay UX.</strong> Protocol supports multiple relays per subscriber; no UX for monitoring relay-level delivery health. It will be added in v6.5.x.</li>
|
|
</ol>
|
|
<h2 id="future-work" tabindex="-1">Future work</h2>
|
|
<h3 id="stateful-access-and-history-navigation" tabindex="-1">Stateful access and history navigation</h3>
|
|
<p>Currently, relays send recent cached history on join but do not support navigation or search. Planned: history pagination by timestamp or message ID, remote search against relay caches, and selective retrieval of specific message ranges. Relay operators can differentiate on cache depth and search capabilities.</p>
|
|
<h3 id="transcript-integrity" tabindex="-1">Transcript integrity</h3>
|
|
<ul>
|
|
<li><strong>Opt-in content signing.</strong> Per-channel or per-message choice to sign content, making it non-repudiable. This will be released in SimpleX Chat v7.</li>
|
|
<li><strong>Subscriber transcript acknowledgment.</strong> Subscribers periodically sign a digest of received history ("I've seen it" rather than "I've authored it"), enabling detection of relay manipulation through diverging digests.</li>
|
|
<li><strong>Merkle tree signing.</strong> Owner periodically publishes a signed Merkle root. Subscribers verify their copies against the owner's authoritative record.</li>
|
|
</ul>
|
|
<h3 id="end-to-end-encrypted-side-conversations" tabindex="-1">End-to-end encrypted side conversations</h3>
|
|
<ul>
|
|
<li><strong>E2E encrypted support scope</strong> between subscriber and moderator/owner.</li>
|
|
<li><strong>E2E encrypted DMs between members</strong> where channel settings permit, using standard SimpleX connection establishment.</li>
|
|
<li><strong>Private channels</strong> where the entire content stream is encrypted to authorized subscribers. The relay becomes a conduit that sees neither content nor identity.</li>
|
|
</ul>
|
|
<h3 id="relay-addition-and-removal" tabindex="-1">Relay addition and removal</h3>
|
|
<p>Dynamic relay addition with cache population from existing relays or owner. Relay removal with subscriber migration. Relay rotation with continuity - new relay connects before old relay is removed. It will be added in v6.5.x.</p>
|
|
<h3 id="governance-evolution" tabindex="-1">Governance evolution</h3>
|
|
<ul>
|
|
<li><strong>Multiple owners (v7):</strong> concurrent administrative authority, any owner acts independently.</li>
|
|
<li><strong>Multisig:</strong> M-of-N approval for administrative actions, with per-action quorums.</li>
|
|
<li><strong>Programmable governance:</strong> rules defined as code in the channel definition.</li>
|
|
</ul>
|
|
<h3 id="pre-moderation" tabindex="-1">Pre-moderation</h3>
|
|
<p>Subscriber messages reviewed by moderators before becoming visible to all subscribers.</p>
|
|
<h3 id="scheduled-delivery" tabindex="-1">Scheduled delivery</h3>
|
|
<p>Messages scheduled for future delivery, cached by relay until the scheduled time.</p>
|
|
<h3 id="link-preview-proxying" tabindex="-1">Link preview proxying</h3>
|
|
<p>The relay loads link previews on behalf of the sender - it already sees message content, so it learns nothing new, and unlike the sender its IP is not linked to any identity.</p>
|
|
<h2 id="conclusion" tabindex="-1">Conclusion</h2>
|
|
<p>SimpleX Channels enable a publisher to reach an unlimited audience without any infrastructure operator knowing who that audience is. No third party can seize the channel because owners hold the keys and the authoritative state on their own devices - relays only cache and forward. Owner signatures protect content integrity and the trust chain extends to all administrative roles. These properties require a network without participant identifiers - they cannot be added to a system that has them.</p>
|
|
</div>
|
|
</article>
|
|
</main>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
<section class="bg-[#D3E9FF] dark:bg-[#080D25] py-[50px] footer page">
|
|
<div class="container">
|
|
<div class="flex flex-col lg:flex-row justify-between">
|
|
<div class="flex flex-col items-center lg:items-start">
|
|
<a href="/" class="h-full mb-14 dark:hidden"><img class="w-auto h-[46px]" src="/img/new/logo-light.png" alt="logo" /></a>
|
|
<a href="/" class="h-full mb-14 hidden dark:inline-block"><img class="w-auto h-[46px]" src="/img/new/logo-dark.png" alt="logo" /></a>
|
|
|
|
<div class="flex flex-col items-center lg:items-start lg:flex-row gap-[150px] lg:gap-[350px]">
|
|
<div class="flex flex-col items-center lg:items-start">
|
|
<a href="/why"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
Why we are building it
|
|
</a>
|
|
<a href="/about/"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
About & Contact us
|
|
</a>
|
|
<a href="/privacy/"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
Privacy Policy
|
|
</a>
|
|
<a href="/jobs/"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
Join team
|
|
</a>
|
|
<a href="https://github.com/simplex-chat/simplex-chat#please-support-us-with-your-donations"
|
|
target="_blank"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
Donate
|
|
<svg class="float-right" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a>
|
|
</div>
|
|
<div class="flex flex-col items-center lg:items-start">
|
|
<a href="https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md"
|
|
target="_blank"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
SimpleX Whitepaper
|
|
<svg class="float-right" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a>
|
|
<a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/simplex-chat.md"
|
|
target="_blank"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
SimpleX Chat protocol
|
|
<svg class="float-right" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a>
|
|
<a href="https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md"
|
|
target="_blank"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
Terminal CLI
|
|
<svg class="float-right" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a>
|
|
<a href="https://github.com/simplex-chat/simplex-chat/tree/stable/bots"
|
|
target="_blank"
|
|
class="text-grey-black dark:text-white text-[14px] font-medium leading-[28px] tracking-[0.01em] mb-3 flex items-center gap-1">
|
|
SimpleX bots API
|
|
<svg class="float-right" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<article class="mt-10 lg:mt-0">
|
|
<div class="h-[40px] flex flex-col gap-2 justify-center">
|
|
<div class="flex gap-2 justify-center">
|
|
<a href="https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 54 54" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.585 0C11.9025 0 0 11.9025 0 26.585C0 41.2674 11.9025 53.1699 26.585 53.1699C41.2674 53.1699 53.1699 41.2674 53.1699 26.585C53.1699 11.9025 41.2674 0 26.585 0ZM11.3862 17.3518L17.6366 23.4373L23.9313 17.3088L17.6787 11.2209L20.866 8.1179L27.1187 14.2061L33.4932 8L36.6199 11.044L30.2448 17.25L36.4982 23.3379L42.8733 17.1321L46 20.1761L39.6249 26.3818L45.8789 32.4702L42.6916 35.5732L36.4376 29.4848L30.0631 35.6906L36.3171 41.7791L33.1299 44.8821L26.8759 38.7936L20.5026 45L17.3759 41.956L23.8003 35.693L17.5493 29.6073L11.1255 35.8621L8 32.8194L14.4244 26.5646L8.17397 20.4792L11.3862 17.3518ZM27.0125 32.5656L33.311 26.4408L27.0576 20.3535L27.0568 20.3516L20.7615 26.4799L27.0125 32.5656Z"/>
|
|
</svg>
|
|
</a>
|
|
<a href="https://primal.net/p/npub1exv22uulqnmlluszc4yk92jhs2e5ajcs6mu3t00a6avzjcalj9csm7d828" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M256 512C397.385 512 512 397.385 512 256C512 114.615 397.385 0 256 0C114.615 0 0 114.615 0 256C0 397.385 114.615 512 256 512ZM348.077 268.251C347.047 271.254 346.018 274.257 344.263 277.017C337.633 287.302 327.867 292.139 315.221 292.951C302.173 293.789 289.233 295.487 276.333 297.437C274.064 297.779 271.793 298.108 269.521 298.438C258.687 300.005 247.858 301.572 237.36 304.645C189.946 318.517 148.927 341.344 115.048 374.257C109.197 379.941 103.451 385.688 98.1836 391.819C95.7632 394.637 93.0278 397.201 89.1831 398.521L89.1304 398.538C87.9731 398.938 86.7466 399.359 85.6548 398.491C84.7729 397.79 84.9731 396.874 85.1665 395.992C85.1948 395.862 85.2231 395.733 85.248 395.605C85.6963 393.277 86.7407 391.14 88.1821 389.194C90.146 386.544 92.084 383.878 94.022 381.213C99.7344 373.356 105.446 365.5 111.82 358.036C121.707 346.457 133.167 336.2 144.787 326.072C168.56 305.352 195.75 289.087 225.833 276.646C228.757 275.438 231.732 274.327 234.707 273.217C236.528 272.538 238.349 271.858 240.158 271.155C240.361 271.076 240.574 271.007 240.789 270.938C241.635 270.663 242.518 270.377 243.024 269.423C242.177 268.706 241.15 268.783 240.177 268.857C239.968 268.873 239.762 268.889 239.561 268.896C217.297 269.744 195.694 273.47 174.884 280.725C167.117 283.432 159.668 286.729 152.295 290.172C149.855 291.311 147.46 292.248 145.208 290.121C142.917 287.958 143.432 285.598 144.912 283.182C154.453 267.61 165.746 253.295 179.889 240.66C197.997 224.483 219.395 213.954 244.032 208.49C276.996 201.18 306.323 208.416 332.639 226.84L333.331 227.326C337.818 230.48 342.154 233.529 348.424 232.938C356.094 232.213 362.589 229.362 367.853 224.391C376.977 215.774 378.435 205.5 372.124 194.314C365.358 182.325 356.674 171.414 347.996 160.512L347.97 160.479C344.757 156.442 341.94 152.257 340.075 147.559C337.776 141.771 339.282 136.798 343.771 132.374C346.562 129.623 349.879 127.444 353.499 125.654C352.84 124.302 351.792 124.372 350.828 124.437C350.692 124.445 350.558 124.454 350.427 124.459C349.885 124.479 349.345 124.565 348.806 124.651C348.214 124.745 347.624 124.839 347.031 124.847C346.607 124.852 346.152 124.89 345.689 124.929C343.945 125.074 342.084 125.23 341.357 123.684C340.391 121.631 341.399 119.227 343.191 117.554C347.403 113.623 352.741 112.595 358.621 113.133C364.851 113.703 370.044 116.374 374.959 119.561C377.904 121.469 380.753 123.504 383.548 125.587C386.107 127.494 385.938 128.352 382.863 129.358C378.374 130.828 373.854 132.237 369.158 133.088C368.043 133.29 366.97 133.568 365.925 133.915C365.13 134.178 364.353 134.481 363.586 134.82C356.43 137.985 354.645 142.229 357.784 148.742C360.525 154.429 364.434 159.469 368.344 164.509C369.887 166.498 371.431 168.487 372.902 170.517C373.603 171.483 374.306 172.449 375.008 173.415C379.468 179.541 383.926 185.666 387.914 192.062C400.479 212.217 392.457 231.471 374.209 243.009C372.334 244.194 370.384 245.277 368.434 246.36C365.527 247.975 362.621 249.589 359.962 251.543C354.495 255.563 350.765 260.588 348.648 266.601C348.455 267.149 348.266 267.7 348.077 268.251ZM364.513 333.922C365.149 335.249 364.924 336.668 364.888 338.06C364.714 340.459 365.214 342.489 363.518 344.059C362.183 344.074 361.458 343.352 360.753 342.65C360.563 342.461 360.375 342.273 360.177 342.103C356.286 338.75 352.875 334.988 348.808 331.769C341.752 326.184 333.477 324.483 324.302 324.521C315.342 324.559 307.177 327.164 299.004 329.771C297.717 330.183 296.429 330.594 295.138 330.995L289.747 332.666C278.586 336.121 267.42 339.577 256.422 343.413C246.833 346.757 238.413 339.996 239.31 331.924C240.31 322.924 243.14 314.443 250.956 307.944C254.783 304.762 259.324 303.146 264.323 302.431C267.762 301.938 271.221 301.553 274.679 301.168C276.062 301.014 277.446 300.859 278.828 300.698C279.451 300.625 280.078 300.607 280.639 301.144C280.923 302.208 280.246 302.979 279.585 303.731C279.429 303.91 279.273 304.088 279.131 304.268C274.998 309.516 270.639 314.606 265.876 319.418C265.727 319.568 265.549 319.722 265.365 319.879C264.61 320.528 263.763 321.258 264.454 322.215C265.352 323.459 266.887 322.692 268.166 322.415C273.744 321.205 279.287 319.864 284.829 318.523C294.818 316.107 304.808 313.69 315.003 312.043C328.089 309.928 340.422 311.512 351.549 318.553C357.728 322.463 361.604 327.85 364.513 333.922Z" />
|
|
</svg>
|
|
</a>
|
|
<a rel="me" href="https://mastodon.social/@simplex" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M256 512C397.385 512 512 397.385 512 256C512 114.615 397.385 0 256 0C114.615 0 0 114.615 0 256C0 397.385 114.615 512 256 512ZM339.329 99.0275C317.654 93.9388 295.564 92.2207 273.231 91.3254C272.186 91.2944 271.157 91.2596 270.14 91.2251C268.091 91.1557 266.089 91.0879 264.086 91.0567C246.35 90.7812 228.654 91.5123 210.994 93.1846C197.065 94.5035 183.244 96.4768 169.675 99.9727C162.199 101.899 154.73 103.994 147.977 107.812C134.904 115.202 125.174 125.999 117.725 138.921C108.323 155.228 103.916 173.02 103.377 191.682C102.882 208.853 102.937 226.049 103.186 243.227C103.396 257.66 104.034 272.095 104.854 286.507C105.678 300.995 107.728 315.348 110.963 329.508C114.411 344.606 119.377 359.13 127.439 372.451C138.635 390.948 154.331 403.859 174.933 410.499C187.604 414.582 200.649 417.051 213.826 418.828C237.461 422.015 261.021 421.897 284.461 417.12C294.296 415.115 303.892 412.325 313.09 408.232C314.413 407.643 314.878 406.946 314.79 405.46C314.549 401.383 314.383 397.303 314.217 393.222C314.143 391.401 314.069 389.581 313.989 387.761C313.915 386.091 313.827 384.422 313.737 382.714C313.695 381.925 313.653 381.128 313.612 380.318C313.426 380.354 313.261 380.382 313.11 380.408C312.825 380.457 312.591 380.497 312.364 380.56C294.125 385.58 275.582 388.162 256.641 387.555C245.877 387.21 235.125 386.735 224.588 384.226C217.159 382.457 210.199 379.654 204.32 374.599C197.016 368.318 193.251 360.094 191.688 350.786C191.199 347.876 190.939 344.927 190.672 341.898C190.548 340.499 190.423 339.084 190.274 337.647C190.638 337.712 190.939 337.764 191.198 337.808C191.658 337.888 191.989 337.945 192.317 338.012C193.433 338.242 194.548 338.478 195.663 338.714C197.9 339.188 200.137 339.662 202.384 340.08C217.874 342.967 233.476 344.947 249.2 346.01C261.24 346.825 273.283 346.962 285.306 346.061C292.653 345.511 299.987 344.776 307.32 344.042C310.694 343.704 314.068 343.366 317.444 343.046C329.993 341.856 342.163 339.055 353.868 334.339C368.08 328.613 381.069 320.958 391.661 309.671C397.704 303.232 402.22 295.971 403.793 287.033C406.787 270.025 408.278 252.868 409.117 235.648C409.506 227.659 409.68 219.659 409.854 211.661C409.877 210.641 409.899 209.622 409.922 208.602C410.225 194.937 409.755 181.331 406.589 167.943C402.18 149.303 393.93 132.763 380.157 119.248C373.506 112.723 366.119 107.246 357.182 104.291C351.293 102.344 345.36 100.443 339.329 99.0275ZM206.301 147.05C215.154 146.705 223.699 148.074 231.686 152.148C239.099 156.066 244.656 161.596 248.834 168.559C250.24 170.904 251.634 173.256 253.028 175.609C253.877 177.042 254.725 178.475 255.577 179.906C255.751 180.198 255.939 180.481 256.169 180.825C256.289 181.005 256.42 181.202 256.567 181.426C256.835 180.985 257.092 180.564 257.34 180.156C257.857 179.31 258.338 178.52 258.815 177.728C259.514 176.567 260.2 175.397 260.885 174.228C262.344 171.739 263.803 169.25 265.39 166.845C274.175 153.529 286.908 147.555 302.51 147.037C311.492 146.739 320.132 148.161 328.153 152.407C340.022 158.69 347.454 168.621 351.49 181.281C353.776 188.451 354.772 195.835 354.782 203.337C354.809 224.399 354.804 245.462 354.8 266.525C354.798 274.145 354.797 281.765 354.796 289.385C354.796 291.539 354.794 291.541 352.618 291.541C345.311 291.541 338.005 291.541 330.699 291.541L322.729 291.541L320.556 291.541V289.22C320.556 282.775 320.555 276.331 320.555 269.886C320.555 249.152 320.555 228.417 320.557 207.683C320.557 203.313 320.182 198.991 318.855 194.802C316.363 186.935 311.094 182.212 302.904 181.058C297.135 180.245 291.436 180.588 286.145 183.355C279.524 186.817 276.269 192.781 274.923 199.777C274.066 204.228 273.672 208.827 273.621 213.366C273.507 223.706 273.527 234.048 273.547 244.39C273.555 248.39 273.563 252.389 273.563 256.389V258.442H239.519C239.519 257.757 239.52 257.127 239.519 256.498C239.515 252.169 239.515 247.841 239.515 243.512C239.515 232.533 239.514 221.553 239.453 210.574C239.422 205.073 238.685 199.648 236.607 194.488C233.57 186.946 228.11 182.277 220.046 181.187C216.643 180.726 213.072 180.737 209.67 181.204C202.089 182.246 197.072 186.701 194.521 193.923C193.001 198.228 192.528 202.699 192.528 207.236C192.526 227.665 192.526 248.094 192.526 268.522C192.526 275.434 192.527 282.345 192.527 289.256V291.425H158.285V289.671C158.285 281.418 158.28 273.166 158.274 264.914C158.259 244.215 158.245 223.516 158.321 202.817C158.362 191.725 160.39 180.983 165.938 171.217C174.826 155.574 188.484 147.745 206.301 147.05Z" />
|
|
</svg>
|
|
</a>
|
|
<a href="https://lemmy.ml/c/simplex" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M211.627 320.142L211.601 320.334C209.791 327.491 205.635 332.28 198.898 334.602C186.776 338.78 174.062 329.797 173.658 317.008C173.314 306.088 182.578 296.189 194.836 297.369C205.769 298.421 213.652 308.883 211.697 319.667C211.669 319.825 211.647 319.984 211.627 320.142Z" />
|
|
<path d="M330.616 332.344C330.429 332.469 330.237 332.586 330.048 332.707C318.654 339.342 304.653 333.087 301.724 320.752C299.125 309.809 306.901 298.809 318.043 297.573C326.881 296.592 335.193 301.875 338.096 309.993C341.069 318.313 338.059 327.36 330.616 332.344Z" />
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M256 512C397.385 512 512 397.385 512 256C512 114.615 397.385 0 256 0C114.615 0 0 114.615 0 256C0 397.385 114.615 512 256 512ZM452.87 191.71C450.247 181.005 444.82 172.018 435.126 165.783C434.537 165.485 433.964 165.181 433.398 164.88C432.158 164.222 430.954 163.582 429.697 163.069C421.154 159.584 412.3 159.367 403.337 160.925C394.095 162.532 385.533 165.973 377.487 170.658C368.828 175.701 361.835 182.561 355.71 190.334C355.44 190.676 355.214 191.051 355 191.363C355.081 191.515 355.095 191.577 355.134 191.609C355.439 191.858 355.746 192.107 356.062 192.346C363.56 198.034 370.116 204.62 375.603 212.22C384.395 224.398 389.771 237.954 392.392 252.617C392.594 253.748 392.832 254.873 393.053 256C405.488 253.396 416.484 248.669 426.037 242.977C434.382 238.003 441.402 231.567 446.721 223.474C453.126 213.727 455.673 203.145 452.87 191.71ZM74.0957 168.33C80.6572 163.052 88.1533 160.554 96.373 160.085C106.582 159.503 116.192 161.954 125.519 165.865C138.758 171.419 149.13 180.436 157.59 191.798C157.645 191.872 157.697 191.947 157.747 192.024C157.788 192.089 157.828 192.155 157.864 192.222C157.899 192.287 157.922 192.359 157.951 192.452L158 192.606C136.48 208.433 124.266 229.827 119.912 256C119.671 255.981 119.437 255.979 119.21 255.962C119.12 255.956 119.031 255.947 118.944 255.935C118.893 255.927 118.842 255.917 118.791 255.906C106.863 253.306 95.7129 248.715 85.4551 242.228C75.9717 236.23 68.2236 228.434 63.2119 218.255C60.3105 212.362 58.7051 206.12 59.0449 199.556C59.6875 187.16 64.5664 176.684 74.0957 168.33ZM296.621 382.67C313.312 376.036 328.495 366.898 342.24 355.14C350.237 348.229 357.383 340.69 363.479 332.195C374.055 317.459 380.766 301.307 381.77 283.001C382.441 270.745 381.724 258.632 378.58 246.731C373.914 229.066 364.635 214.348 350.251 202.935C340.804 195.439 330.173 190.161 318.777 186.34C303.993 181.384 288.724 179.122 273.21 178.32C260.704 177.674 248.214 178.026 235.744 179.201C225.53 180.164 215.431 181.775 205.499 184.357C192.461 187.748 180.062 192.636 168.799 200.14C153.032 210.644 142.032 224.79 136.08 242.792C132.337 254.113 130.976 265.771 131 277.642C131.021 287.482 132.225 297.122 135.406 306.482C139.866 319.601 146.978 331.165 156.084 341.527C172.32 360 192.19 373.328 214.92 382.551C215.081 382.616 215.245 382.674 215.409 382.729C215.558 382.778 215.706 382.824 215.852 382.868L215.863 382.873L215.922 382.891C216.04 382.927 216.154 382.963 216.265 383C216.304 382.079 216.324 381.166 216.344 380.259C216.363 379.391 216.383 378.528 216.419 377.671C216.463 376.613 216.532 375.562 216.659 374.519C218.164 362.141 224.289 352.646 235.222 346.599C246.337 340.452 258.246 339.604 270.208 343.455C285.366 348.334 293.935 359.08 296.154 374.799C296.398 376.527 296.456 378.281 296.516 380.085L296.519 380.13V380.173C296.546 380.995 296.574 381.826 296.621 382.67ZM281.743 368.861C282.872 371.457 283.575 374.328 283.881 377.463C285.312 392.157 273.662 404.387 259.753 405.812C254.162 406.385 248.779 405.674 243.706 403.293C235.694 399.535 231.077 393.124 229.513 384.525C228.687 379.986 228.794 375.442 230.311 371.038C230.366 370.862 230.425 370.687 230.485 370.511C233.364 362.156 239.321 357.018 247.744 354.776C255.238 352.782 262.649 353.215 269.807 356.412C275.688 359.393 279.581 363.572 281.743 368.861ZM145.243 347.723C144.674 347.919 144.148 348.073 143.643 348.279L123.101 356.65C118.053 358.706 113.004 360.758 107.952 362.804C106.823 363.261 105.612 363.671 104.412 363.772C100.998 364.058 98.0098 361.874 97.0557 358.587C96.1104 355.333 97.5312 351.907 100.529 350.27C100.976 350.025 101.452 349.834 101.927 349.644L102.222 349.524L134.319 336.439C134.889 336.207 135.449 335.954 136.141 335.656C135.967 335.363 138.582 338.852 141.055 342.154L142.903 344.622C143.673 345.648 144.331 346.526 144.754 347.085C145.023 347.442 145.197 347.669 145.243 347.723ZM369.278 345.862C370.302 344.697 371.534 343.236 372.724 341.826L372.735 341.812L372.741 341.803C375.005 339.122 377.106 336.631 377.315 336.716L383.333 339.168C391.872 342.647 400.41 346.126 408.957 349.581C411.084 350.441 412.807 351.698 413.645 353.882C414.726 356.697 414.287 359.323 412.218 361.528C410.094 363.792 407.413 364.428 404.511 363.378C401.243 362.196 398.05 360.808 394.829 359.496L368.187 348.632L368.005 348.56L367.679 348.44C367.526 348.385 367.379 348.335 367.243 348.289L366.935 348.182C367.13 348.228 368.055 347.256 369.278 345.862ZM342.492 371.036C342.825 370.833 330.406 379.116 330.827 379.667C338.286 389.524 345.667 399.273 353.053 409.019L353.185 409.193L353.426 409.513C353.677 409.84 353.935 410.16 354.22 410.453C358.062 414.399 364.663 412.838 366.314 407.583C367.117 405.031 366.513 402.746 364.907 400.64C360.587 394.974 356.3 389.283 352 383.602L342.492 371.036ZM169.228 372.739C169.013 373.018 172.123 375.052 175.2 377.064C178.211 379.033 181.189 380.98 180.99 381.244L174.88 389.313C169.871 395.926 164.864 402.539 159.871 409.163C158.534 410.936 156.953 412.256 154.675 412.554C151.731 412.939 149.331 411.952 147.65 409.532C145.926 407.052 145.868 404.406 147.351 401.768C147.473 401.55 147.608 401.34 147.752 401.135C147.942 400.86 148.147 400.594 148.352 400.328L148.613 399.985L169.228 372.739Z" />
|
|
<path d="M211.584 320.586C209.815 327.718 205.697 332.587 199.022 334.947C187.008 339.195 174.408 330.062 174.009 317.062C173.668 305.961 182.848 295.898 194.995 297.097C205.829 298.167 213.642 308.802 211.704 319.765C211.665 319.99 211.64 320.217 211.584 320.586Z" />
|
|
<path d="M329.711 333.271C318.43 340.029 304.431 333.604 301.503 320.932C298.905 309.69 306.679 298.39 317.818 297.12C326.654 296.113 334.965 301.539 337.867 309.879C340.84 318.426 337.83 327.72 330.389 332.84C330.202 332.968 330.01 333.089 329.711 333.271Z" />
|
|
</svg>
|
|
</a>
|
|
<a href="mailto:chat@simplex.chat" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M512 256C512 397.385 397.385 512 256 512C114.615 512 0 397.385 0 256C0 114.615 114.615 0 256 0C397.385 0 512 114.615 512 256ZM149.744 205.384L166.479 218.68C192.394 239.268 218.153 259.732 243.918 280.188C254.117 288.285 257.065 288.23 267.363 280.05C310.416 245.847 353.478 211.655 396.54 177.463L400.139 174.605L413.302 164.153C414.537 163.173 415.803 162.232 418.049 160.511V167.062L418.05 212.292C418.05 257.522 418.051 302.752 418.045 347.982C418.044 359.363 414.904 362.477 403.495 362.477L283.932 362.479C225.163 362.479 166.395 362.479 107.626 362.477C96.1521 362.477 93.0066 359.391 93.0051 348.06C92.9968 287.587 93.001 227.114 93.001 166.641V160.359C112.401 175.751 130.933 190.456 149.744 205.384ZM116.095 149C126.458 157.244 135.905 164.758 145.633 172.489C166.835 189.321 187.943 206.083 209.045 222.84L255.556 259.775L395.017 149H116.095Z" />
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
|
|
<div class="flex gap-2 justify-center">
|
|
<a href="https://github.com/simplex-chat" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M20.2907 0.926758C9.24635 0.926758 0.290527 10.1075 0.290527 21.4331C0.290527 30.4933 6.02118 38.18 13.9679 40.8915C14.9674 41.0813 15.3344 40.4467 15.3344 39.905C15.3344 39.4161 15.3158 37.8007 15.3072 36.0872C9.74314 37.3277 8.56906 33.6677 8.56906 33.6677C7.65927 31.2975 6.3484 30.6672 6.3484 30.6672C4.53379 29.3945 6.48519 29.4206 6.48519 29.4206C8.49355 29.5653 9.55105 31.5338 9.55105 31.5338C11.3349 34.6688 14.2298 33.7624 15.3711 33.2385C15.5506 31.9131 16.069 31.0085 16.6409 30.4964C12.1986 29.9779 7.52878 28.2195 7.52878 20.3621C7.52878 18.1232 8.31007 16.294 9.58947 14.8579C9.38181 14.3414 8.69723 12.2557 9.78322 9.43111C9.78322 9.43111 11.4627 8.87998 15.2847 11.5331C16.8801 11.0787 18.591 10.8509 20.2907 10.8431C21.9904 10.8509 23.7027 11.0787 25.301 11.5331C29.1183 8.87998 30.7955 9.43111 30.7955 9.43111C31.8842 12.2557 31.1992 14.3414 30.9916 14.8579C32.274 16.294 33.05 18.1232 33.05 20.3621C33.05 28.2382 28.3712 29.9724 23.9176
|
|
30.4801C24.635 31.1165 25.2742 32.3644 25.2742 34.2776C25.2742 37.0214 25.251 39.2296 25.251 39.905C25.251 40.4507 25.611 41.0902 26.6248 40.8888C34.5672 38.1742 40.2905 30.4903 40.2905 21.4331C40.2905 10.1075 31.336 0.926758 20.2907 0.926758Z" />
|
|
</svg>
|
|
</a>
|
|
<a href="https://www.reddit.com/r/SimpleXChat/" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.874 40.9268C31.9197 40.9268 40.874 31.9724 40.874 20.9268C40.874 9.88108 31.9197 0.926758 20.874 0.926758C9.82834 0.926758 0.874023 9.88108 0.874023 20.9268C0.874023 31.9724 9.82834 40.9268 20.874 40.9268ZM30.4091 16.615C31.9031 16.615 33.1157 17.8276 33.1157 19.3216C33.1157 20.426 32.4445 21.3787 31.5567 21.8118C31.6 22.0716 31.6217 22.3315 31.6217 22.613C31.6217 26.7705 26.7929 30.1268 20.8165 30.1268C14.8402 30.1268 10.0114 26.7705 10.0114 22.613C10.0114 22.3315 10.0331 22.05 10.0764 21.7902C9.12362 21.3571 8.47402 20.426 8.47402 19.3216C8.47402 17.8276 9.68662 16.615 11.1807 16.615C11.8953 16.615 12.5665 16.9181 13.0429 17.3728C14.9051 16.0086 17.4819 15.1642 20.3618 15.0776L21.726 8.6248C21.7693 8.49488 21.8343 8.3866 21.9425 8.32164C22.0508 8.25668 22.1807 8.23504 22.3106 8.25668L26.7929 9.20944C27.0961 8.55984 27.7457 8.12676 28.5035 8.12676C29.5646 8.12676 30.4307 8.99292 30.4307
|
|
10.0539C30.4307 11.115 29.5646 11.9811 28.5035 11.9811C27.4642 11.9811 26.6197 11.1582 26.5764 10.1406L22.5705 9.29604L21.3362 15.0776C24.1512 15.1858 26.7063 16.052 28.5469 17.3728C29.0232 16.8964 29.6728 16.615 30.4091 16.615ZM16.5291 19.3216C15.4681 19.3216 14.602 20.1878 14.602 21.2488C14.602 22.3098 15.4681 23.176 16.5291 23.176C17.5902 23.176 18.4563 22.3098 18.4563 21.2488C18.4563 20.1878 17.5902 19.3216 16.5291 19.3216ZM20.7949 27.7449C21.5311 27.7449 24.0429 27.6582 25.3638 26.3374C25.5587 26.1425 25.5587 25.8394 25.4071 25.6228C25.2122 25.428 24.8874 25.428 24.6925 25.6228C23.848 26.4456 22.0941 26.7488 20.8165 26.7488C19.539 26.7488 17.7634 26.4456 16.9405 25.6228C16.7457 25.428 16.4209 25.428 16.226 25.6228C16.0311 25.8177 16.0311 26.1425 16.226 26.3374C17.5252 27.6366 20.0587 27.7449 20.7949 27.7449ZM23.0902 21.2488C23.0902 22.3098 23.9563 23.176 25.0173 23.176C26.0783 23.176 26.9445 22.3098 26.9445 21.2488C26.9445 20.1878 26.0783
|
|
19.3216 25.0173 19.3216C23.9563 19.3216 23.0902 20.1878 23.0902 21.2488Z" />
|
|
</svg>
|
|
</a>
|
|
<a href="https://twitter.com/simplexchat" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.4575 40.9268C31.5032 40.9268 40.4575 31.9725 40.4575 20.9268C40.4575 9.88106 31.5032 0.926758 20.4575 0.926758C9.41182 0.926758 0.45752 9.88106 0.45752 20.9268C0.45752 31.9725 9.41182 40.9268 20.4575 40.9268ZM29.916 16.7766C29.916 23.1157 25.014 30.4265 16.0519 30.4265V30.423C13.4038 30.4265 10.8115 29.6795 8.58252 28.2719C8.96846 28.3174 9.35558 28.3397 9.74271 28.3409C11.9372 28.3432 14.0688 27.6182 15.7942 26.283C13.7101 26.2444 11.8802 24.9055 11.2425 22.9507C11.9716 23.0898 12.7245 23.0619 13.4418 22.869C11.1689 22.4165 9.53371 20.4504 9.53252 18.1671V18.1062C10.2106 18.478 10.9694 18.6835 11.7448 18.7057C9.60377 17.2981 8.94233 14.4948 10.2355 12.3026C12.7103 15.2992 16.3606 17.1207 20.2782 17.3147C19.8851 15.6487 20.4231 13.902 21.6878 12.7306C23.6507 10.9137 26.737 11.0073 28.5824 12.9387C29.6737 12.7271 30.7199 12.3327 31.677 11.7738C31.3125 12.8857 30.5513 13.828 29.5348 14.4277C30.5002
|
|
14.3155 31.4443 14.0609 32.3325 13.6728C31.6782 14.6362 30.8553 15.4781 29.9017 16.1562C29.916 16.362 29.916 16.5685 29.916 16.7766Z" />
|
|
</svg>
|
|
</a>
|
|
<a href="https://www.linkedin.com/company/simplex-chat/" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0408 0.926758C8.9951 0.926758 0.0407715 9.88109 0.0407715 20.9268C0.0407715 31.9724 8.9951 40.9268 20.0408 40.9268C31.0864 40.9268 40.0408 31.9724 40.0408 20.9268C40.0408 9.88109 31.0864 0.926758 20.0408 0.926758ZM9.6421 17.4916H14.1745V31.1098H9.6421V17.4916ZM14.4731 13.279C14.4437 11.9438 13.4889 10.9268 11.9383 10.9268C10.3878 10.9268 9.3741 11.9438 9.3741 13.279C9.3741 14.5866 10.3579 15.6328 11.8794 15.6328H11.9084C13.4889 15.6328 14.4731 14.5866 14.4731 13.279ZM25.3017 17.1718C28.2843 17.1718 30.5203 19.1187 30.5203 23.3015L30.5201 31.1098H25.9879V23.824C25.9879 21.994 25.3319 20.7453 23.6912 20.7453C22.439 20.7453 21.6932 21.5871 21.3656 22.4003C21.2458 22.6916 21.2164 23.0976 21.2164 23.5046V31.1101H16.6834C16.6834 31.1101 16.7431 18.7698 16.6834 17.492H21.2164V19.4208C21.8179 18.4936 22.8953 17.1718 25.3017 17.1718Z" />
|
|
</svg>
|
|
</a>
|
|
<a href="https://simplex.chat/feed.rss" target="_blank">
|
|
<svg class="fill-primary-light dark:fill-primary-dark" width="32" height="32" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M256 512C397.385 512 512 397.385 512 256C512 114.615 397.385 0 256 0C114.615 0 0 114.615 0 256C0 397.385 114.615 512 256 512ZM132.791 157.572C215.586 161.137 279.503 196.841 323.612 267.517C344.138 302.436 354.186 339.959 354.57 380.122H406.814C409.639 231.301 280.977 103.1 132.791 106.05V157.572ZM309.994 343.843C311.593 356.035 313.096 367.877 314.65 380.116H261.161C260.496 344.968 248.303 314.452 223.472 289.485C198.613 264.491 168.097 252.282 132.755 251.38V199.743C198.318 196.346 288.694 244.344 309.994 343.843ZM132.766 336.706C129.293 354.261 137.796 370.323 154.848 378.004L155.461 378.242C156.267 378.558 156.912 378.81 157.577 378.985C173.012 383.066 186.298 379.318 196.604 367.168C206.463 355.544 208.397 342.145 201.87 328.354C195.205 314.271 183.419 307.215 167.834 307.356C151.188 307.509 135.971 320.504 132.766 336.706Z" />
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
<a href="#" class="text-grey-black dark:text-white text-[16px] text-center lg:ltr:text-left lg:rtl:text-right font-medium leading-[28px] tracking-[0.01em] block mt-[60px]">© 2020-2025 SimpleX Chat | Open-Source Project</a>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
<script src="/js/docs.js"></script>
|
|
<script src="/js/prism.min.js"></script>
|
|
</body>
|
|
|
|
</html> |