# Development status


import { Callout } from 'nextra/components';

<Callout type="warning">
  There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with.

This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet.

It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/).
</Callout>

The SDK is still somewhat a work in progress: interfaces are fairly stable but still may change in subsequent releases.

In the future the SDK will be made up of several modules, each of which will allow developers to interact with different parts of Nym infrastructure.

| Module    | Functionality                                                                         | Released |
|-----------|---------------------------------------------------------------------------------------|----------|
| Mixnet    | Create / load clients & keypairs, subscribe to Mixnet events, send & receive messages | ✔️        |
| TcpProxy  | Utilise the TcpProxyClient and TcpProxyServer abstractions for streaming              | ✔️        |
| ClientPool| Create a pool of quickly useable Mixnet clients                                       | ✔️        |
| Ecash     | Create & verify Ecash credentials                                                     | ❌        |
| Validator | Sign & broadcast Nyx blockchain transactions, query the blockchain                    | ❌        |

The `Mixnet` module currently exposes the logic of two clients: the [websocket client](../clients/websocket), and the [socks client](../clients/socks5).

The `TcpProxy` module exposes functionality to set up client/server instances that expose a localhost TcpSocket to read/write to.

The `ClientPool` is a configurable pool of ephemeral clients which can be created as a background process and quickly grabbed.
