Manage a fleet of remote VPS or bare-metal servers from one dashboard. Agents install with one command, heartbeat every few seconds, and let you spread deployments wherever capacity lives.
One-command agent install
curl -fsSL "https://pier.example.com/api/v1/servers/install-script?id=…&token=…" | sudo bash — the dashboard hands you this one-liner, with a one-shot bootstrap token, the moment you add an agent server. Pier registers the server, opens an outbound WebSocket to Core, and reports its first heartbeat in under a second.
Heartbeat + live system metrics
Each agent reports CPU, RAM, disk, network and Docker version on a steady tick. Server location is auto-detected (country / city / country code) so you can see your fleet on a map.
Distribute deployments and replicas
Pin a service to a specific server, let Pier round-robin across the fleet, or use load-balanced replicas to spread one service across multiple agents. Traefik handles routing transparently.
Single binary, no orchestrator
No Kubernetes, no Nomad, no Swarm. Each server runs a tiny Pier agent next to its Docker daemon — the Core does the scheduling and audit logging.
Common questions
How does Pier authenticate agents?
On install, the agent receives a one-time setup token bound to your Pier Core. The token is exchanged for a long-lived API token on first heartbeat; both sides verify each other on every connection.
What happens when an agent goes offline?
The agent_offline alert rule fires after the configured grace period. Replicas on that agent are marked unavailable and Traefik stops routing to them; new deployments are scheduled to healthy agents.
Can I run agents behind NAT?
Yes — agents open an outbound WebSocket to Core, so no inbound port is required on the agent. Only the Core needs a public address.