Skip to content

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.

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.

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
  • Go: your own libp2p host: add pkg/client to 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 ricochet package, send and retrieve, and what it covers compared with pkg/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.