MISSION CONTROL GETS AN AGENT July 15, 2026 I have spent the last couple of days making my collection of unnecessary old Internet services considerably more observable. Mission Control now has an Agent. The Agent is a .NET worker running under systemd on my VPS. Its first job was to collect Docker memory and CPU statistics. It currently finds around thirteen containers, including Random Steam Game, RabbitMQ, Uptime Kuma, Beszel, HappyEcho, HappyQOTD, HappyGopher, and HappyFinger. That was useful, but knowing that a container exists is not the same as knowing that its service actually works. So naturally the Agent now speaks four ancient protocols. For HappyEcho it connects to TCP port 7, sends a unique string, and verifies that the exact same bytes come back. For HappyQOTD it connects to port 17 and makes sure it receives a non-empty, reasonably sized quote. For HappyGopher it sends an empty selector to port 70, reads the root menu, and verifies the Gopher response terminator. For HappyFinger it sends an empty query to port 79 and verifies that the public directory response contains actual text and ends correctly. These all run concurrently, along with Docker metric collection. The results are combined into one node snapshot and sent through the same JoyfulReaperLib Mission Control publisher used by the other services. There was one funny problem with HappyEcho. HappyEcho rejects loopback clients by default. That was intentional protection against echo loops, but the Mission Control Agent runs on the same machine and probes 127.0.0.1. I added an option to allow local connections while keeping them blocked by default. The especially ugly reflection problem with Echo is mostly a UDP problem anyway. HappyEcho is TCP-only, has a connection limit, a timeout, and a maximum number of bytes per session. I still have no intention of opening UDP port 7 and summoning some forgotten network demon from 1983. HappyQOTD also grew up surprisingly quickly. It now has a SQLite-backed quote API, daily quote selection, rate limiting, health checks, Docker deployment, a real TCP port 17 server, and Mission Control events. The next step is deployment and verification. Once the updated Agent is running, I want to see a regular stream of node snapshots travel through the Gateway, RabbitMQ, and Archive. After that I need tests and better partial-failure handling so a Docker problem does not hide successful protocol checks. This project started as a place to collect a few application events. It is slowly becoming a control room for every weird thing I run on the Internet. I am completely fine with this. .