Build1 distinct publisher3 min readUpdated
A new Go project says it survives 5,000 checks by splitting control plane from probes. The more useful part is its accounting of what running nine Kumas actually costs.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A broadcast dashboard has two variables in its cost curve, not one. If full state goes to every connected browser [2], the work is monitors multiplied by open tabs, and it accrues whether or not anyone is looking at the check that just flipped. The wall-display in the NOC counts. So does the tab someone left open on Friday.
The design Cairn offers against that is not the probe architecture the post leads with. It is the ordering: the OpenAPI spec was frozen before the first line of product code, and the dashboard is described as the first API client rather than a privileged one [7]. A client that asks for the rows it renders has a cost tied to the screen. A client that is fed state has a cost tied to the estate. That is the whole difference, and it is a frontend contract, not a distributed systems trick.
The control plane and probe split [14] solves a different problem, which is where checks run: probes register over gRPC, pull assignments, and in solo mode compile into the same binary so you never see them [15]. Useful if you need a check from inside a VPC. Irrelevant to the browser. Two problems are being sold as one.
Then there is the write path nobody costs out. Intervals go down to 20 seconds [10], and at the headline figure of 5,000 monitors [17] the floor interval is 250 heartbeats a second [2]. The default storage is SQLite, one container and one volume, no Redis and no broker [8]. The stack also lists Postgres with Timescale as an option [9]. Those are two different deployments wearing one docker run command, and the post does not say where the line is.
What sharding costs is worth naming precisely, because the import tool is aimed squarely at it: point it at several Kuma databases and it merges them into one install [12]. Per shard you keep a second copy of notification routing in step with the first. Dependency-aware suppression, the thing that stops one dead router paging you forty times [11], cannot reach across a boundary the product does not know exists. Each shard publishes its own status page. None of that shows up in a capacity chart, and all of it shows up at 3am.
The honest ledger on the other side: Kuma has 88k stars and roughly 40 monitor types [1], Cairn enumerates about nine kinds of check [3] and has one maintainer several months in [4]. The 5,000 figure sits in the headline; no measurement of it appears in the post [5]. And the new operational trap is cairn.key, the file that encrypts saved passwords and tokens, without which the database has holes in it [13]. Restore drills that only cover the .db file will pass and still lose your credentials.
For anyone already running a second and third Kuma [3], the artefact that matters is the --dry-run output of the import [12]. It is the only document that tells you which of your checks survive the move, and it costs nothing to generate before you decide.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Cairn watches HTTP and HTTPS endpoints (status code, keyword, JSON path, regex, response time threshold), TCP ports, ICMP, DNS records, Docker containers, gRPC services, push heartbeats for cron jobs, plus TLS certificate and domain registration expiry.
Cairn splits the control plane from the probe: probes are stateless agents that register with the control plane over gRPC and pull their assignments, a split added in week one because it cannot be retrofitted without rewriting the product.
In solo mode the probe is compiled into the same binary and runs in-process; in scaled mode the same binary becomes a control plane with probes reporting from other regions, VPCs or behind a firewall where the agent dials out and no inbound ports are opened, and moving between shapes is a config change and a migration.
Uptime Kuma has 88k stars and roughly 40 monitor types.
The author says he has spent the last several months building Uptime Cairn as an answer to that specific wall.
Cairn notifies over email, Slack, Discord, Telegram, Matrix, ntfy, Gotify, Teams, PagerDuty, Opsgenie, SMS or webhook, and ships Apprise as a meta-provider adding roughly ninety more destinations.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Single self-authored source, detailed but unverified
Everything in the cluster comes from one launch post written by the project's author. The feature, storage, stack and deployment descriptions are specific and internally consistent, and the author is authoritative about his own code, but the two load-bearing quantitative claims - Kuma's 300-600 monitor ceiling and Cairn's 5,000-monitor capacity - have no published measurement, no artefact and no second source. The derived ledger reading that no load test exists is itself wrong against the text, which underlines how thin the verification layer is.
Announcement stage: installable, no third-party use shown
Cairn is at launch: a container image, Compose file and binary exist and a Kuma importer is shipped, but the supplied material reports no users, no deployments, no download or star counts and pre-1.0 status. The only substantial adoption figure in the story belongs to the incumbent, Uptime Kuma. Adoption is therefore measured as very low rather than unknown - the source is explicit that this is a first public description of a young project the author recommends running alongside Kuma rather than replacing it.
Headline outruns published measurement, tempered by candid gaps list
The title promises survival at 5,000 monitors and the dek-level framing treats a rival's 300-600 ceiling as settled, yet neither number is accompanied by any published measurement, and the 5,000-monitor arithmetic implies roughly 250 checks per second that the post never characterises. That is genuine overstatement. It is materially offset by the author's own unusually explicit limitations section - single user account, no RBAC, SSO, audit log, on-call rotation, HA or multi-region checks - and his advice to run Cairn beside Kuma for weeks first, which is the opposite of hype. Net: modestly overstated.
Author-written launch post for his own project against a named incumbent
The sole source is written by the creator of Uptime Cairn, published on a developer-marketing platform, and structured to move readers off a named competitor - including a migration command that ingests the competitor's database. The competitor's stated scaling ceiling is the premise on which the product's value rests, and it is characterised by the party who benefits from it being true. Disclosure is transparent (the author identifies himself and lists missing features), so the incentive is visible rather than hidden, but it is strong and unbalanced by any independent voice.
Low: one interested source, no external corroboration
Descriptive facts about Cairn's design, stack, storage and deployment posture can be stated with reasonable confidence because the author is authoritative about his own project and the details are specific. Confidence in the two claims that matter most for a decision - the incumbent's ceiling and the new system's capacity - is low, because the cluster has one self-interested source, no measured figures, no independent test and no adoption evidence. The internal ledger error about the load test further indicates limited corroboration.
build
Your meter now runs on someone else's machine: signed receipts, fsync, and failing open1 distinct publisher
build
752 Nigerian institutions, shipped as a repo instead of an endpoint1 distinct publisher
build
Offset paging, a PUT and no dependencies: where this Go API's real ceiling sits1 distinct publisher
build
One alert, two causes, four green dashboards: the day the stack agreed and was wrong1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 23, 2026