TorChat Dart SDK, Node & CLI


A full, cross-platform Tor/Arti-powered instant chat messaging system, with security and anti-censorship in mind, written almost 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 SDK is the reference implementation of the TorChat protocol in pure Dart. (and some rust)

It exposes TorChats's:

Layer Purpose
Full P2P Node via gRPC Full power, language-agnostic. Auto-generated protobuf docs & stubs.
Dart SDK High-level classes (TorChatClient, TorChatRelay, GroupChat, …) to assist developers create software with TorChat.
CLI Idealy for simple usage and some basic-level automated shell invoked needs.

Perfect for bots, CLIs, desktop apps, or building more on top of the protocol such as useful decentralised bots. You can read more about that in the documentation.


πŸš€ Features

  • Multi-Platform – runs on any device βœ”
  • Automatic Tor/Arti – dart run torchat:node launches a TorChat node and supports the network βœ”
  • gRPC over onion – multiplexed, binary, schema-safe, anonymous and encrypted transport of your data βœ”
  • Envelope store-and-forward – offline delivery with spam-PoW βœ”
  • Group Chats – semi-federated membership & signed admin events βœ”
  • Identity Graph – user profiles + attestations + reputation βœ”
  • Pluggable back-end – swap LMDB ⇄ Hive ⇄ SQLite with one flag βœ”

πŸ“¦ Installation

# 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 in which the messages you recieve will be encrypted against.
  2. Start Tor and establish circuits securely.
  3. Sync seed-peers, but will take preference over cooperating with other peers and begin relaying, reducing the dependanced of seednodes which are in a lot of ways centralizing the network.

πŸ“š gRPC & Protobuf Docs

  • Protos live in /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).

πŸ› οΈ Dart SDK snippet

import 'package:torchat/torchat.dart';

void main() async {
  final node = await TorChat.bootstrap();       // starts Tor + gRPC
  final client = node.client;

  await client.sendMessage(
    recipientPk: '<hex>',
    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
v2.0 We will develop it with the option to create a full blown social media platform, if enough people use it.

🀝 Contributing

  1. git clone https://foss.haveno.com/tor-project/dart-torchat
  2. dart pub get
  3. dart test
  4. PRs welcome β€” keep commits sign-off (-s) for DCO.

πŸ›‘ License

Apache-2.0