# TorChat Dart SDK (Full Node)

---- A full, cross-platform **Tor/Arti-powered** TorChat written 100% in Dart. Spin it up on Windows, macOS, Linuxβ€”even mobile or Raspberry Piβ€”no C tool-chain, no hassle, and most importantly, run a full node on your phone, without too much strain. > **TL;DR** > `dart pub global activate torchat` > `torchat run` > VoilΓ : a fully-functional relay + client with gRPC endpoints and a sweet high-level SDK. --- ## 🌐 What Is It? TorChat-Dart is the **reference implementation** of the TorChat protocol in pure Dart. It exposes: | Layer | Purpose | |-------|---------| | **gRPC API** | Full power, language-agnostic. Auto-generated protobuf docs & stubs. | | **Dart SDK** | High-level classes (`TorChatClient`, `TorChatRelay`, `GroupChat`, …). | | **Tor/Arti wrapper** | Boots a hidden service automatically; no Tor install required. | Perfect for bots, CLIs, desktop apps, or embedding in Flutter. --- ## πŸš€ Features * **Multi-platform** – runs anywhere Dart VM runs βœ” * **Automatic Tor/Arti** – `dart run torchat:tor` launches a hidden service for you βœ” * **gRPC over onion** – multiplexed, binary, schema-safe βœ” * **Envelope store-and-forward** – offline delivery with spam-PoW βœ” * **Group chat** – federated membership & signed admin events βœ” * **Identity graph** – user profiles + attestations βœ” * **Pluggable back-end** – swap LMDB ⇄ Hive ⇄ SQLite with one flag βœ” --- ## πŸ“¦ Installation ```bash # 1. Install Dart β‰₯ 3.4 # 2. Install TorChat globally dart pub global activate torchat # 3. Run a node torchat run ``` First launch will: 1. Generate an Ed25519 keypair. 2. Start Arti & publish `xxxxxx.onion`. 3. Sync seed-peers and begin relaying. --- ## πŸ”§ Configuration `torchat.yaml` (auto-created in `$HOME/.torchat/`): ```yaml listen_port: 20900 data_dir: ~/.torchat/data tor: enabled: true socks_port: 9050 # 0 = random storage: backend: hive # hive | sqlite | lmdb pow: difficulty: 20 # leading zero bits ``` Change, save, restart β€” settings hot-reload. --- ## πŸ“š gRPC & Protobuf Docs - **Protos** live in [`/proto`](proto/) and are versioned in this repo. - `make protodocs` autogenerates HTML docs for every RPC & message. - Language stubs: `dart run build_runner` (Dart) or `buf generate` (all major languages). ### Quick test with `grpcurl` ```bash grpcurl -plaintext -protoset out/descriptor.pb \ -d '{"value":""}' \ 127.0.0.1:20900 torchat.Relay/GetEnvelopes ``` --- ## πŸ› οΈ Dart SDK snippet ```dart import 'package:torchat/torchat.dart'; void main() async { final node = await TorChat.bootstrap(); // starts Tor + gRPC final client = node.client; await client.sendMessage( recipientPk: '', text: 'Hello, dark net!', ); client.onMessage.listen((msg) { print('${msg.senderShort}: ${msg.text}'); }); } ``` --- ## πŸ—Ί Roadmap | Phase | Goal | ETA | |-------|------|-----| | **v0.1** | MVP relay + direct messages | βœ… now | | **v0.2** | Group chats + signed admin events | Jun 2025 | | **v0.3** | Mobile Flutter wrapper | Q3 2025 | | **v1.0** | Plugin marketplace, file transfer, sticker packs | Q1 2026 | --- ## 🀝 Contributing 1. `git clone https://foss.haveno.com/haveno-network/dart-torchat` 2. `dart pub get` 3. `dart test` 4. PRs welcome β€” keep commits sign-off (`-s`) for DCO. --- ## πŸ›‘ License Apache-2.0