Proxylity

Features

Everything you need to build serverless UDP applications.

Proxylity receives, secures and routes your UDP, DTLS and WireGuard traffic, and delivers it to services in your own AWS account. You write the application.

Up to 90% fewer AWS API calls

Batching at the point of ingress, tuned per destination.

Pay for delivered packets

Blocked traffic costs nothing.

Tested to 1M packets per second

The same setup works from a few packets a day to heavy load.

Your data stays under your control

Processing and storage stay in your AWS account. Proxylity routes packets and does not store your payloads.

01 · Build

How do I build on it?

Define a listener, point it at a destination, and write a handler. It deploys like any other serverless app.

  • Infrastructure as code. CloudFormation custom resources for listeners, destinations and client restrictions. Account configuration is retrieved from S3 during deployment.
  • Jump-start with an agent. Use the udp-gateway skill from our skills repository to help your coding agent plan and build your project.
  • Per-developer and per-branch environments spin up as fast as production.
  • Least-privilege roles for each destination keep permissions scoped to the resources it needs.
Read the Quick Start →
template.json · listener resource excerpt
"ProxylityListener": {
  "Type": "Custom::ProxylityUdpGatewayListener",
  "Properties": {
    "ServiceToken": { "Ref": "ProxylityServiceToken" },
    "ApiKey": { "Ref": "ProxylityApiKey" },
    "Protocols": [ "udp" ],
    "Destinations": [
      {
        "Role": {
          "Arn": { "Fn::GetAtt": [ "DestinationRole", "Arn" ] }
        },
        "Batching": {
          "Count": 10,
          "TimeoutInSeconds": 0.1
        },
        "DestinationArn": {
          "Fn::GetAtt": [ "MyLambdaFunction", "Arn" ]
        }
      }
    ]
  }
}
Handler.cs · application logic
public async Task<UdpGatewayReply> Handler(
    UdpGatewayMessage message)
{
    var reading = Parse(message);
    await table.PutItemAsync(reading);
    return message.NoReply(); // no reply needed
}

The resource excerpt uses your account configuration, destination role and Lambda function. Start with a generated template for a complete deployment.

02 · Connect

How do my clients connect?

Clients keep speaking the protocol they already use. With Packet Sources, your application can also initiate outbound UDP traffic.

  • UDP, DTLS 1.2 and 1.3, and WireGuard listeners. Encrypted sessions terminate at the managed edge, delivering application payloads to your AWS destinations.
  • Open WireGuard endpoints accept devices without advance registration, then hand identity to your workflow.
  • Packet Sources send UDP from your application to remote clients without waiting for a request: pushes, keepalives, OTA updates and fan-out.
  • Region-aware delivery keeps replies in-region without custom networking code.

Inbound

Devices, games, embedded clients Proxylity listener Your handler

Outbound

Your application Packet Source Remote clients

Transports

03 · Integrate

Where do my packets go?

Straight into the AWS services you already use, with no message broker in between and permissions you control.

  • 14+ native destinations, each with its own IAM role.
  • Batching is configurable per destination, by count, time window or size. Concurrent batches keep processing moving.
  • Lambda Tenant Isolation supports multi-tenant workloads.
Batching configuration →

04 · Protect

Who gets in, and what can you see?

You decide who can send traffic. Your application processes and stores the delivered data in your own AWS account.

  • Client restrictions by CIDR, reverse-DNS hostname or CPF/DNS policy records instead of a brittle allowlist.
  • Firewall, rate limits and geographic rules filter traffic before you pay for it.
  • Role-based access. Proxylity assumes roles you define and never stores your credentials. Permissions can be scoped to individual resources.
  • Auditable. Every API call made on your behalf appears in CloudTrail.
Client restrictions →

Your data, your account.

Proxylity routes packets without storing your payloads. Delivery uses IAM role assumption, with a unique external ID per account to prevent confused-deputy attacks.

Show the role trust policy
"AssumeRolePolicyDocument": {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": {
          "Fn::FindInMap": [
            "ProxylityConfig", "Account", "ServiceTokenArn"
          ]
        }
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": {
            "Fn::FindInMap": [
              "ProxylityConfig", "Account", "ExternalId"
            ]
          }
        }
      }
    }
  ]
}

Trust-policy excerpt using your Proxylity configuration mapping. Add resource-scoped permissions as described in Access & Permissions.

05 · Run

Will it stay up, and can I see what's happening?

Regional stacks run independently, with metrics and logs delivered to your own CloudWatch.

  • Multi-region with automatic failover, so traffic routes to healthy regions during outages.
  • Regional isolation keeps a failure from cascading.
  • Data residency. Keep processing inside specific geographic boundaries.
  • Clients connect to the nearest regional endpoint.
Why Proxylity? →
In your AWS account
Metrics and logs
CloudWatch
Alarms on spikes, errors, latency
Custom alarms
Client-to-destination tracing
Distributed tracing
Batching efficiency and throughput
Performance analytics
Destination availability
Health checks
Common-case views
Pre-built dashboards

06 · Scale and cost

What happens when my traffic grows?

Nothing you have to manage. A trickle of packets and a flood use the same listener, the same handler and the same configuration.

  • One set of primitives at every scale. No re-architecting as you grow, and nothing to size or provision.
  • Unit cost falls as volume rises. Batching cuts AWS API calls, and volume discounts apply automatically.
  • Less time waiting for a batch. Busier traffic fills batches sooner, so packets wait less until batches are full.
  • Affordable from the first packet. Pay only for packets delivered to your destinations. Blocked traffic is free, and a free tier gets you started.
  • One AWS bill. Billed through AWS Marketplace, with AWS credits supported and detailed usage reporting.
See pricing →
As packet rate rises
Cost per packet goes down
Packets per second →
Latency goes down
Batches full Packets per second →

Illustrative. Shapes show the trend, not measured values.

Same listener, same handler, any rate
Episodic
A few packets a day
Steady
Continuous telemetry and sessions
High volume
Tested to 1,000,000 packets per second

Go deeper

How teams deploy, secure and scale UDP workloads in production.

Your first listener is five minutes away.

Deploy in your own AWS account with a free tier and no credit card.