Skip to main content
The AlgoVoi Security Suite protects an agentic payment stack in two layers over one verifiable evidence spine. Layer 1 secures input integrity: it stops malformed and resource hostile payloads before they reach canonicalization. Layer 2 is runtime edge defence: it decides who, and what, may reach the service at all. What sets the suite apart from a conventional gateway or WAF is the spine. Every allow and deny is a Falcon-1024 (optionally hybrid ML-DSA-65) signed, content addressed, hash linked decision that the Compliance Command Center ingests. So you can prove, offline and after the fact, what your defences admitted, what they refused, and under exactly which policy. The geo and rate mechanics are commodity. The verifiable, post quantum signed, no PII evidence is not.

The tools

ToolLayerTierPackageWhat it does
Substrate Guard1, input integrityOpen (Apache 2.0)algovoi-substrate-guardDeterministic input bounds run before canonicalization: size, depth, object keys, array length, string length, total nodes, number safety. The limits in force are content addressed (profile_ref).
Substrate Guard Pro1, input integrityCommercialalgovoi-substrate-guard-proEverything in the open tier, plus a UTF-8 string safety bound (rejects lone surrogates and non scalar code units), and every admit or reject recorded as a signed, content addressed admission decision.
Edge Sentinel2, runtime edgeCommercialalgovoi-edge-sentinelIP, geo and ASN blocking; rate and velocity limiting; identity allow and deny; replay, nonce and freshness. First block wins, fail closed. Every decision signed, with a no PII subject.
Open foundation, commercial depth. Substrate Guard is open source (pip install algovoi-substrate-guard, npm install @algovoi/substrate-guard), Python and TypeScript byte for byte identical. Substrate Guard Pro and Edge Sentinel are commercial products under the AlgoVoi Commercial Licence; the open guard composes straight into the Pro tier.

Layer 1: input integrity

Two tools, both running before any RFC 8785 JCS or SHA-256 work touches the payload. They either accept, or reject with a named code. They never truncate and never repair.

Substrate Guard (open)

A deterministic, structural input bounds gate. Every bound is a pure property of the parsed value (depth, count, length), so independent implementations enforce it identically. The bounds in force are content addressed by profile_ref, so a record can prove which limits admitted it. See the full Substrate Guard page.

Substrate Guard Pro (commercial)

Substrate Guard Pro keeps every bound of the open tier and adds a string safety bound: a string (value or object key) that is not valid UTF-8, such as a lone surrogate, is rejected with REJECT_INVALID_UTF8 before canonicalization, so every conforming canonicalizer behaves identically on it. Each evaluation is then recorded as a Falcon-1024 (optionally hybrid ML-DSA-65) signed, hash linked admission decision, bound to the profile_ref in force and, on admit, to the value’s canonical content address (subject_ref). A rejected value is never canonicalized and never carried, so the record is no PII.
Reject codeBound exceeded
REJECT_OVER_SIZEcanonical UTF-8 size
REJECT_OVER_DEPTHnesting depth
REJECT_TOO_MANY_KEYSobject keys
REJECT_OVER_ARRAYarray length
REJECT_OVER_STRINGstring or key length
REJECT_OVER_NODEStotal nodes
REJECT_UNSAFE_NUMBERinteger outside the safe range, or non finite
REJECT_INVALID_UTF8lone surrogate or non scalar code unit (Pro)

Layer 2: runtime edge defence

Edge Sentinel (commercial)

Edge Sentinel runs four runtime checks ahead of the service, first block wins, fail closed. It is deliberately a runtime layer: it is stateful (rate counters, a nonce cache) and environment aware (the client IP, a geo dataset, a clock). It is not claimed as a substrate or byte parity property; that determinism guarantee lives in Layer 1. What Edge Sentinel adds over a commodity WAF is that every allow and deny is offline verifiable, signed evidence bound to a content addressed policy (policy_ref), with a no PII subject (the IP, agent DID, key and wallet are hash folded; country and ASN stay in the clear for audit).
CheckBlocks onReject codes
IP, geo, ASNcountry, ASN, IP range (allow list or deny list)BLOCK_GEO_COUNTRY, BLOCK_GEO_ASN, BLOCK_IP_CIDR, BLOCK_GEO_NOT_ALLOWLISTED
Rate, velocitysliding window request count per IP or keyBLOCK_RATE_EXCEEDED
Identityagent DID, key id, walletBLOCK_DID_DENIED, BLOCK_KEY_DENIED, BLOCK_WALLET_DENIED, BLOCK_DID_NOT_ALLOWLISTED
Replay, freshnessreplayed nonce, stale or unparseable timestamp, missing nonceBLOCK_REPLAY, BLOCK_STALE, BLOCK_MISSING_NONCE
It ships as an ASGI middleware (a block returns 403 with the named reason code, the decision already recorded) and as an embeddable evaluator. Geo resolution is pluggable, the signing key is injected, the decision store is pluggable (SQLite or PostgreSQL), and licence enforcement is offline and fail closed.

One verifiable spine

Both layers emit the same decision shape: a Falcon-1024 (optionally hybrid ML-DSA-65) signed envelope, hash linked into an append only chain (prev_entry_hash), exported as the no PII evidence pack the Compliance Command Center verifies offline. Altering or dropping one decision breaks the chain from that point. In the Command Center the two chains surface as:
ChainEntry typePosture label
Substrate Guard Pro admission decisionsguard_decisionSubstrate Guard, admission decisions
Edge Sentinel allow and deny decisionsedge_decisionEdge Sentinel, allow and deny decisions

Honest scope

Layer 1 is a deterministic, structural property of the payload, reproducible byte for byte across independent implementations: that is what makes it a substrate guarantee. Layer 2 is runtime: stateful and environment aware, and presented as such, never as a byte parity claim. Keeping that line sharp is what keeps the substrate claims credible. Neither layer adds a new cryptographic primitive over the frozen Layer 1 substrate; both reuse the RFC 8785 JCS canonicalisation, SHA-256, and the Falcon and ML-DSA signing already in the platform.