Other clients
This section helps you reach a go-ricochet server from a stack other than the one in the Go developer guide: an existing go-libp2p host, Dart or Flutter, Node.js, or a client you write yourself.
Two questions decide it
Section titled “Two questions decide it”1. Which transport does the server listen on? UDX, and only UDX. A go-ricochet 1.1.0 server builds its libp2p host with libp2p.NoTransports and adds one transport, go-libp2p-udx-transport. Its addresses look like /ip4/203.0.113.10/udp/55223/udx. TCP, QUIC, WebSocket, WebTransport and WebRTC are not enabled, so a libp2p stack that cannot speak UDX cannot connect, whatever else it supports. On top of UDX the connection is standard libp2p: Noise for security, Yamux for streams. See Transport.
2. Is there a Ricochet client for your language? There are two: pkg/client for Go and the ricochet package for Dart. Anywhere else, you implement the protocols yourself. They are length-prefixed JSON over libp2p streams; see Writing your own client.
Compatibility
Section titled “Compatibility”| Stack | Standard libp2p transports | UDX | Ricochet client |
|---|---|---|---|
| Go (go-libp2p) | No: the server does not listen on TCP, QUIC, WebSocket, WebTransport or WebRTC | Yes: go-libp2p-udx-transport v0.1.8, on go-udx | Yes: pkg/client |
| Dart / Flutter (dart_libp2p) | No | Yes: dart_libp2p’s UDXTransport, on dart_udx 3.0 or later |
Yes: ricochet on pub.dev, 0.2.4 |
| JavaScript (js-libp2p, Node.js) | No | Yes, from source: @stephanfeb/libp2p-udx in js-udx; not on npm yet; Node 22 or later; no browsers |
No: write your own |
| Anything else (rust-libp2p, py-libp2p, …) | No | No: UDX exists for Go, Dart and JavaScript only | No |
Pages in this section
Section titled “Pages in this section”- Go: your own libp2p host: add
pkg/clientto a host you already run, and the options that host needs. - UDX: Go, Dart, JS: build a host that dials a UDX server in each language.
- Dart client: install the
ricochetpackage, send and retrieve, and what it covers compared withpkg/client. - Writing your own client: protocol IDs, framing, request and response shapes, status codes, and a conformance checklist.
The byte-level details are in Protocol IDs and Wire format & status codes.