Rust SDK
The crates live in crates/ of the repository:
| Crate | Path | What it does |
|---|---|---|
veilway-proto |
crates/veilway-proto |
Wire formats of the native protocol: keys, chunks, the control channel, subscriptions. Pure code, no IO. |
veilway-transport |
crates/veilway-transport |
The client side of udp-obfs, tls, ws and fronted: it opens a session to a node and carries WireGuard datagrams. |
veilway-engine |
crates/veilway-engine |
The client engine without an OS layer: the race of candidates, session carrying, subscription import and status. |
veilway-wg |
crates/veilway-wg |
A multi-peer WireGuard layer over boringtun, with a WebSocket relay. |
veilway-core |
crates/veilway-core |
The node engine: config v1, routing, quotas, userspace TCP/IP exits and the native transports. |
veilway-api |
crates/veilway-api |
The server side of the control API, on a unix socket. It is not a client. |
veilway-linux, veilway-macos, veilway-windows |
crates/veilway-* |
The client’s layer for each OS: TUN device, routes, kill switch and DNS. |
To use one from another project:
veilway-proto = {git = "https://github.com/veilway-project/veilway"}veilway-transport builds BoringSSL from source, so it needs cmake and a C compiler (and NASM and Ninja on Windows). For a client of the control API, see the TypeScript SDK.