Live health
Obelisk exposes a real health endpoint at /healthz. It's what our own watchdog and any external monitor probe. We deliberately don't paint a fake live-uptime percentage here — we'd rather tell you exactly how the system is built to stay up and recover.
Recovery targets
Obelisk is engineered for fast disaster recovery rather than the cost of a permanently-running hot standby:
| Objective | Target |
|---|---|
| RTO — time to restore service after total loss | ~15 minutes |
| RPO — maximum data at risk | ≤ 1 day (tighter with a more frequent backup timer) |
Lose the entire host and a clean instance restores from an off-box backup, verifies every file's hash, and takes over the address — minutes to cutover, not hours.
How availability is protected
- Daily off-box encrypted backups to Cloudflare R2. critical state (identity DB, receipts, issuance log, client and founder records) is bundled, passphrase-encrypted (PBKDF2 + AES-256-GCM) with an integrity-checked manifest, and shipped off the box. Restore verifies every file's hash and refuses a tampered or corrupt backup — it fails closed.
- Self-healing health watchdog. a timer probes
/healthzevery minute and auto-restarts a wedged or crashed process, so a hung instance recovers without a human in the loop. - Host-native safeguards. automated whole-box snapshots plus delete- and rebuild-protection backstop the server against an accidental wipe, with an instant address cutover so a rebuilt box takes over without waiting on DNS.
- External monitoring. an independent uptime probe watches
/healthzfrom outside, so a total outage is caught even if the box can't report on itself.
Verifiable transparency
Every security-relevant event in Obelisk lands in an append-only, hash-chained ledger, and each ledger's Merkle head is anchored and published — the same idea as Certificate Transparency, applied to auth. You don't have to trust that our receipts are tamper-evident; you can check:
- Fetch
/.well-known/obelisk-transparency.jsonand pinheadAnchorHash. - Re-fetch any time later: entry counts must only grow and heads must chain forward. A shrinking or rewritten head is cryptographic proof of tampering.
- The anchor store's own head is mirrored off this server, so even the box operator can't rewrite history silently.
| Ledger | Entries | Head |
|---|---|---|
receipts.jsonl | 3141 | 382e032088223621… |
issuance.jsonl | 12 | 0331745956c1736e… |
Head e9f55ff26e212e88… · 34 anchors · anchored 2026-08-01T02:51:40.753Z
The honest caveat
Today Obelisk runs on a single well-protected host with fast disaster recovery — a deliberate trade that keeps the service lean while still surviving a total-loss event in about fifteen minutes. A second always-on box (true zero-downtime high availability with a 99.99% SLA) is the upgrade we add when a customer's contract requires it. We'd rather tell you exactly where the line is than imply an SLA we don't yet run.
Need a committed availability SLA or a specific data-residency posture? Talk to us — it's a configuration conversation, not a rebuild.