47 lines
2.8 KiB
Plaintext
47 lines
2.8 KiB
Plaintext
---
|
|
title: "Native and Desktop App Integration"
|
|
description: "Integrate privacy into native desktop apps and CLIs using the Nym Rust SDK. Choose between end-to-end mixnet messaging or TCP proxy approaches."
|
|
schemaType: "TechArticle"
|
|
section: "Developers"
|
|
lastUpdated: "2026-03-15"
|
|
---
|
|
|
|
import { Callout } from 'nextra/components';
|
|
|
|
# Native / Desktop Apps
|
|
|
|
Desktop apps and CLIs integrate with two broad approaches: embedding Nym clients on both sides of the communication (E2E), or using the Mixnet as a proxy to reach external services.
|
|
|
|
## Mixnet End-To-End
|
|
Both sides of your app run Nym clients. All traffic stays Sphinx-encrypted the entire way. Works for peer-to-peer setups or any case where you control both ends.
|
|
|
|

|
|
|
|
| SDK Module | What it does | Status | Links |
|
|
|---|---|---|---|
|
|
| **Stream** | `AsyncRead + AsyncWrite` byte streams multiplexed over the mixnet — the closest analogue to TCP sockets | Recommended | [docs](/developers/rust/stream) · [tutorial](/developers/rust/stream/tutorial) |
|
|
| **Mixnet** | Raw message API and `MixnetClient` — full control over the communication model | Stable | [docs](/developers/rust/mixnet) · [tutorial](/developers/rust/mixnet/tutorial) |
|
|
| **Client Pool** | Pre-connected client pool for bursty workloads | Stable | [docs](/developers/rust/client-pool) |
|
|
| **TcpProxy** | Localhost TCP sockets that proxy traffic through the mixnet | Unmaintained | [docs](/developers/rust/tcpproxy) |
|
|
|
|
<Callout type="error">
|
|
**TcpProxy is unmaintained.** Use the [Stream module](/developers/rust/stream) for new projects.
|
|
</Callout>
|
|
|
|
## Mixnet-As-Proxy
|
|
For cases where you only control the client side and need to reach a third-party service such as a blockchain RPC or remote API.
|
|
|
|

|
|
|
|
<Callout type="warning">
|
|
Traffic is Sphinx-encrypted until the Exit Gateway, where it's unwrapped into HTTPS ([Network Requester](/network/infrastructure/exit-services#network-requester)) or raw IP ([IP Packet Router](/network/infrastructure/exit-services#ip-packet-router)). The last hop to the remote host **travels as normal internet traffic**. Use TLS or another encryption layer to protect the final hop.
|
|
</Callout>
|
|
|
|
| Standalone Crate | What it does | Links |
|
|
|---|---|---|
|
|
| **`smolmix`** | Userspace IP tunnel — `TcpStream` and `UdpSocket` over the mixnet, compatible with the entire async Rust ecosystem. Also serves as the core for companion crates that plug into specific frameworks (e.g. hyper connectors, DNS resolvers) | [docs](/developers/smolmix) |
|
|
|
|
| SDK Module | What it does | Links |
|
|
|---|---|---|
|
|
| **SOCKS Client** | SOCKS4/4a/5 proxy via the Exit Gateway's Network Requester — works with any SOCKS-capable application without code changes, just point it at the local proxy | [docs](/developers/rust/mixnet) |
|