Open source status page
Logdash is AGPL-3.0 and its status page client, components and Next.js starter are MIT, but the checks and the data run on hosted Logdash, so if the whole stack must run on your own hardware, Uptime Kuma, Gatus or Upptime are the honest picks.
"Open source" means three different things on a status page, and most comparisons blur them. Can you read the code? Can you change the page? Can you run the whole thing, checks included, on a box you own? For Logdash the answers are yes, yes and not yet. Better to say that up front than have a self-hoster find out after an evening of setup.
What is open, and under which license
- The Logdash app, backend and frontend, is AGPL-3.0 in a public GitHub repository. Change it and serve it to others, and you publish your changes.
-
@logdash/status, the typed client with React and Svelte bindings, is MIT, with zero runtime dependencies. - The shadcn components for React and Svelte are MIT. They live in the same package and get copied into your codebase, so after install they are your code.
- The Next.js starter in
templates/status-page-nextis MIT too. Fork it, strip it, ship it. - The data is not something you host. Checks run on Logdash infrastructure, and your page reads them from the public API.
The split is deliberate. The AGPL keeps the monitoring product open. MIT on everything that ends up inside your own app means no copyleft question in your repository when you install a component.
Build an open source status page on top of it
npx shadcn add https://logdash.io/r/react/status-page.json import { StatusPage } from '@/components/status-page';
export default function Page() {
return <StatusPage statusPageId="your-status-page-id" />;
}That renders an overall status banner, a row per monitor with its uptime and 90 days of history bars, styled by the shadcn CSS variables of your Tailwind theme. Svelte gets the same component through shadcn-svelte. The file sits in your repository, so every line of it is yours to change.
Open source status page software, compared
- Uptime Kuma, MIT. The most popular self-hosted monitor, with dozens of notification providers, plus incidents and maintenance windows on its status page. One Docker container.
- Gatus, Apache 2.0. Checks live in a YAML file in git and run from one Go binary, including DNS, TCP, ICMP and certificate checks.
- Upptime, MIT. Runs on GitHub Actions, Issues and Pages, so there is no server at all. Checks run at most every 5 minutes, the Actions schedule floor.
- Cachet. Built around incident communication. The BSD-3-Clause 2.x line has had no release since 2023, and the 3.x rebuild says it is not completely ready for production.
- openstatus, AGPL-3.0 like Logdash. Hosted or self-hosted with Docker, with monitors declared as code.
Logdash vs openstatus
| Feature | Logdash | openstatus |
|---|---|---|
| License | AGPL-3.0 app, MIT client and components | AGPL-3.0 |
| Whole stack on your own hardware | Not today, no one-command install | Documented Docker Compose setup |
| Free hosted plan | 5 monitors, checked every 5 minutes | 1 monitor, checked every 10 minutes |
| Incidents, maintenance, subscribers | Not supported | All three, subscribers by email, RSS or webhook |
| Cheapest plan with your own domain | Pro, $15 a month | Starter, $30 a month |
| Page in your own design | MIT React and Svelte component, Next.js starter | Its own layout, or a fork of the AGPL code |
When openstatus is the better pick
- You want an AGPL-3.0 tool you can run end to end on your own hardware today, from a documented Docker Compose file.
- You post incidents and maintenance windows and want subscribers told by email, RSS or webhook. Logdash has none of the three.
- You want every check run from many regions at once. openstatus runs each monitor from 6 of its 28 regions on Starter and from all 28 on Pro.
Set it up
- Publish a page Add monitors in Logdash and publish a status page. The free plan includes one, with each monitor checked every 5 minutes.
- Pull the code in Run the shadcn command or deploy the Next.js starter, and pass it the status page id.
- Prove it alerts Connect @logdash_uptime_bot in Telegram and stop one service. On the next check the monitor flips to down and the bot sends you a Telegram alert with its name, the status code and the error.