IT-RAT guides/heraldyx The stack All guides Console
a guide · heraldyx

How Heraldyx works, how to run it, what changed.

The Heraldyx room keeps the burst replay, the drawing of the four checks, the sample mail and the short version of each part. This guide keeps the rest of what the room used to say: why the checks run in that order and what changed in them, what a mail may carry and who it names, what the dispatch record proves, who else writes to the log it reads, what shipped in v0.7.0, and the boundaries in full.

at a glance

Heraldyx at a glance.

  • Your agents run on your infrastructure. This is the part that writes to you.
  • One way out: it reads the log, speaks SMTP, and nothing else.
  • Limits: a severity floor, a dedup window of 10 minutes, and 20 mails an hour.
  • Leaves behind: a hash-chained dispatch record.
  • Core: Go, with one direct dependency.
  • Licence: Apache-2.0.

What it is

Every other plane in the stack records what happened. None of them wakes anybody. Heraldyx reads the shared event log the others already write, decides which of those events a human should hear about tonight rather than tomorrow, and sends one mail. It comes from your own box, and it carries links into your own console. It reads a file and sends mail: that narrowness is the design, because this is the one component of the box allowed to open a connection to anything outside it.

under the hood

Four checks, in this order, and the order is the point.

The decision layer is a pure function over an event and a few counters. It performs no I/O at all, which is what makes the awkward cases (a burst, a restart, a clock that moved) testable without a mail server. The last cell of the room's drawing was redrawn after a run on 2026-09-17: the v0.2.3 image sent one notice at the ceiling and then nothing for 28 minutes of high and critical events. Since v0.2.4 a critical passes the ceiling and whatever is held is summarised every ten minutes until the hour turns; the launchers pin v0.7.0 on their main branches.

A hundred and twenty events arrive. Twenty-one messages leave.

The room's replay is a scripted scenario: scripts/burst-demo.sh in the repository feeds 120 events to the real binary with the default limits and counts what comes out. Watch where the other hundred stop. An alerting system that forwards everything teaches its operator to filter the sender to trash, and then the one that mattered is in trash too.

what actually arrives

Four short paragraphs, and three links that are views.

What happened with its numbers, what the box already did about it, what happens if nobody acts, and where to look. Nothing in it is text a model wrote.

The links are views, never actions

A link that acts is an unauthenticated capability held by anyone who sees or forwards the message. Mail gateways also prefetch links, which would fire the action before a human read the sentence next to it. You sign in at the console, and a destructive action asks for your passkey there.

Identifiers and numbers, never content

An event's data can hold anything a producer put there, and some producers sit next to prompts, model output and matched secrets. Mail leaves your perimeter through a server nobody here controls, so the renderer allows twenty-two named keys and then checks the shape of every value on top. A live secret is perfectly identifier-shaped, so the key list is what stands between it and your inbox.

Who is answerable comes from a passport

Not from the event, which carries the agent and who it acted for, and neither of those is the owner. No passport means no owner line rather than a guess: naming the wrong team at three in the morning is worse than naming nobody at all.

afterwards

Every message it sent, sealed, on a volume the planes cannot reach.

"We wrote to you at 03:14, and your mail server took it at 03:14:02" is a claim somebody eventually has to prove, in an argument they did not choose. So every message leaves one hash-chained record behind it, in the same envelope the rest of the stack speaks.

"Accepted", never "delivered"

What the process observes is a mail server taking the message. Whether it reached a mailbox, a spam folder, or a filter that drops it silently is not knowable from here, so the record does not say it.

A chain of one is not "verified"

The first record has no predecessor to hash, so editing it is undetectable. The tool says so instead of reporting a good chain. A check that cannot fail is worse than no check, because it is louder.

It reports, and never repairs

A tool that could mend the chain would be a tool that could forge it. It exits non-zero on a break, so a deployment check can use it directly.

run it

Reading the dispatch record.

heraldyx --journal

The image is distroless: there is no shell in it to read the file with.

Since v0.3.0 a line counts as the source it claims only when the file it came from may carry that source. Each plane's file carries its own name, HERALDYX_STREAMS declares anything else, and a line in the wrong file is refused, counted and raised once as foreign_source; a file nobody declared is raised once as unknown_stream. It does not stop a process that creates a plane's file before that plane does, or a writer forging its own stream: only signing closes those.

who else writes to the log it reads

Two more sources arrived on the bus.

This plane mails about what other planes wrote, so its reach grows when theirs does. Vouchryx reports a delegation issued, denied or revoked, and CostCrew reports spend spikes, budget thresholds and every move its crew makes on a finding. CostCrew's events have their own sentences here. Vouchryx's delegation events have none yet, so a mail about one says the box has no description for the event until one is written.

released 15 October 2026

What the notifier gained in v0.7.0

shipped inwhat it does
v0.7.0A daily pulse mail says the notifier is running and gives the counts it saw, so a quiet box can no longer look like a dead one.
v0.7.0Quiet hours hold alerts below critical every day, in a window the operator sets and in the time zone the operator names.
v0.7.0A maintenance window, opened by hand for up to 24 hours, can hold alerts from one source while that source is being upgraded.
v0.7.0An operator can acknowledge a known condition for four hours by default, seven days at most. Its repeats are counted instead of mailed, and one mail says how many alerts were held when it ends.
v0.7.0A critical is never held, whether by quiet hours, a window or an acknowledgement.

Every release from 1 to 15 October 2026, with what each one shipped, is in the stack's changes for October.

what it does not do

The boundaries, stated rather than discovered at three in the morning.

It does not queue

A message that cannot be delivered is logged, written into the dispatch record as a refusal, and dropped. A retry queue inside the one process allowed out would be the opposite of the design, and the event itself is still in the log, which outlives this process.

It does not talk to any plane

No API, no credential, no client. It holds nothing that could act on an agent. If a fact is not in the event log, heraldyx does not know it.

It does not report anything about a whole organisation

The shared envelope requires an agent id, so a fact about an org has no subject to travel under, and no producer is allowed to invent one to make it fit. Those facts live in the console and in each plane's own API. A mail whose subject line named an agent that had not done the thing would be worse than silence.

It does not carry history

A first run starts at the end of the log. A month of old incidents arriving at once is how an operator learns to filter this sender to trash.

And what is not closed yet

  • Vouchryx's delegation events have no sentences yet, so a mail about one says the box has no description for the event until one is written.
  • The source check does not stop a process that creates a plane's file before that plane does, or a writer forging its own stream: only signing closes those.
  • The record says a mail server accepted a message, never that it was delivered, and the first record of a chain cannot be verified.
  • The burst of 120 events is a scripted scenario for the rules, not a measurement of a real fleet.
next

Back to the room.

The Heraldyx room has the burst replay, the drawing of the four checks and the sample mail, and the guides index has the field itself.