---
title: App proxy provider
framework: networkextension
role: collectionGroup
role_heading: API Collection
path: networkextension/app-proxy-provider
---

# App proxy provider

Implement a VPN client for a flow-oriented, custom VPN protocol.

## Overview

Overview A virtual private network (VPN) is a form of network tunnel where a VPN client uses the public internet to create a connection to a VPN server and then passes private network traffic over that connection.  If you want to build a VPN client that implements a flow-oriented, custom VPN protocol—one that works with the data passing through a transmission control protocol (TCP) connection rather than the packets used to transport that data—create an app proxy provider app extension. When the system starts a VPN configuration that uses your app proxy provider, it performs the following steps: Launches your app extension. Instantiates your proxy provider subclass within that app extension. Starts forwarding flows to your provider. Each flow represents either a TCP connection or a conversation over user datagram protocol (UDP). Your provider should to open a tunnel to a VPN server and forward each flow over that tunnel. Similarly, if your provider receives flow data from the tunnel, it should pass that back to the system through the appropriate flow. App proxy providers are one form of per-app VPN, the other being a Packet tunnel provider in source application mode. For detailed information about app proxy provider deployment options, see TN3134: Network Extension provider deployment. note: When a VPN configuration is active, connections use the VPN instead of iCloud Private Relay. Network Extension providers also don’t use iCloud Private Relay.

## Topics

### Essentials

- [Network Extensions Entitlement](bundleresources/entitlements/com.apple.developer.networking.networkextension.md)

### App proxy provider

- [NEAppProxyProvider](networkextension/neappproxyprovider.md)
- [NETunnelProvider](networkextension/netunnelprovider.md)
- [NEProvider](networkextension/neprovider.md)
- [NETunnelNetworkSettings](networkextension/netunnelnetworksettings.md)

### Flow handling

- [NEAppProxyTCPFlow](networkextension/neappproxytcpflow.md)
- [NEAppProxyUDPFlow](networkextension/neappproxyudpflow.md)
- [NEAppProxyFlow](networkextension/neappproxyflow.md)
- [NEFlowMetaData](networkextension/neflowmetadata.md)
- [In-Provider Networking](networkextension/in-provider-networking.md)
- [Handling Flow Copying](networkextension/handling-flow-copying.md)

### VPN configuration

- [NEAppProxyProviderManager](networkextension/neappproxyprovidermanager.md)
- [NETunnelProviderManager](networkextension/netunnelprovidermanager.md)
- [NEVPNManager](networkextension/nevpnmanager.md)
- [NETunnelProviderProtocol](networkextension/netunnelproviderprotocol.md)
- [NEAppRule](networkextension/neapprule.md)
- [VPN On Demand Rules](networkextension/vpn-on-demand-rules.md)

### VPN control

- [NETunnelProviderSession](networkextension/netunnelprovidersession.md)
- [NEVPNConnection](networkextension/nevpnconnection.md)

### Transparent proxy configuration

- [NETransparentProxyManager](networkextension/netransparentproxymanager.md)
- [NETransparentProxyProvider](networkextension/netransparentproxyprovider.md)
- [NETransparentProxyNetworkSettings](networkextension/netransparentproxynetworksettings.md)
- [NENetworkRule](networkextension/nenetworkrule.md)

## See Also

### Virtual private networks

- [Routing your VPN network traffic](networkextension/routing-your-vpn-network-traffic.md)
- [Personal VPN](networkextension/personal-vpn.md)
- [Packet tunnel provider](networkextension/packet-tunnel-provider.md)
