Asty

Microservices Orchestrator with Locality-Aware Autoscaling

Your Services. Where Your Users Are.

Asty places service instances on nodes closest to real traffic. Requests stay local. Latency stays low. Resources stay efficient.

/* request flow */
Client LB (geo) Gateway :80 NATS Service // same node
🎯

Locality-Aware

Traffic in Frankfurt? Services spin up in Frankfurt. No cross-datacenter hops. No wasted latency.

Smart Scaling

Scales on real validated traffic, not bot noise. Gateway filters junk. Autoscaler reacts to what matters.

🔒

Secure by Default

mTLS between nodes. API on loopback only. Secrets in env, never in args. Unprivileged process execution.

📦

Single Binary

Agent and Server in one binary. Leader elected automatically via NATS. No external dependencies besides NATS.

🌐

Multi-Datacenter

Nodes across the globe, one cluster. Geo-diverse redundancy with minimum 3 copies in different DCs.

🔄

Zero-Downtime Deploy

Canary rollout. Automatic health checks. Auto-revert on failure. Rolling updates one instance at a time.

How It Works

📈

Gateway Drives Placement

Gateway runs on every node and reports validated traffic metrics. When real user traffic exceeds the threshold on a node without services, Asty places instances there automatically.

🤖

Bot-Proof Autoscaling

Only authenticated requests that pass rate limiting count toward scaling decisions. Bots and scanners are filtered at the Gateway level and never trigger instance placement.

🛡️

Self-Healing

Baseline of 3 copies per service across different datacenters. If one drops, immediate restoration without cooldown. Geo-diversity always maintained.

⚖️

Aggressive Up, Cautious Down

Scale up in 30 seconds — users shouldn't wait. Scale down after 5 minutes of calm — no flapping from traffic spikes.

📊

Full Observability

Prometheus metrics, structured logs, health monitoring. Built-in Web UI shows nodes, services, scaling history, and live logs.

🔧

NATS-Native

All communication over NATS — already in your stack. No extra ports, no extra protocols. State in JetStream KV. Leader election via JetStream.

Add a Node in One Command

From bare server to running cluster member in under a minute.

$ wget -qO- https://get.asty.dev/setup.sh | \
  A_DOMAIN=nodes.example.com \
  A_DATACENTER=eu-west \
  bash

# installs NATS + Asty, joins cluster via DNS, starts accepting traffic

Ready to Deploy?

Run your services where your users are

Get Started