Latin · custos — a guardian; the one who keeps

Most AI service desks are a smarter ticket form.This one guards the gate instead.

Intake, major incident command, self-healing and reporting as one system over one service model. The ticket is a side effect of the work, not the point of it — and the artificial intelligence sits where judgement is genuinely needed, never in the path where something executes.

Open a demo environmentHow it worksNo sign-up. Your own seeded estate, ready in seconds.

Why it is called Custos

Quis custodiet ipsos custodes?

Who will guard the guards themselves?

Juvenal, Satires VI

It is the oldest question in governance, and it is exactly the question a security reviewer asks the moment you tell them software will propose changes to production. Not can it fix things, but what stands between a suggestion and a command that runs.

The answer, in four parts

  1. 01Every action carries a class. Read-only, safe and reversible, stateful, sensitive — and the class determines who may approve it.
  2. 02Nothing runs unattended by default. Automatic execution is opt-in, per action, per configuration item — and the list starts empty.
  3. 03An action that cannot state a machine-checkable success condition before it runs is not eligible to run unattended at all. The database refuses to store one.
  4. 04Every execution writes an immutable record — who proposed it, which policy allowed it, who approved, the exact parameters, the verification, and the rollback if it failed.

A custos was not the person who did the work. He was the one entrusted with the keys — who decided what passed and what did not, and answered for it afterwards. That is the part of this product that matters. The automation is ordinary; every vendor has some. The gate in front of it, and the evidence trail behind it, are what make it safe to point at a production estate.

What you get

Every screenshot below is the running product, captured from the demo environment you can open in the next thirty seconds. Nothing here is a mockup.

The gate

An action that reports success but changes nothing is recorded as a failure.

Both rows ran the same check, against the same configuration item, read from the same source. One expanded the filesystem and the disk fell to 61%. The other returned changed: true and touched nothing, so the disk is still at 90.5% — and the gate says so.

The estate ships that no-op deliberately, as a negative control. If it ever passed, “mandatory verification” would be a slogan.

Gate queue showing one remediation verified and one failed verification
A proposal waiting on a person, above the immutable record of what already ran.full size
Incident command view with a live timeline, blast radius and correlation
Every row names its actor. Two of these came from a model; nothing that decided anything did.full size

Incident command

The timeline is captured as it happens, so the review is a rendering problem.

Signals, correlation, the declaration, the page, the approval, the execution and the verification — each with an actor and a timestamp, written by the thing that did it at the moment it did it.

Correlation ranks candidates by hops, not just coverage. Everything downstream of the real cause explains exactly as many incidents; without proximity you eventually blame the data centre.

Ticket quality

Audit how your people actually document their work.

Sample tickets at random and check them against a rubric you control: resolution notes that say something, a named resolver, stakeholder updates that went out on the cadence promised, emergency changes tied to the incident justifying them.

The score is deterministic, and the seed is stored — so a disagreement about a number is settled by re-running it. A score that changes between runs is not an audit.

Ticket quality audit showing a score and a worst-first breakdown by check
Nineteen checks across incidents, major incidents and changes. Every threshold is a parameter.full size
Natural language question turned into a structured query with the SQL shown
The generated query is shown, so the number can be checked rather than believed.full size

Ask, don’t dashboard

A question becomes a query you can read.

A model never writes SQL. It fills in a small typed query, which code validates against an allowlist and compiles — and if it invents a field, the question is rejected rather than quietly adjusted to fit.

Your organisation is added by the compiler as $1 of every statement. It is not a field the query language has, so no phrasing reaches another tenant.

Intake

Say it or type it. The priority is derived either way.

Free text becomes structured fields, checked against your own service model — an invented system is rejected, never matched to something that looks close.

Priority comes from an impact and urgency matrix, not from the wording. Writing URGENT in capitals does not move it, which is the point.

Intake page with a voice option and a free-text box
Voice is the same path minus the transport, so both reach the same validated draft.full size

What your platform team will ask

It connects to what you already own

ServiceNow, Jira, Confluence, SharePoint, CyberArk, Vault, Ansible, Terraform and the observability stack you already pay for. Every connector ships a Test Connection that reports the scopes it actually found against the scopes it needs, so onboarding is something your platform team finishes in an afternoon rather than a three-week ticket exchange.

Your credentials stay in your vault

Broker mode is the default: point us at CyberArk or Vault and we persist a reference — a safe and object name, or a secret path — never the credential. We ask at execution time, use it, and discard it. Revoking us is a change in your vault, not a support ticket to us. Two fallbacks exist for estates without a vault, and we say plainly which one you are on.

The model proposes. Code decides.

Correlation, deduplication, suppression, routing, SLA computation, policy evaluation, execution and verification are deterministic — no model sits in any of those paths. A language model reads free text into structured fields, drafts a timeline into a post-incident review, and turns a question into a query that is then run by code. A saved rule returns the same answer twice, which is the whole reason for the split.

Nothing counts as fixed until something independent says so

Every automated action declares, before it runs, the condition that will prove it worked — and that condition is read from a source other than the action itself. "The playbook exited zero" is not a result. "The failing health check returns 200 and the error rate has been under baseline for five minutes" is.

See it against a real estate, not a screenshot.

The demo builds you your own environment — around two hundred configuration items with a genuine dependency graph, a year of incident history, correlated storms, and changes that precede failures. Nobody wires production ServiceNow into an evaluation, so the demo environment is built as a product feature rather than a fixture.

Open a demo environmentSimulated systems only. A demo tenant can never reach a real one.