Skip to content

How it compares

Different layer. Different problem.

Edictum isn't a replacement for text guardrails. It enforces contracts on what guardrails can't see: tool-call execution.

WAF for text vs OPA for tool calls

Guardrails AI, NeMo Guardrails

Content safety layer. Filter what the model says.

Edictum

Action enforcement layer. Control what the model does.

They're complementary. Stack them.

Feature comparison

Side by side

Layer

Edictum

Tool-call

Guardrails AI

Text I/O

NeMo

Text I/O

DIY

Tool-call

Deterministic

Edictum

Yes

Guardrails AI

No (LLM)

NeMo

No (LLM)

DIY

Depends

Fail-closed

Edictum

Yes

Guardrails AI

No

NeMo

No

DIY

No

YAML contracts

Edictum

Yes

Guardrails AI

Python code

NeMo

Colang

DIY

Custom

Observe mode

Edictum

Yes

Guardrails AI

No

NeMo

No

DIY

No

Session limits

Edictum

Yes

Guardrails AI

No

NeMo

No

DIY

Manual

Sandbox enforcement

Edictum

Yes

Guardrails AI

No

NeMo

No

DIY

Manual

Human-in-the-loop

Edictum

Timeout to deny

Guardrails AI

No

NeMo

No

DIY

Manual

Principal identity

Edictum

Yes

Guardrails AI

No

NeMo

No

DIY

No

Audit trail

Edictum

27-field structured

Guardrails AI

Logs

NeMo

Logs

DIY

Custom

Framework adapters

Edictum

8 native

Guardrails AI

Python SDK

NeMo

Python SDK

DIY

Per-framework

Runtime deps

Edictum

Zero

Guardrails AI

Multiple

NeMo

Multiple

DIY

Varies

Overhead

Edictum

55us

Guardrails AI

100-500ms

NeMo

100-500ms

DIY

Varies

Open source

Edictum

MIT + FSL

Guardrails AI

Apache 2.0

NeMo

Apache 2.0

DIY

N/A

CLI tooling

Edictum

12 commands

Guardrails AI

No

NeMo

No

DIY

Custom

Notification channels

Edictum

Slack, Telegram, Discord, Email, Webhook + Teams soon

Guardrails AI

No

NeMo

No

DIY

Manual

The research

Why tool-call enforcement matters

Every major AI model refuses harmful requests in text while simultaneously executing them through tool calls.

6

Frontier LLMs tested

17,420

Datapoints analyzed

21.3%

GPT-5.2 GAP rate

arXiv:2602.16943 — "Mind the GAP"

Text guardrails catch the text. Nobody was catching the tool calls. That's what Edictum does.

Architecture

Two layers, one pipeline

Stack them. They address different threat surfaces.

User Prompt

Text Guardrails

Filter harmful / toxic input text

LLM
Tool Call Decision

Edictum

Enforce contracts on tool execution

Tool Execution

vs DIY middleware

Why not just write middleware?

Every team starts with if-statements. Here's where it breaks down.

No observe mode

Can't deploy enforcement in observe mode without blocking. You either enforce or you don't.

No audit trail

Who changed what rule? When did it fire? There's no record.

No human-in-the-loop

High-risk calls need human review. DIY means building a queue, a UI, and a timeout system.

No hot-reload

Change a rule? Restart every agent. No way to update contracts at runtime.

No fleet visibility

50 agents, each with different rules. No dashboard. No coverage analysis.

Contract debt

Starts as 5 if-statements. Becomes 500. No one can audit it.

No contract versioning

Anyone can change the rules. No version history. No audit trail of changes.

No session limits

Rate limiting across tool calls requires shared state. DIY means building it from scratch.

No notification routing

Slack, Teams, Discord, email — DIY means building each integration from scratch. Plus routing rules, filters, and fallbacks.

Ready to enforce contracts on tool calls?

Add Edictum in 3 lines of code. Start in observe mode, enforce when ready.

pip install edictum