C CortexAI
Autonomous fleet integrity

Your monitor says
200 OK. Your site is broken.

Uptime tools answer one question: did the server respond? Almost every real failure answers it with yes — and then serves an unrendered {{title}}, a database stack trace, a blank shell, or another app entirely. CortexAI finds those, works out why, and fixes them before you find out from a customer.

No credit card. No agent to install. Point it at a URL and it starts working.

cortexai · autonomous cycle · 03:14 AEST
[sweep] 42 properties probed in 21.4s · fleet health 71/100 CRITICAL portal.example.com.au EDGE_ORIGIN_DOWN CDN edge is up, origin returned 521. root cause → PM2 process "portal-api" is stopped; nothing is listening on the port the vhost proxies to. confidence 88 action → pm2 restart portal-api ok (1.2s) verify → HTTP 200 in 240ms HEALED CRITICAL shop.example.com.au UNRENDERED_TEMPLATE Browser tab reads "{{project_title}}". Template engine never ran. action → needs a source change ESCALATED to you HIGH news.example.com.au CONTENT_COLLISION Serving byte-identical content to blog.example.com.au. root cause → both vhosts proxy_pass to 127.0.0.1:3100. action → vhost edit required ESCALATED to you RESOLVED api.example.com.au TLS_EXPIRING cleared — cert renewed 6h ago. [cycle] 1 auto-healed · 2 escalated · 1 auto-resolved · next sweep 04:14

The failures nobody is watching for

Every monitoring product on the market checks whether a request succeeded. That catches the outage you'd have heard about anyway. It is blind to the entire class of failure where the server is perfectly healthy and the page is wrong.

It returned 200

A deploy shipped the template instead of its output. The tab title literally reads {{project_title}}. Status: 200. Uptime: 100%. Every monitor is green.

It's the wrong site

A vhost points at another app's port, so one domain quietly serves a different product. Both are up. Both respond fast. Nothing on the market compares your properties against each other, so nothing notices.

It's empty

The JS bundle 404s, the app never renders, and the server returns a valid HTML document with nothing in it. Response time is excellent — there's nothing to send.

It's leaking

An unhandled exception renders straight to the browser, publishing your file paths, dependency versions and database error text to anyone who loads the URL.

It changed

Something you did not approve is now on the page. No alert exists for "the content is different than it was" — only for "the request failed".

You find out from a customer

Which is the real problem. With ten, forty or a hundred properties, the only person checking each one by eye is you, and only after somebody complains.

27 detectors, built for defects that pass a health check

Each one exists because it catches something real that returns HTTP 200. Run against your fleet, most of them will never fire. The ones that do will tell you something you did not know.

Rendering & integrity

UNRENDERED_TEMPLATE LEAKED_ERROR EMPTY_SHELL PLACEHOLDER_CONTENT DEAD_LINK SILENT_DRIFT

Template syntax visible to users. Stack traces and database errors rendered to the page. A healthy status with an empty body. Lorem ipsum and "coming soon" live in production. Navigation links that 404. Content that changed against the baseline you approved.

Configuration & routing

CONTENT_COLLISION DEFAULT_SERVER_PAGE EDGE_ORIGIN_DOWN HARDCODED_DEV_ENDPOINT CACHE_POLICY_VIOLATION EXCESS_REDIRECTS

Two domains serving the same application. "Welcome to nginx" where your site should be. The CDN up and the origin dead. A localhost:3000 API URL shipped to production. Deploys that don't take effect because HTML is being cached.

Security posture

TLS_EXPIRED TLS_EXPIRING MIXED_CONTENT SOURCEMAP_EXPOSED

Certificates read directly off the socket, so you get the real expiry date rather than whatever a cached header claims. Insecure assets that browsers silently block. Source maps left published beside the production bundle.

Your own invariants

CONTRACT_VIOLATION MISSING_TITLE DEFAULT_TITLE SLOW_ORIGIN

Content Contracts let you declare what must be true: this page must contain the pricing table, must never contain the word "staging", must answer in under 800ms, must send this header. Break one and it's a defect — whatever the status code says.

Then it does something about it

Detection is the easy half. CortexAI runs a closed loop — diagnose, act, verify, resolve — and you choose how far up the ladder you let it climb. You can move back down at any time.

0

Off

Probe and report only. The drift catalogue runs; nothing else does.

1

Diagnose

Every incident gets a root-cause analysis and a ready-to-run fix with a rollback, waiting for your approval. Nothing touches the server until you say so.

2

Assist

Low-risk remediation applies itself — restarting a stopped process, reloading a validated config, re-verifying a URL. Anything heavier waits for you.

Why it can't go wrong the way you're imagining

The obvious objection to an AI with root on your server is that a language model could emit anything. So it doesn't get to. The model never writes a shell command — it selects from a fixed vocabulary of typed primitives, each with a validated argument schema, each executed with an argv array and no shell involved.

  • No shell, no string interpolation, no injection surface
  • No delete, move or overwrite primitive exists at all
  • Nginx is never reloaded before nginx -t passes
  • Two auto-attempts per incident, then it escalates to you
  • A cooldown window stops restart loops
  • Every action, argument and exit code lands in an audit log

An action outside the allowlist isn't run — it becomes a copy-paste block with your name on it. That boundary is the entire safety model, and it holds whether the model behaves or not.

Running in about four minutes

1

Paste your domains

One per line, or Label | https://url. Forty sites import in one go.

2

Run the first sweep

You'll get a fleet health score and a ranked list of what's actually wrong. This is usually the uncomfortable part.

3

Approve baselines

Tell CortexAI which render is the good one. From then on, any unannounced change is a finding.

4

Pick your autonomy level

Start on Diagnose. Move to Autonomous once you've read a few runbooks and trust them.

Pricing

Prices in AUD, per month, GST inclusive. Cancel any time.

Sentinel Free

$0

For a handful of properties

  • 3 properties
  • 2 sweeps a day
  • Full drift catalogue
  • 2 content contracts
  • 7 days of history
  • AI root-cause analysis
  • Self-healing
  • Collision detection
Start free

Sentinel Business

$79 / month

For an estate

  • 250 properties
  • Sweeps every 15 minutes
  • 500 AI analyses a day
  • Full autonomous mode
  • REST API & API keys
  • 1,000 content contracts
  • 2 years of history
  • Priority support
Start on Business

Questions

How is this different from Pingdom, UptimeRobot or Better Stack?

Those answer "did the request succeed?". CortexAI assumes it did and asks what came back. An unrendered template, a leaked stack trace, a blank shell, the wrong application, content that changed since you approved it — all of those are HTTP 200, and all of them are invisible to a status-code monitor. The second difference is that CortexAI acts on what it finds instead of sending you a notification about it.

Do I have to install an agent on my server?

No. Detection is entirely external — it requests your pages the way a visitor does. You only install anything if you want the self-healing tier, which needs CortexAI running on the host it is healing. Detection, diagnosis and runbook generation all work with nothing installed; you just apply the fix yourself.

What actually happens if the AI gets it wrong?

It runs an action from a fixed allowlist or it runs nothing. The worst realistic outcome is a process being restarted that didn't need restarting, or an Nginx reload after a config that already passed validation. There is no primitive for deleting, moving or overwriting anything. After two failed attempts on the same incident it stops trying and escalates to you, and every action it took is in the audit log with its exit code.

Will it flood me with false positives?

Findings are folded into incidents, so a defect that persists across twenty sweeps is one incident with an occurrence count, not twenty alerts. Only high and critical incidents page you, and only once each. Detectors you don't care about can be switched off per property, and the fingerprint that powers drift detection masks volatile content — timestamps, tokens, counters — so normal page activity doesn't register as a change.

Does it need an AI key to be useful?

No. Every defect class has a deterministic playbook behind it, so you get a root cause and an executable runbook with no model involved at all. The language model reads the evidence and sharpens the explanation and the action ordering — it makes the output better, it isn't load-bearing.

What data do you keep?

Response metadata, a structural fingerprint of each page, and short excerpts of text where a defect was found — enough to show you the evidence. Full page bodies are never stored. Retention follows your plan and old probes are trimmed nightly.

Find out what your fleet is actually serving

Three properties, free, no card. The first sweep takes under a minute and tends to surface something you'd rather have known about last month.

Run your first sweep