I’m pleased to announce the public release of Stakeout v4 as fully open source software under the Apache 2.0 license. Stakeout is a simple, self-hosted application for HTTP(S) availability monitoring and automatic web screenshots. If you’re looking for Nagios, use Nagios — Stakeout is deliberately minimal and answers “Is everything up!?” in a concise and visually useful layout.
And you can even set up multiple dashboards with direct deep permalinks for users.
Here are a few screenshots of an example deployment in browser dark mode. Color coded traffic signals are used when screenshots aren’t enabled for a service.

And the WYSIWYG controls when in edit mode:

What’s in Stakeout v4
- Stakeout Server – Has had a substantial internal upgrade to Ruby 4, Rails 8, Postgres 18, and a move from Good Job to Solid Queue for background job processing. Screenshots are now handled directly by the Browserless Chrome image for reliable web page screenshot captures, and the stack is wired for production with a single `docker compose` file that brings up the UI, API server, worker, headless Chrome container, and PostgreSQL. GitHub Docker Hub
- Stakeout UI – Now with system dark/light/automatic theme support, refresh enabled by default, and a simplified feature set. The frontend talks to the server API and provides the clean web dashboard. (Note: ICMP checks have been completely removed from Stakeout v4, and never really worked well in the first place when deployed via containers, a.k.a. the Right Way.) GitHub Docker Hub
- Both projects are now also built and released for multiple CPU architectures (amd64 and arm64) and published to Docker Hub, also as free software under the Apache 2 license.
What’s Happening Now, Not 6 Months Ago
Stakeout does not track historical availability results, nor any form of rolling availability statistics. It’s not only out of scope, but architecturally not optimal for Stakeout’s goals.
In fact, Stakeout doesn’t even check service statuses unless someone is actively observing a dashboard. If no one is visiting the dashboard — or, more accurately, polling the server API for the dashboard data — the server doesn’t waste the compute resources to schedule and run the checks. It would be a tree falling in the words with no one to hear it.
This is especially important since the vast majority of Stakeout’s CPU load is consumed by the server-level opt-in screenshotting, which uses a headless instance Chrome. If you’re visiting an idle dashboard that hasn’t been updated in a while, there is a “Request Refresh” button that immediate enqueues a job to check if data needs to be updated.
There’s also a “5 Second Refresh” option when the user enables Developer Mode, though I don’t recommend it for normal use since the constant screenshot downloads use 12x the bandwidth the 1-minute refreshes. Plus, services are never checked more frequently than 1 minute. So you can mash “Request Request” as much as you want, but them data will still take a minute even if the UI nags the server every 5 seconds.
Deploy It
A complete Docker Compose example is available for your customization at: https://github.com/preston/stakeout-server/blob/master/docker-compose.yml
docker compose -f docker-compose.yml up --pull always --remove-orphans
Stakeout is provided under the **Apache 2.0** license. Feedback, issues, and contributions are welcome on GitHub.





