Check the ledger for silence
Read the ledger for bursts, spikes and silence in lease and credential events, and run the check from your own scheduler.
watchdog.check
Read the ledger for bursts, spikes and silence in lease and credential events, and run the check from your own scheduler.
watchdog.checkPut admission in front of your MCP servers, repositories, SaaS tools and cloud accounts. Every agent gets a lease or a reason – and you keep the lever to stop any of them.
A compromised coordinator may not mint in a flood. It may stop writing about what it mints. The watchdog reads the ledger, not the coordinator's snapshot, and raises findings for lease grants and credential issuance.
The service keeps no state, so it holds no baseline between calls, and it is not scheduled. It returns findings and sends nothing. If events are never written, only a went-silent finding betrays it, and only while other traffic continues.
The code reads the key from INTRAMEDIAL_KEY. Keep it in your shell or your secret store, never in a file you commit. Calls that need a signed-in person cannot use a key: the console makes them.
The route takes no required input. It returns findings, how many events it scanned and how many were background.
A went-silent finding for the credential family.
{
"at": "2026-11-01T09:15:00.000Z",
"findings": [
{
"code": "went-silent",
"family": "credential",
"actor": null,
: ,
: ,
:
}
],
: ,
: ,
: { : [], : [, ] }
}watchdog.checkwatchdog-check
curl -sS https://api.intramedial.com/api/v1/acp/watchdog/check \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/watchdog/check", {
headers: { Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`, },
});
console.log(res.status, await res.json());import os, requests
res = requests.get(
"https://api.intramedial.com/api/v1/acp/watchdog/check",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
print(res.status_code, res.json())A finding is rate-spike (the newest bucket at least four times the median of the earlier ones), burst (one actor took ten events of one family inside 5,000 ms) or went-silent (a family absent for 15 minutes while at least three other ledger events arrived). A quiet ledger raises none.
Send nowMs and a tuning object, such as quietMs, to judge against a fixed clock. They apply to that one call only, nothing is stored.
{
"nowMs": 1793523600000,
"tuning": { "quietMs": 600000 }
}Nothing calls the check for you and it alerts no one, so run it from cron and send the findings where your team looks. The service keeps no state, so each call is judged on the ledger as it stands.
# crontab -e: every 15 minutes. Nothing else calls the check, and it sends nothing itself.
*/15 * * * * curl -sS https://api.intramedial.com/api/v1/acp/watchdog/check -H "Authorization: Bearer $INTRAMEDIAL_KEY" | jq -e '.findings | length == 0' > /dev/null || echo "watchdog finding"Copied from: /docs/watchdog-check
The ledger is append-only and sealed under Merkle roots. The time on an entry is Intramedial's own clock, and a signed bundle can be checked offline with the published key.
Hold a lease on a role, assume it through the plane for a short credential, use it and release the lease.
iam.assumecoordination.leaseSend nine datasets, each with a completeness declaration, then read the eight metrics and the ranked recommendations to move resources from observe to enforce.
conflict.audit-latestStop an agent with coordination.halt so admission answers quarantine, check that it does, and lift the stop when it is safe.
coordination.haltcoordination.quarantineOne short email when we add recipes to the cookbook. No other mail, and you can unsubscribe from any message.
No key or account: Try it on the coordination.admit module page runs the real kernel in your browser. Use a workspace key for your own workspace.