⚠️ Warning: This code is in early stages and is not guaranteed to be stable. If you are interested in integrating with it, we'd love your feedback.
The Outline SDK allows you to:
- Create tools to protect against network-level interference.
- Add network-level interference protection to existing apps, such as content or communication apps.
Multi-Platform | Proven Technology | Composable |
---|---|---|
Supports Android, iOS, Windows, macOS and Linux. | Field-tested in the Outline Client and Server, helping millions to access the internet under harsh conditions. | Designed for modularity and reuse, allowing you to craft custom transports. |
The Outline SDK is built upon a simple basic concepts, defined as interoperable interfaces that allow for composition and easy reuse.
Connections enable communication between two endpoints over an abstract transport. There are two types of connections:
transport.StreamConn
: stream-based connection, like TCP and theSOCK_STREAM
Posix socket type.transport.PacketConn
: datagram-based connection, like UDP and theSOCK_DGRAM
Posix socket type. We use "Packet" instead of "Datagram" because that is the convention in the Go standard library.
Connections can be wrapped to create nested connections over a new transport. For example, a StreamConn
could be over TCP, over TLS over TCP, over HTTP over TLS over TCP, over QUIC, among oter optio