murad.wtf: a night sky made of my servers
murad.wtf is a status page with no charts: it draws a night sky in plain text where stars are page visits, comets are my posts and an eclipse means a service is down. How it works, where to see it and why it knows nothing about you.
murad.wtf is a status page for my public systems, except there are no charts on it. Instead, it draws a night sky in plain text, 80 columns by 24 lines, nothing but characters. One look tells you what happened across my services in the last 24 hours: what people read, what I posted, who replied and whether something went down.

Eleven regions, one per service #
The sky is split into 11 regions, and each one is a service with a Latin constellation name:
- domus: pablomurad.com, this site
- gemini: my Gemini capsule
- talpa: my Gopher hole
- chorus: murad.social
- fornax: my Forgejo, at git.pablomurad.com
- telegraphum: the BBS
- papilio: Bluesky
- malleus: hammer
- alveus: runv.club
- calvaria: skull.black
- cartographus: genmap.app
Talpa is Latin for mole, a good name for a Gopher hole, and fornax is a furnace, where things get forged.
How to read the sky #
Inside each region there are a few kinds of things.
Stars (· + * ✦) are pages that people visited. The more visits, the brighter the star. Each page always lands on the same spot, so the sky stays recognizable from one day to the next, and you start to know where things are. During the day, by São Paulo time, only the bright stars show up, the way a real sky works.
Every region also has one special star (✧) for the service itself. If the service goes down, it turns into ○, an eclipse, and the whole region goes dark. If it's slow or flaky, the star blinks.
Comets (✶━━━) are my posts on murad.social and Bluesky. The head sits in the column for the hour the post went out, from midnight on the left to the next midnight on the right. The more boosts and likes, the longer the tail. When the same post goes to both networks, it becomes a single comet.
Constellations (✦─✦) are posts that got replies: one star for the post and one for each reply, connected by lines.
Satellites (⊹) are recent sessions, like logins on Forgejo or someone connecting to the BBS over SSH or telnet. They orbit the service's star.
Below the sky there's a short caption that sums it all up in English. Right now, as I write this, it says: "in the last 24 hours, 2,935 visits lit 156 stars. the brightest region is fornax. 15 comets crossed the sky... all systems up." On a worse day it might say that murad.social "has been in eclipse since 22:20".
How it works #
The whole thing is one Go program called observatory, running on skullserver, one of my servers. Every 3 hours, a systemd timer starts a collection run that does four things.
First, it reads the logs: nginx for the site, agate for Gemini, gophernicus for Gopher, plus the Forgejo and BBS logs. It picks up exactly where it stopped the last time, so the same visit is never counted twice.
Then it checks every service over the protocol it speaks, HTTP, Gemini, Gopher or plain TCP, and writes down whether it's up, slow or down. A failure gets tested again before it becomes an eclipse. And if everything fails at the same moment, the observatory assumes the problem is the server's own network and records nothing, instead of painting the whole sky black for no reason.
Next, it reads my posts: from murad.social through its API with my token, and from Bluesky through the public API.
Finally, it draws the sky and publishes it in a few formats.
Where to see it #
- The web: murad.wtf shows the sky right now, and stars link to the pages they stand for (the public ones, more on that below).
- The archive: one page per day, like
/sky/2026-10-30/. Once a day is closed, it's never rewritten. - A feed:
/sky.atomgives you one sky per day in your feed reader. - Gemini:
gemini://murad.wtf/ - A terminal:
nc murad.wtf 1900That last one hands you the sky in plain text and hangs up. If port 1900 looks familiar, it's the same one Nex uses, the tiny Gopher-like protocol m15o made for Nightfall City.
What it knows about you: nothing #
A dashboard built from logs could easily become a tracking tool, so the observatory has strict rules about what it keeps. The sky shows movement without knowing who anyone is.
Visitor IP addresses, browsers, user names, referrers and URL parameters are thrown away while the log is being read. They're never written anywhere.
The database only keeps counts per hour and a scrambled code (an HMAC) for each page. Without the secret key, which only root can read, you can't work out which pages were visited.
Bots and uptime monitors don't count as visits, and neither do the observatory's own checks.
Only my own public posts are read. For people who replied, boosted or liked, the only thing stored is the number.
A star only becomes a link if its page is already public: things in the sitemap, the feed, public repositories, files in the capsule. A private repository, for example, never gets a link, so the sky can't leak what isn't meant to be seen.
Why a sky #
Status pages are usually a gray grid of green checkmarks. Analytics dashboards are worse, full of charts and someone else's trackers. murad.wtf is my small web answer to both: one picture that shows, at the same time, what people are reading, what I posted and how it landed, and whether anything broke. No trackers, no JavaScript and no personal data about anyone.
Go look at it at night, São Paulo time. That's when the sky is fullest.