DevOps desktop app

Polier

A desktop control center for my servers—watch every Geruest website live, deploy Docker stacks, back up PostgreSQL databases and open an SSH terminal, all from one window.

Where it started: Server Overwatch

Overview

The problem it solves for me is simple: I can see at a glance whether my websites are up, update my Docker stacks, and dump a database before I change it or just to have a backup while I test things. The terminal is the part I use most when I only need to run updates or want to check the containers myself.

Monitoring

Probes run in parallel (four at a time) on a configurable interval. Targets that fail back off to 30, 60 and then 120 seconds, so a dead server doesn't flood the network.

Servers & databases

The servers tab shows each remote host with its compose status. Deploy syncs the compose folder with rsync, Update runs docker compose pull and restarts the stack, and Start/Stop control the containers. A server name turns red if its SSH key, host or compose file is missing.

Integrated terminal

Open Terminal starts ssh in a real pseudo-terminal (xterm-256color) inside a new tab, so tools like htop, vim, less or docker logs -f work as expected. Several sessions can be open at once, with scrollback and copy/paste.

Overview

Polier is a desktop app written in C# with Avalonia (MVVM). It combines two jobs I used to do with a handful of scripts and terminal windows: monitoring my Geruest websites and managing the Docker servers they run on.

The problem it solves for me is simple: I can see at a glance whether my websites are up, update my Docker stacks, and dump a database before I change it or just to have a backup while I test things. The terminal is the part I use most when I only need to run updates or want to check the containers myself.

Polier is the evolution of Server Overwatch, my first attempt at this in Flutter. I pivoted to C# because it is the language I work with every day as an industrial software engineer at HID. Instead of only checking if a server answers, Polier reads real runtime metrics from Geruest and can act on the server directly.

The name fits the stack: a Polier is the foreman on a construction site, and Geruest means scaffolding. Polier keeps an eye on everything built with Geruest.

The whole setup lives in a single polier.json. On every start, Polier scans the workspace for docker-compose.yml files, detects PostgreSQL databases from the compose files and finds monitoring targets from the Traefik Host(...) labels, so new websites show up without manual configuration.

Monitoring

The monitoring tab lists every website with a status dot, host, response time and a health pill. Selecting one opens a detail card with the full breakdown from the Geruest /status route: uptime, requests, errors, CPU, memory and disk usage, traffic, server-side response times, request queue and a latency sparkline.

Probes run in parallel (four at a time) on a configurable interval. Targets that fail back off to 30, 60 and then 120 seconds, so a dead server doesn't flood the network.

Polier monitoring tab with Geruest status details

Servers & databases

The servers tab shows each remote host with its compose status. Deploy syncs the compose folder with rsync, Update runs docker compose pull and restarts the stack, and Start/Stop control the containers. A server name turns red if its SSH key, host or compose file is missing.

Every PostgreSQL database can be dumped to the local machine, restored or rebuilt from its init SQL. Destructive actions require typing the database name, Rebuild always dumps first, and dumps are written as .part files and only renamed on success. Every operation is appended to an audit log.

Polier servers tab with database dumps

Integrated terminal

Open Terminal starts ssh in a real pseudo-terminal (xterm-256color) inside a new tab, so tools like htop, vim, less or docker logs -f work as expected. Several sessions can be open at once, with scrollback and copy/paste.
Polier integrated SSH terminal tab
Back to the list of projects