Changelog
ChangelogNetworking

TCP endpoints

Public endpoints now speak raw TCP, not just HTTP. If your product talks the Postgres wire protocol, Redis, MQTT, or anything else over a socket, you can expose it from a customer deployment the same way you expose an API.

const pooler = new alien.Container("pooler")
  .code({ type: "image", image: "ghcr.io/acme/pooler:v1" })
  .port(6432)
  .publicEndpoint("db", 6432, "tcp")
  .permissions("execution")
  .build()

Alien creates the network load balancer, DNS, and TLS inside the customer's cloud, on AWS, GCP, Azure, and plain machines. Clients get one stable address per deployment and connect with their normal drivers — psql, redis-cli, whatever they already use.

The hard part of TCP is deploys. Database connections live for hours, and a rollout that cuts them is an incident. So Alien drains: during a release, each replica is taken out of the load balancer, waits for its open connections to finish, and only then gets replaced.

  • Any protocol — if it runs over TCP, you can expose it
  • Connection draining — rolling updates wait for open connections instead of cutting them
  • Same declaration everywhere — one alien.ts line works on every cloud and locally in alien dev

Read the docs →

Alon Gubkin
Alon