Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Seal — पीयर-टू-पीयर, एंड-टू-एंड एन्क्रिप्टेड चैट। कोई इनबॉक्स नहीं। रिकवर करने के लिए कोई अकाउंट नहीं। कोई सुन नहीं रहा — हम भी नहीं। | Kitploit
उपकरण/GitHubGitHub/emn4tor/seal
एन्क्रिप्शन/डिक्रिप्शन उपकरणक्रिप्टोग्राफीगोपनीयता
GitHubemn4tor/seal

Seal

पीयर-टू-पीयर, एंड-टू-एंड एन्क्रिप्टेड चैट। कोई इनबॉक्स नहीं। रिकवर करने के लिए कोई अकाउंट नहीं। कोई सुन नहीं रहा — हम भी नहीं।

रिपॉजिटरी देखें
9442 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
<div align="center">
  <a href="https://github.com/Emn4tor/Seal">
    <img src="https://assets.kitploit.com/production/public/readmes/49626/0d175b4ba9dd08a1b35a94415f701b49b89aac52b6f5c25731822653ea386e6f.png" width="112" height="112" alt="Seal लोगो" />
  </a>

  <h1>Seal</h1>

  <p><em>पीयर-टू-पीयर, एंड-टू-एंड एन्क्रिप्टेड चैट।<br />कोई इनबॉक्स नहीं। पुनर्प्राप्त करने के लिए कोई खाता नहीं। कोई सुन नहीं रहा — हम भी नहीं।</em></p>

  <p><a href="https://github.com/Emn4tor/Seal">github.com/Emn4tor/Seal</a></p>

  <p>
    <img src="https://img.shields.io/badge/rust-1.97+-c9a15c?style=flat-square&amp;labelColor=0e1116&amp;logo=rust&amp;logoColor=e8e3d8" alt="Rust: 1.97+" />
    <img src="https://img.shields.io/badge/tauri-2.11.5-4f8f86?style=flat-square&amp;labelColor=0e1116&amp;logo=tauri&amp;logoColor=e8e3d8" alt="Tauri: 2.11.5" />
    <img src="https://img.shields.io/badge/react-19.2-c9a15c?style=flat-square&amp;labelColor=0e1116&amp;logo=react&amp;logoColor=e8e3d8" alt="React: 19.2" />
    <img src="https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20Windows-4f8f86?style=flat-square&amp;labelColor=0e1116" alt="प्लेटफ़ॉर्म: macOS, Linux, Windows" />
    <img src="https://img.shields.io/badge/encryption-Olm%20/%20Megolm-c9a15c?style=flat-square&amp;labelColor=0e1116" alt="एन्क्रिप्शन: Olm / Megolm" />
    <img src="https://img.shields.io/badge/server%20storage-none-4f8f86?style=flat-square&amp;labelColor=0e1116" alt="सर्वर-साइड संदेश भंडारण: कोई नहीं" />
  </p>
  <p>
    <a href="https://github.com/Emn4tor/Seal/stargazers"><img src="https://img.shields.io/github/stars/Emn4tor/Seal?style=flat-square&amp;color=c9a15c&amp;labelColor=0e1116" alt="GitHub स्टार्स" /></a>
    <a href="https://github.com/Emn4tor/Seal/network/members"><img src="https://img.shields.io/github/forks/Emn4tor/Seal?style=flat-square&amp;color=4f8f86&amp;labelColor=0e1116" alt="GitHub फ़ोर्क्स" /></a>
    <a href="https://github.com/Emn4tor/Seal/issues"><img src="https://img.shields.io/github/issues/Emn4tor/Seal?style=flat-square&amp;color=c9a15c&amp;labelColor=0e1116" alt="GitHub इश्यूज़" /></a>
    <a href="https://github.com/Emn4tor/Seal/commits"><img src="https://img.shields.io/github/last-commit/Emn4tor/Seal?style=flat-square&amp;color=4f8f86&amp;labelColor=0e1116" alt="GitHub अंतिम कमिट" /></a>
    <a href="https://github.com/Emn4tor/Seal"><img src="https://img.shields.io/github/repo-size/Emn4tor/Seal?style=flat-square&amp;color=c9a15c&amp;labelColor=0e1116" alt="GitHub रिपोज़िटरी आकार" /></a>
  </p>
  <p>
    <a href="https://github.com/Emn4tor/Seal/graphs/contributors"><img src="https://img.shields.io/github/contributors/Emn4tor/Seal?style=for-the-badge&amp;color=c9a15c&amp;labelColor=0e1116" alt="योगदानकर्ता" /></a>
    <a href="https://github.com/Emn4tor/Seal/commits"><img src="https://img.shields.io/github/commit-activity/t/Emn4tor/Seal?style=for-the-badge&amp;color=4f8f86&amp;labelColor=0e1116" alt="कुल कमिट" /></a>
  </p>
</div>

संदेश libp2p के माध्यम से सीधे पीयर के बीच यात्रा करते हैं और आपके डिवाइस से बाहर निकलने से पहले Signal-शैली के Olm/Megolm प्रोटोकॉल ([vodozemac](https://github.com/matrix-org/vodozemac) के माध्यम से) से एन्क्रिप्ट किए जाते हैं। इसमें शामिल एकमात्र सर्वर एक छोटी निर्देशिका है जो पीयर को एक-दूसरे का वर्तमान पता खोजने में मदद करती है। यह कभी भी संदेश सामग्री नहीं देखता है, और इसे एक ही कमांड में हटाया जा सकता है।

वास्तव में किन चीज़ों से सुरक्षा मिलती है और कैसे, यह देखने के लिए [`docs/THREAT_MODEL.md`](https://github.com/emn4tor/seal/blob/main/docs/THREAT_MODEL.md) और [`docs/SECURITY.md`](https://github.com/emn4tor/seal/blob/main/docs/SECURITY.md) देखें।

## विषय-सूची

- [स्क्रीनशॉट](#screenshots)
- [विशेषताएँ](#features)
- [यह कैसे काम करता है](#how-it-works)
- [प्रोजेक्ट संरचना](#project-layout)
- [1. पूर्वापेक्षाएँ](#1-prerequisites)
- [2. बिल्डिंग](#2-building)
- [3. इसे डेव मोड में चलाना](#3-running-it-in-dev-mode)
- [4. परीक्षण](#4-testing)
- [5. बैकएंड (डायरेक्टरी सर्वर) सेटअप](#5-backend-directory-server-setup)
- [6. ऐप का उपयोग](#6-using-the-app)

---

## स्क्रीनशॉट

<div align="center">

**पहला रन** — एक नाम चुनें; और कुछ सेट करने की ज़रूरत नहीं।

<img src="https://assets.kitploit.com/production/public/readmes/49626/c45dd83972e6760574f3a07186a511aa3c9b5d544d22aa7f4dd370d38038eb4d.png" width="820" alt="Seal का पहला-रन स्क्रीन: डिस्प्ले-नाम फ़ॉर्म के बगल में एन्क्रिप्शन मॉडल का स्पष्टीकरण, साथ में लॉगिन-पर-लॉन्च टॉगल" />

<br /><br />

**बातचीत** — ग्रुप रेल, संपर्क सूची, और एक एंड-टू-एंड एन्क्रिप्टेड चैट पैन।

<img src="https://assets.kitploit.com/production/public/readmes/49626/fd29b87e22a02fc9a44097d9dc62b9ef74b73fd53d4762bc54ebb165b4ef84e8.png" width="820" alt="Seal में एक डायरेक्ट-मैसेज वार्तालाप, जिसमें ग्रुप रेल, संपर्क सूची और एंड-टू-एंड एन्क्रिप्टेड चैट पैन दिखाया गया है" />

<br /><br />

**सेटिंग्स** — माइक संवेदनशीलता, पुश-टू-टॉक, लॉगिन-पर-लॉन्च, नेटवर्क पहुँच।

<img src="https://assets.kitploit.com/production/public/readmes/49626/425c46d395741ed088ac2c50c178e1e41eeb457487cfbc2c0fa6ab61515f648f.png" width="820" alt="Seal का सेटिंग्स पैनल: माइक संवेदनशीलता, पुश-टू-टॉक, लॉगिन-पर-लॉन्च और नेटवर्क पहुँच" />

</div>

## विशेषताएँ

- **हमेशा एंड-टू-एंड एन्क्रिप्टेड** — हर संदेश आपके डिवाइस से बाहर निकलने से पहले Olm (1:1) या Megolm (समूहों) के साथ सील किया जाता है, [vodozemac](https://github.com/matrix-org/vodozemac) की Double-Ratchet-शैली योजना का उपयोग करते हुए: हर संदेश को अपनी खुद की कुंजी मिलती है।
- **कभी नहीं कोई इनबॉक्स** — संदेश एक सीधे पीयर-टू-पीयर कनेक्शन ([libp2p](https://libp2p.io): QUIC/TCP + Noise, NAT के लिए रिले और होल-पंचिंग के साथ) पर यात्रा करते हैं। यदि प्राप्तकर्ता ऑफ़लाइन है, तो संदेश स्थानीय रूप से प्रतीक्षा करता है और पुनः प्रयास करता है — यह कभी भी किसी और के इंफ्रास्ट्रक्चर पर कतारबद्ध नहीं होता।
- **एक डायरेक्टरी, डेटाबेस नहीं** — इसमें शामिल एकमात्र सर्वर (`crates/directory-server`) एक उपयोगकर्ता ID को वर्तमान नेटवर्क पते पर मैप करता है और कुछ और नहीं। यह संरचनात्मक रूप से संदेश सामग्री पढ़ने में असमर्थ है: इसका `Cargo.toml` उन crates पर निर्भर भी नहीं है जो यह जानते हैं।
- **एक डिवाइस, कई खाते** — पूरी तरह से अलग पहचान (कुंजियाँ, संपर्क, संदेश) जिनके बीच आप बिना पुनः आरंभ किए स्विच कर सकते हैं।
- **वास्तविक सदस्यता परिवर्तन वाले समूह** — प्रति समूह टेक्स्ट और वॉइस चैनल; किसी को हटाने पर समूह की कुंजी घुमा दी जाती है ताकि वे बाद में भेजी गई कोई भी चीज़ न पढ़ सकें।
- **वॉइस, अंतर्निर्मित** — सिस्टम-व्यापी शॉर्टकट पर पुश-टू-टॉक (केवल Seal से नहीं, किसी भी ऐप से काम करता है), समायोज्य माइक संवेदनशीलता, और एक वैकल्पिक वॉइस चेंजर।
- **मेटाडेटा के बिना अटैचमेंट** — EXIF डेटा (GPS स्थान, कैमरा/डिवाइस जानकारी) भेजे जाने से पहले छवियों से हटा दिया जाता है, डिफ़ॉल्ट रूप से चालू।
- **एक वास्तविक पैनिक बटन** — सेटिंग्स → डेटा और गोपनीयता इस डिवाइस पर हर कुंजी, संपर्क और संदेश को तुरंत और अपरिवर्तनीय रूप से हटा देता है, जिसका उन सभी पर शून्य प्रभाव पड़ता है जिनसे आपने बात की है।
- **लॉगिन पर लॉन्च, यदि आप चाहें** — डिफ़ॉल्ट रूप से चालू, सेटिंग्स में बस एक टॉगल दूर।
- **एक कोडबेस, तीन प्लेटफ़ॉर्म** — [Tauri](https://tauri.app) के माध्यम से macOS, Windows और Linux पर नेटिव विंडोज़।

## यह कैसे काम करता है

इस ऐप में दो प्रकार की पहचान हैं, और उन्हें जानबूझकर अलग रखा गया है:

- **आपकी चैट पहचान** एक Ed25519/Curve25519 कुंजीयुग्म है जिसे ऐप पहली बार खोलने पर [vodozemac](https://github.com/matrix-org/vodozemac) द्वारा स्थानीय रूप से उत्पन्न किया जाता है (`identity::Identity`)। आपका सार्वजनिक "user ID" उस कुंजी का फ़िंगरप्रिंट मात्र है (`wire_proto::user_id_from_ed25519`)। इसे किसी सर्वर द्वारा जारी या रद्द नहीं किया जा सकता, क्योंकि इसे बनाने में कोई सर्वर शामिल नहीं है।
- **आपकी नेटवर्क पहचान** एक अलग libp2p कुंजीयुग्म (`PeerId`) है, जिसका उपयोग केवल ट्रांसपोर्ट परत के लिए होता है। यह पुनः आरंभ के बीच बदल सकता है, बिना आपकी चैट पहचान को बिल्कुल प्रभावित किए; दोनों केवल एक उपस्थिति रिकॉर्ड से बंधे होते हैं जिस पर आप स्वयं हस्ताक्षर करते हैं।

किसी को खोजना और वास्तव में उनसे बात करना दो अलग-अलग चरण हैं:```
                     ┌────────────────────────┐
                     │     directory server    │
                     │  (axum + one SQLite     │
                     │   file: users,          │
                     │   presence, group       │
                     │   rosters. Never        │
                     │   message content.)     │
                     └─────────┬───────────────┘
             1. "where is bob  │  2. "here's my current
                 right now?"   │      address" (signed,
                                │      expires in minutes)
                     ┌─────────┴───────────────┐
                     ▼                         ▼
                 ┌───────┐   3. direct libp2p   ┌───────┐
                 │ alice │◄──── connection ────►│  bob  │
                 └───────┘   (Noise + Olm/      └───────┘
                              Megolm encrypted)
```
1. ऐलिस निर्देशिका में बॉब को उसके यूज़र आईडी से खोजती है। इससे उसकी
   सार्वजनिक कुंजियाँ और उसका अंतिम घोषित नेटवर्क पता मिलता है। निर्देशिका में
   यही सब कुछ होता है: सार्वजनिक कुंजियाँ, प्रदर्शन नाम, समूह
   सदस्यता सूचियाँ, और अल्पकालिक पता घोषणाएँ
   (`crates/directory-server`)।
2. ऐलिस सीधे libp2p पर बॉब को डायल करती है (QUIC या TCP+Noise, relay +
   hole-punching के साथ NATs के पीछे पीयर्स के लिए; `crates/net` देखें)। निर्देशिका
   अब पूरी तरह तस्वीर से बाहर है।
3. वास्तविक संदेश **Olm** से एन्क्रिप्ट किया जाता है 1:1 चैट के लिए, या
   **Megolm** से समूह के लिए (`crates/crypto-session`), एक Double-Ratchet-शैली
   योजना जहाँ हर संदेश को अपनी खुद की कुंजी मिलती है, इससे पहले कि
   उसे libp2p कनेक्शन पर रखा जाए। कोई सर्वर-साइड इनबॉक्स नहीं है: यदि बॉब ऑफ़लाइन है,
   संदेश स्थानीय रूप से प्रतीक्षा करता है और पुनः प्रयास किया जाता है, किसी और के
   इंफ्रास्ट्रक्चर पर संग्रहीत नहीं किया जाता।

उपरोक्त सब कुछ `crates/core` के `AppService` द्वारा संचालित होता है, जो
Tauri ऐप के Rust बैकएंड (`apps/desktop/src-tauri`) द्वारा वास्तव में कॉल
किया जाता है; UI कभी भी सीधे नेटवर्क से बात नहीं करता।

## प्रोजेक्ट लेआउट```
crates/
  wire-proto        shared signed-request types for the directory API
  identity          vodozemac identity, OS-keychain key management
  storage           local encrypted store (contacts, messages, groups)
  net               libp2p transport + directory HTTP client
  crypto-session    Olm (1:1) / Megolm (group) session management
  core              orchestrates the above into `AppService` / `ChatNode`
  directory-server  the one server component (axum + SQLite)
apps/desktop         the Tauri + React app
scripts/             build + backend-deployment scripts (§2, §5)
```
## 1. पूर्वापेक्षाएँ

आपको हर प्लेटफ़ॉर्म पर **Rust** और **Node.js** की आवश्यकता है, साथ ही एक प्लेटफ़ॉर्म-विशिष्ट
टूलचेन की भी, जिसकी Tauri को नेटिव विंडो बनाने के लिए ज़रूरत होती है। `storage` और `directory-server`
SQLite को स्रोत से बंडल-संकलित भी करते हैं, जिसके लिए एक साधारण C कंपाइलर की आवश्यकता होती है
(इस प्रोजेक्ट में कहीं भी OpenSSL या अन्य नेटिव क्रिप्टो लाइब्रेरी की आवश्यकता नहीं है)।

सभी प्लेटफ़ॉर्मों पर सामान्य:

- [Rust](https://rustup.rs) (स्थिर चैनल; `rustup` के माध्यम से इंस्टॉल करें, अपने OS पैकेज मैनेजर से नहीं)
- [Node.js](https://nodejs.org) 20+ और npm

<details>
<summary><strong>macOS</strong></summary>```sh
xcode-select --install
```
That's it. Xcode Command Line Tools C कंपाइलर और वे फ्रेमवर्क दोनों प्रदान करते हैं जिनकी Tauri के macOS बैकएंड (WKWebView-आधारित) को आवश्यकता होती है।

</details>

<details>
<summary><strong>Linux</strong></summary>

C कंपाइलर, `pkg-config`, और WebKitGTK/AppIndicator डेव पैकेज इंस्टॉल करें, जिनसे Tauri का Linux बैकएंड लिंक होता है।

Debian/Ubuntu:```sh
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
  libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev pkg-config
```
Fedora:```sh
sudo dnf install webkit2gtk4.1-devel openssl-devel curl wget file \
  libappindicator-gtk3-devel librsvg2-devel pkgconf-pkg-config
sudo dnf group install "C Development Tools and Libraries"
```
वास्तुकला:```sh
sudo pacman -S --needed webkit2gtk-4.1 base-devel curl wget file openssl \
  appmenu-gtk-module libappindicator-gtk3 librsvg pkgconf
```
(Package names shift between Tauri releases: if a build fails looking for a
missing `.pc` file, check the
[current Tauri Linux prerequisites](https://v2.tauri.app/start/prerequisites/)
for your distro.)

</details>

<details>
<summary><strong>Windows</strong></summary>

1. **Microsoft C++ Build Tools** स्थापित करें (Visual Studio Installer →
   "Desktop development with C++" वर्कलोड), जो Tauri के नेटिव शेल और बंडल किए गए SQLite को संकलित करने दोनों के लिए आवश्यक है।
2. **MSVC** Rust टूलचेन स्थापित करें: `rustup default stable-msvc`.
3. **WebView2**: यह Windows 11 और अधिकांश अद्यतित Windows 10 इंस्टॉलों पर पहले से मौजूद होता है; यदि नहीं है, तो Tauri का बिल्ड आपको Evergreen रनटाइम स्थापित करने के लिए संकेत देगा।

</details>

---

## 2. बिल्ड करना

रिपॉज़िटरी रूट से:```sh
# Rust workspace (backend crates + the directory server)
cargo build --workspace --release

# Frontend + the actual desktop app bundle (installer/.app/.exe)
cd apps/desktop
npm install
npm run tauri build
```
`npm run tauri build` रिपॉजिटरी रूट में `target/release/bundle/` के अंतर्गत एक प्लेटफ़ॉर्म-नेटिव इंस्टॉलर बनाता है (यह एक Cargo वर्कस्पेस है, इसलिए Tauri ऐप सहित सभी क्रेट्स एक शीर्ष-स्तरीय `target/` निर्देशिका साझा करते हैं)। क्रॉस-कंपाइलिंग (जैसे macOS से Windows इंस्टॉलर बनाना) सेट नहीं है: प्रत्येक लक्ष्य प्लेटफ़ॉर्म पर बिल्ड करें, या यदि आप CI-निर्मित रिलीज़ चाहते हैं तो Tauri के GitHub Actions वर्कफ़्लो का उपयोग करें।

### या स्क्रिप्ट्स का उपयोग करें

`scripts/` में प्रति प्लेटफ़ॉर्म/आउटपुट एक बिल्ड स्क्रिप्ट है, प्रत्येक स्वतंत्र रूप से चलाने योग्य है और प्रत्येक को वास्तव में कार्यशील आर्टिफैक्ट बनाने के लिए सत्यापित किया गया है:

| स्क्रिप्ट | निर्माण करता है |
|---|---|
| `scripts/build-mac-dmg.sh` | macOS `.dmg` इंस्टॉलर |
| `scripts/build-mac-app.sh` | रॉ macOS `.app` बंडल, कोई इंस्टॉलर नहीं |
| `scripts/build-linux.sh` | Linux `.AppImage` + `.deb` |
| `scripts/build-windows.ps1` | Windows `.msi` + `.exe` (NSIS) |

प्रत्येक केवल `npm run tauri build --bundles <...>` को सही फ़्लैग और प्लेटफ़ॉर्म जाँच के साथ रैप करता है; यदि आपको एक अलग बंडल संयोजन चाहिए तो स्वयं रॉ कमांड चलाएँ (`apps/desktop` से `npx tauri build --help`)।

`scripts/release.sh vX.Y.Z` संस्करण को हर उस स्थान पर बढ़ाता है जहाँ इसे रहना आवश्यक है और कमिट को टैग करता है — देखें [`docs/RELEASING.md`](https://github.com/emn4tor/seal/blob/main/docs/RELEASING.md)। macOS और Linux पर चलता है; कमिट या पुश नहीं करता।

### अपना खुद का "Seal" नेटवर्क बेक करना

सर्वर-चयन स्क्रीन (§3) हमेशा तीन विकल्प दिखाती है: **Seal** (आपका अपना आधिकारिक नेटवर्क), **कस्टम सर्वर**, और नीचे एक छोटा **लोकल टेस्ट सर्वर** लिंक। "Seal" तब तक अक्षम (ग्रे किया हुआ, "इस बिल्ड में अभी सेट नहीं है" के साथ) रहता है जब तक आप *build* समय पर एक URL बेक नहीं करते:```sh
SEAL_DEFAULT_DIRECTORY_URL=https://directory.example.com npm run tauri build
```
एक बार जब आप अपना स्वयं का सर्वर (§5) खड़ा कर लेते हैं और उस पर एक वास्तविक डोमेन इंगित कर लेते हैं, तो इसे सेट करें और पुनर्निर्माण करें: उसके बाद आपके द्वारा वितरित हर प्रति "Seal" को उस URL का उपयोग करके एक वास्तविक, चयन योग्य विकल्प के रूप में दिखाती है, बिना किसी अन्य कोड को छुए। इसे सामान्य/डेव बिल्ड के लिए अनसेट छोड़ दें: इस रेपो द्वारा कोई आधिकारिक सर्वर होस्ट नहीं किया जाता है, इसलिए "Seal" अक्षम रहता है और लोग कस्टम सर्वर या लोकल सर्वर का सहारा लेते हैं, बजाय इसके कि ऐप चुपचाप किसी प्लेसहोल्डर डोमेन की ओर इंगित करे जो वास्तव में कुछ भी नहीं चला रहा है।

---

## 3. डेव मोड में चलाना```sh
cd apps/desktop
npm install
npm run tauri dev
```
यह Vite डेव सर्वर शुरू करता है, Rust बैकएंड को डीबग मोड में कंपाइल करता है, और
फ्रंटएंड पर हॉट-रिलोड के साथ एक नेटिव विंडो खोलता है। पहला बिल्ड पूरे
डिपेंडेंसी ट्री को कंपाइल करता है और कुछ मिनट लेता है; उसके बाद के रन तेज़ होते हैं।

### सर्वर चुनना (पहला रन)

पहली बार लॉन्च करने पर, Seal पूछता है कि कौन-सा डायरेक्टरी सर्वर उपयोग करना है, इस
क्रम में:

- **Seal**: आधिकारिक नेटवर्क, यदि इस बिल्ड में वह शामिल है (देखें
  §2)। जब तक ऐसा न हो, यह अक्षम रहता है; यह रेपो किसी प्लेसहोल्डर डोमेन की ओर
  इशारा करके नहीं भेजा जाता।
- **Custom server**: किसी का भी, जिसमें आपका अपना भी शामिल है (§5)।
- **Local test server**: सबसे नीचे एक छोटा, जानबूझकर कम ज़ोर दिया गया लिंक।
  ऐप का अपना **embedded server** चालू करता है (`127.0.0.1:47100`/`47101`
  बाइंड करता है, डेटा आपके OS की ऐप-डेटा डायरेक्टरी में), जो Seal को
  आज़माने या एक मशीन पर इंस्टेंस टेस्ट करने के लिए ठीक है, वास्तविक डिप्लॉयमेंट नहीं।
  यदि दूसरा इंस्टेंस पाता है कि वे पोर्ट पहले से लिए हुए हैं, तो वह दूसरा सर्वर शुरू
  करने के बजाय पहले इंस्टेंस के सर्वर को ही फिर से उपयोग करता है, जिससे एक ही
  मशीन पर दो इंस्टेंस एक-दूसरे को ढूँढ पाते हैं। यदि "Seal" कॉन्फ़िगर नहीं है और आप
  कुछ और नहीं चुनते हैं, तो यही स्वतः चुना जाता है।

यह चुनाव सहेजा जाता है (`server.json` ऐप के अन्य स्थानीय डेटा के पास) और
हर बाद के लॉन्च पर चुपचाप पुनः उपयोग किया जाता है; इसे Settings → Directory
server से बदलें, जो अगली बार जब आप ऐप शुरू करेंगे तब प्रभावी होगा, न कि चालू
कनेक्शन को हॉट-स्वैप करने की कोशिश करके। स्क्रिप्टेड/डेव उपयोग के लिए, एक
पर्यावरण चर प्रॉम्प्ट को पूरी तरह से छोड़ देता है:```sh
P2P_CHAT_DIRECTORY_URL=https://directory.example.com npm run tauri dev
```
### स्थानीय रूप से दो इंस्टेंस चलाना (वास्तव में मैसेजिंग का परीक्षण करने के लिए)

प्रत्येक इंस्टेंस को अपनी खुद की पहचान की आवश्यकता होती है। Seal मूल रूप से कई खातों का समर्थन करता है
(इस डिवाइस पर सेटिंग्स → खाते), लेकिन एक मशीन पर दो *अलग
प्रक्रियाओं* के लिए, `P2P_CHAT_PROFILE` तेज़ विकल्प है: यह
स्वतः बनाता है (पहली बार) या स्वतः पुनः शुरू करता है (हर बार बाद में) एक खाता
उस नाम के साथ, बिना किसी इंटरैक्शन के, खाता पिकर को पूरी तरह छोड़ते हुए:```sh
# terminal 1
P2P_CHAT_PROFILE=alice npm run tauri dev

# terminal 2
P2P_CHAT_PROFILE=bob npm run tauri dev
```
सर्वर चयन (`server.json`) और खाता सूची (`accounts.json`)
दोनों एक ही मशीन पर प्रोसेसों के बीच साझा होते हैं, प्रति-प्रोफ़ाइल नहीं। आपके द्वारा लॉन्च किया गया पहला इंस्टेंस सर्वर चुनता है, और उसके बाद हर प्रोफ़ाइल
(यहाँ `bob` सहित) उसे चुपचाप पुनः उपयोग करती है। दोनों विंडो एक ही
```

---

[Read more](https://github.com/emn4tor/seal)
टूल डाउनलोड करें