One record, read closely

Anatomy of an event

Everything on this platform is built on one record shape. Detection reads it, response writes it, the auditor re-checks it a year later. This page follows a single event from the machine it happened on to the rule it eventually changed, and shows what it costs at every step.

Reading
Plain language drops the record and keeps the story.
Stop 1 · 11:02:14.318 UTC

It happens on a machine

A web server runs a shell. The kernel writes an audit record about it, in the format the kernel happens to use, with the arguments hex-encoded. Nothing about that record is designed to be read by a machine that also has to read a cloud audit log, a firewall syslog line and a SaaS webhook.

type=EXECVE msg=audit(1787914934.318:41): argc=2 a0="bash" a1=2D69 type=SYSCALL comm="nginx" exe="/usr/sbin/nginx" uid=33 success=yes

The agent's job is not to interpret this. It is to carry it, intact, to the one boundary where every source becomes the same shape.

Stop 2 · at the door

It becomes one shape

Twenty fields, one envelope, one schema version. A process execution, a failed login and a blocked connection all arrive as the same twenty fields, which is the only reason one detection engine can read all three. The taxonomy is four parts — domain, category, type, activity — and it is the routing and correlation key, not a display label.

subject
who or what acted
object
what it acted on
outcome
success, failure, blocked, unknown
severity
five normalised levels

Severity is stored as a number and written out as a word, and it reads both back, because a record that cannot survive a round trip through JSON cannot have its seal verified later. That is a small decision with a long shadow.

Stop 3 · naming

It gets a name it cannot lose

The identifier is derived from the content, so the same content decoded again produces the same identifier. That sounds academic until an agent's uplink drops. It spools telemetry, reconnects, and replays the backlog — the same frame legitimately arrives twice. With a random identifier, every duplicate becomes a distinct event and the outage is paid for in noise. Derived from content, the second delivery carries the identifier it carried the first time.

Kept
A 48-bit millisecond prefix taken from the event's own time, not the wall clock — so identifiers sort by when things happened, and the storage layer can cursor through them.
Declared
Version 8, the layout reserved for hash-derived identifiers. A reader can tell a content-derived name from a random one by looking at it.

The reason it matters this much: detections cite events by identifier, and other events point at their causes by identifier. An empty name is not a harmless blank. It is a pointer that looks like a pointer and resolves to nothing.

Stop 4 · ordering

Two clocks, both kept

When the thing happened and when the platform first saw it are different facts, and machines disagree about the first one. Both are recorded and neither is quietly corrected into the other. A logical clock and a sequence number sit alongside them so that events from hosts whose clocks drift can still be put in a defensible order.

time        2026-08-27T11:02:14.318Z
ingest_time 2026-08-27T11:02:14.906Z  +588ms

That 588 milliseconds is not an error to be smoothed away. It is the transit, and an investigation is allowed to ask about it.

Stop 5 · the seal

It is signed, and it points backwards

The record is rendered to canonical bytes, hashed together with the previous event's hash, and that digest is signed. The signature makes a changed byte detectable. The backward pointer makes an insertion, a deletion or a reorder detectable too — the interesting attack on a log is rarely editing one line, it is removing one.

The digest binds
alg  → which algorithm signed
prev → the previous digest
bytes → the canonical record
Deliberately outside it
The signature itself. Because it is not part of any digest, the chain never has to wait for the signer.
Measured, per event
20.2 µs
canonical render
6.1 µs
hash
37.2 µs
signature
~6 µs
contended section
Only the hash and the pointer swap are serialised. That is what lets one tenant's ingestion scale with cores instead of with one signing key.

If the signer fails, the event keeps its place in the chain and carries no signature. Every verifier then fails it closed and it is flagged unverified rather than dropped — because dropping it would leave a link that the next event still points at, and a silent gap is worse than a visible one.

Stop 6 · storage

It is stored once, and handed out as copies

One store, not one per product. Every capability queries it and none keeps a private copy, which is what makes the same record answer a detection question and an audit question. Reads hand back an independent copy, so no caller can reach through a returned pointer and mutate a sealed record. The original source line stays retrievable by reference, so an argument about interpretation can always be settled against what actually arrived.

Stop 7 · connection

It points at what led to it

Entities are nodes; events are the edges between them. Because each event names its causes, the store is already a graph — nothing has to be assembled into one later. An alert is therefore a piece of that graph rather than a row in a table: a path you can walk, with the events that produced it attached at every step.

http request
nginx
shell spawned
credential read
billing-db reached
Five events, one path. Each one is separately sealed and separately citable.
Stop 8 · the decision

Something is done about it

A world-changing action does not follow directly from a detection. It passes one approval gate, which can allow it, hold it for a person, or refuse it. The gate is told how far the action reaches before it decides, and its reason is recorded in the words it used, not summarised.

Allow
Narrow reach, reversible, inside policy.
Hold
A person decides. A hold that outlives its window is refused, not resurrected.
Refuse
Recorded as a refusal, with the reason. Silence never counts as approval.

The containment itself then becomes an event, in the same twenty fields, sealed into the same chain. What the platform did to your estate is recorded on the same terms as what happened to it.

Stop 9 · the return path

The second machine does not wake anyone

What the analytics layer learned from this event is compiled into something the edge enforces by itself, and it does not go out to the whole estate at once. It reaches a small ring first, and it advances only on evidence: any failed application halts it, and a host that goes quiet after adopting halts it too. Silence holds the rollout rather than advancing it.

This is the whole argument for one platform instead of four that share a login. The next machine to try the same thing is stopped where it stands, and nobody reads an alert about it at two in the morning.

Stop 10 · a year later

The same record answers the auditor

No export, no reconstruction, no second system of record. The event is re-read, its seal is re-verified, and if a link is broken the verification names which one. The answer to "how do you know" is the same object the detection used, which is the only version of that answer that survives being checked.

What this record does not prove

honest limits
Tampering before the seal is outside its reach
The seal proves the record has not changed since the platform sealed it. It says nothing about a source that lied before that boundary. That is addressed by attestation and source trust, and it is a different problem with different limits.
Duplicate delivery is detectable, not automatically removed
Content-derived identifiers make a replayed frame recognisable. Nothing silently discards a second copy at ingestion; de-duplication happens on the read path. Silently dropping records would be a decision we would have to make deliberately and tell you about.
A verifier that cannot check an algorithm flags it
Seals name the algorithm that signed them, so a store can hold more than one generation at once. A verifier that does not implement a newer algorithm marks those records unverified rather than vouching for them. Fail closed, then say so.
A graph edge is only as good as the field that made it
Causal pointers are recorded by the component that produced the event. Where a source cannot tell us what caused what, the path has a gap, and the interface shows a gap rather than inferring a plausible one.
Read the record against your own estate
Trial licences are self-hosted and run 30 days from issue, licensed on daily ingest volume. One per legal entity.
The specimen
One process execution, as recorded
sealed
verified
{
"id": "0192f0b4-6c2e-8a41-9f77-3d5e1c8b0a24",
"schema": "aether.event/1",
"time": "2026-08-27T11:02:14.318Z",
"ingest_time": "2026-08-27T11:02:14.906Z",
"hlc": "1787914934318:41:web-07",
"seq": 90417338,
"observer": { "id": "web-07", "kind": "agent", "site": "bom-1" },
"class": { "domain": "it", "category": "process",
          "type": "exec", "activity": "start" },
"severity": "high",
"outcome": "success",
"subject": { "kind": "process",
           "ref": "web-07/nginx[1184]" },
"object": { "kind": "process",
         "ref": "web-07/bash[28714]" },
"src": { "ip": "10.4.12.7", "host": "web-07" },
"attributes": { "exe": "/bin/bash",
              "parent_exe": "/usr/sbin/nginx" },
"raw_ref": "wal/2026/08/27/11/0192f0b4.raw",
"causal_parent": [ "0192f0b4-6a11-8c02-…" ],
"labels": { "compartment": "prod" },
"integrity_seal": { "alg": "ed25519",
                  "key": "seal-2026q3",
                  "sig": "MEUCIQD8f2…",
                  "prev": "9f2c41ba…d41a" }
}
Any field, closer up
Twenty fields carry every event on the platform. Select one to read what it is for, and what keeping it honestly costs.
Values are a modelled scenario in the real record shape. Field names, types and the seal structure are the shipping contract.
The platform
All 88 capabilities Capability atlas Anatomy of an event Integrations Platform support
Commercial
Pricing Sizing your estate Trial licences
Evidence
Proof Honest limits Trust Security Changelog
Who it is for
For partners For auditors Working here
Learn
Resources Research Coverage gates Academy Glossary Essays
Tools
Check a message Stop a report