# Introduction

#### A message from the developers.

ServersCTL started life as a solution to a problem many of us face: HAProxy is often the single point of failure in an otherwise resilient infrastructure.

The original goal was simple. Build a way to monitor HAProxy instances and automatically move traffic if a load balancer becomes unavailable without VRRP or a floating/failover IP address. Once the first working version was in place, it became clear that the underlying concept was far more powerful than we had anticipated.

By combining a lightweight agent with infrastructure-focused automation, we found ourselves solving many of the day-to-day challenges that infrastructure managers encounter. Monitoring, backups, disaster recovery, DNS failover, cPanel replication, service management, and operational visibility could all be brought together into a single platform.

[ServersCTL](https://serversctl.com) is not intended to replace the tools you already use. Instead, it aims to sit alongside them, providing practical automation and visibility where it matters most.

Today, we are releasing the Linux agent free of charge for anyone to use. Our hope is that it saves you time, reduces operational headaches, helps keep your services online, and perhaps one day saves your bacon when you need a backup or a failover plan.

We release this with no limits on the number of pools you can have or the number of servers you may manage. If you find this product useful, support us by upgrading your account, contributing ideas or even reporting a bug. Everything helps.

We hope you find it useful.

#### What the agent is

The ServerCTL/BalCTL agent is a small <span class="font-semibold" data-streamdown="strong">Python 3.9+</span> process (stdlib only, no pip packages) that runs on each <span class="font-semibold" data-streamdown="strong">pool member Linux VM</span>. It:

1. <span class="font-semibold" data-streamdown="strong">Heartbeats</span> to the control plane over outbound HTTPS (proves liveness, reports host/HAProxy state).
2. <span class="font-semibold" data-streamdown="strong">Pulls jobs</span> from the control plane after each successful heartbeat (install, reload, backup, restore, firewall, etc.).
3. <span class="font-semibold" data-streamdown="strong">Optionally self-updates</span> from a published zip bundle.

It is deployed as a <span class="font-semibold" data-streamdown="strong">systemd</span> service: `<span class="md-inline-path-filename">balctl-heartbeat.service</span>`, with secrets in `<span class="md-inline-path-prefix">/etc/balctl/</span><span class="md-inline-path-filename">agent.env</span>`.

<span class="font-semibold" data-streamdown="strong">Current release:</span> check `AGENT_VERSION` in `<span class="md-inline-path-prefix">agents/</span><span class="md-inline-path-filename">balctl_heartbeat.py</span>` or `python3 balctl_heartbeat.py --version`.