Most monitoring tools tell you something broke. Argus tells you why. It watches your PCD cluster around the clock, catches failures before they escalate, and when things go wrong — digs through the logs, connects the dots, and comes back with a fix. Not a dashboard. A detective.
Real-time health monitoring and AI diagnostics for Platform9 PCD on-prem clusters.
Before you start, make sure you have:
- Docker + Docker Compose installed on the machine where you'll run Argus
- SSH private key that can reach your PCD cluster's primary node (the same key you'd use to
ssh ubuntu@<cluster-ip>) - Claude API key — get one at console.anthropic.com
1. Clone and configure
git clone git@github.com:platform9/pcd-onprem-argus.git
cd pcd-onprem-argus
cp .env.local.example .env.localGenerate a secure secret and write it into .env.local — this is used to encrypt your SSH keys and credentials at rest:
echo "APP_SECRET=$(openssl rand -hex 32)" >> .env.local2. Start
docker compose up -dArgus is now running at http://localhost:3000.
3. Add your SSH key and cluster
- Go to Settings → SSH Keys → paste or upload the private key that has SSH access to your PCD cluster → Save Key
- Go back to the dashboard → Add Cluster → enter the cluster name, primary node IP, SSH user (usually
ubuntu), and select the key you just added
Argus will connect immediately and start streaming health data.
If you want Argus running persistently on a remote VM (recommended for team use):
1. SSH into your VM and clone the repo
ssh user@your-vm-ip
git clone git@github.com:platform9/pcd-onprem-argus.git
cd pcd-onprem-argus
cp .env.local.example .env.local2. Generate a secret and start
# Generate a secure random secret and write it directly into .env.local
echo "APP_SECRET=$(openssl rand -hex 32)" >> .env.local
docker compose up -dArgus is now accessible at http://your-vm-ip:3000.
3. (Optional) Expose on port 80 with nginx
If you want to access it without the port number, set up a reverse proxy:
server {
listen 80;
server_name your-vm-ip; # or your domain
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Required for SSE (live cluster streaming)
proxy_buffering off;
proxy_read_timeout 86400s;
}
}4. Add your SSH key and cluster — same as step 3 above, just open http://your-vm-ip instead.
- Live cluster health — nodes, pods, airctl region status, streamed every 30 seconds
- 11 alert types — crash loops, OOM, node failures, disk pressure, Vault token expiry, trend detection
- AI diagnostics — ask in plain English; Claude SSHes in, reads logs, and comes back with a root cause and fix
- Resource history — memory, CPU, disk sparklines per node with 1h–24h time windows
- Pod inspection — click any pod for live Events, Describe, or Logs output
- Notifications — Slack webhook and email alerts when incidents fire
- Support bundle — one-click
airctl gen-support-bundlewith progress streaming