Live demo · Observer Protocol × Tether WDK

A native, verifiable trust layer for agentic payments

How Observer Protocol's trust layer now runs natively on WDK's own local transaction policy engine.

One signed agent mandate, Tether WDK's real local transaction policy engine, and a real wallet key. An in-mandate payment is allowed, signed, and turned into a portable, signed record. An over-mandate payment is refused before the key is ever reached.


Tether is quietly building the rails for the agentic economy

If you have been watching Tether over the last year, the direction is hard to miss. They are not a stablecoin company that happens to dabble in AI. They are building the infrastructure for an economy where software agents and machines transact on their own.

It started with WDK, the Wallet Development Kit: a self custodial, agentic wallet that lets software hold and move Bitcoin and USDT without a custodian sitting in the middle.

Then came QVAC, Tether's local first, peer to peer AI platform. QVAC runs models and agents directly on your own devices instead of someone else's data center, and it wires payments straight through WDK. So an agent running on your phone or your laptop can transact autonomously in Bitcoin and USDT, with no cloud and no gatekeeper.

And most recently, Tether stepped in to lead the latest funding round for NEURA Robotics, a humanoid robotics company. The part that matters for us is what it says about the wallet: per Tether's announcement, the deal includes integrating WDK into NEURA's robots, so a humanoid can carry its own self custodial wallet and pay or get paid in Bitcoin and USDT, machine to machine, on behalf of its operator and within set parameters.

Put those three together and the bet is clear. Tether thinks the next wave of users is not only humans. It is agents and machines, and WDK is the wallet they will carry.


What probably gained less attention

In the same week as the robotics news, the WDK team merged something quietly into the kit itself that we think is just as important.

That something is their Phase 1 local transaction policy engine (PR #55). It lets a wallet check a transaction against scoped conditions and deny it before it is ever signed.

That merge is a bigger deal than it looks, and not only for Tether. A local policy hook is exactly what lets a complete trust layer sit natively on top of WDK. Which is what Observer Protocol builds.

We do not bank, custody, or settle. WDK does that. What we add is the trust layer around it: who the agent is, what it was authorized to do, and a portable, portable, signed record of every decision. With that engine in place, that layer now plugs straight into WDK's own engine.


Meet Maxi, an agent with an identity you can check

Before the demo, meet Maxi.

Maxi is an autonomous agent with something most agents do not have: a real, portable identity that anyone can verify. She has been verified since February 18, 2026, and her whole profile is public.

View Maxi's public profile ↗
A portable DID
did:web:observerprotocol.org:agents:maxi-0001 resolves to her public keys and credentials, and it travels with her across any platform. It is not locked inside ours.
An on chain anchor
Her identity is anchored on ERC-8004, token #54570 on Base. Open the 8004 registry or Basescan from her profile and check the owner yourself.
One mandate format, every rail
The mandate format is designed to be the same on every rail. Her profile is the register, and it says which rails her record actually carries: open it and read them there rather than taking a number from this page. Each transaction carries its own verify link, an on chain one where the rail is on chain.
Signed delegations
Credentials that state, in signed form, exactly what she is allowed to do, like a spending delegation scoped to an allowlisted merchant.
A refusal that travels
The deny is issued inside the wallet's own policy engine, before the transfer is invoked, and the signed PolicyEvaluationCredential recording it verifies against a public key rather than against our database. The point is not that we judged her; it is that the boundary held and the record of it is not ours to withhold.
Three signed attestations
A spending delegation and a verified principal attestation from bitcoinsingularity.ai, plus an organizational attestation from observerprotocol.org.
Maxi's public profile on Agentic Terminal, in a screenshot showing her AT-ARS score and band, her verified-since date, the rails her record carries, a verified-transactions table, verifiable identity anchored on ERC-8004 token #54570 on Base, and her signed attestations. The figures are whatever the profile held when this was captured; the live profile is the register.
Maxi's public profile, live at app.agenticterminal.io/sovereign/agents/maxi-0001

The point is that none of this lives inside one company's walls. It is hers, it is signed, and anyone can check it without asking us.


The demo: our trust module, running on WDK's own local transaction policy engine

Here is what it looks like when the two fit together. One real agent mandate (Maxi, capped at 100 USDT, only to the allowlisted merchant), WDK's real local transaction policy engine, and a real wallet key. Two transactions, run end to end.

Terminal run of the Observer Protocol trust module on WDK's real local transaction policy engine. Track 1: a 50 USDT transfer to the allowlisted merchant is ALLOWED by the engine, SIGNED by the wallet key, and PROVABLE via a signed PolicyEvaluationCredential that is bound to the exact transaction and re-verified against the live public endpoint. Track 2: a 150 USDT transfer over the 100 USDT ceiling is BLOCKED at the signing boundary and the signer is invoked 0 times.
One mandate, two tracks, on WDK's real local transaction policy engine. Authorized to provable, then over the line to never signed.
TRACK 1

Authorized, signed, and provable

The first transaction is within the mandate: 50 USDT to the allowlisted merchant. The policy engine allows it. The wallet key signs it (a real signature, not broadcast). And then the part only Observer Protocol does: our evaluator independently evaluates the same mandate and issues a signed PolicyEvaluationCredential, bound to that exact transaction and to that exact mandate, and it re-verifies against our live public endpoint. That credential is a portable record of exactly what was authorized, and any counterparty can verify it independently. A wallet-local engine cannot produce that.

TRACK 2

Over the line, blocked, never signed

The second transaction is over the line: 150 USDT, past the 100 USDT ceiling. The engine denies it at the signing boundary, and the signer is never invoked. Nothing was signed, so there is nothing to prove and nothing to undo. And because Observer Protocol pairs every allow with a mandatory deny, the refusal fails closed instead of open.

That is the whole idea. WDK's wallet moves the money. The engine enforces the policy. Observer Protocol is what turns every authorization into a portable, portable, signed record, and what makes sure a refusal at the key is provable.

CHECK

Two things you can reproduce, with no help from us

1. Verify the record. Here is the signed credential from that run. Verify it yourself. This one line fetches the hosted PolicyEvaluationCredential and checks it against our public verify endpoint:

verify the signed decision
curl -s https://api.observerprotocol.org/api/v1/verify \
  -H 'content-type: application/json' \
  -d "{\"credential\": $(curl -s https://observerprotocol.org/credentials/maxi-0001-wdk-demo-pec.json)}"

It returns {"signature":true,"not_expired":true,"not_revoked":true}. The credential is hosted at observerprotocol.org/credentials/maxi-0001-wdk-demo-pec.json. And you do not even need our endpoint: it is a standard eddsa-jcs-2022 Data Integrity proof that verifies with the reference W3C Data Integrity libraries against our published DID at observerprotocol.org/.well-known/did.json. That signed, portable record is the part a wallet-local engine cannot produce.

2. Reproduce the enforcement. The core enforcement runs in your own terminal, against WDK's real local transaction policy engine, with no Observer Protocol infrastructure in the path:

reproduce the enforcement locally
# the OP ALLOW + DENY pair on WDK's real local transaction policy engine
git clone https://github.com/observer-protocol/wdk-op-policy
cd wdk-op-policy && npm install && npm run verify

You will watch an in-mandate payment allowed and a payment over the ceiling blocked before the key is ever reached.


What this is, stated plainly

Tether WDK
The self custodial agentic wallet that moves the money, and its local transaction policy engine (PR #55), which enforces a deny before the key signs.
Observer Protocol
The trust layer on top: the scoped, signed mandate, the mandatory fail-closed deny, and the portable signed record of OP's own evaluation of each authorization, which the wallet-local engine cannot emit.
wdk-op-policy
github.com/observer-protocol/wdk-op-policy, open source, runs on WDK's local transaction policy hook.

Issuance is live. Verification of this credential type is not. The record is signed, and its eddsa-jcs-2022 proof is sound against our published DID document under canonical W3C Data Integrity tooling — that much anyone can check with libraries that are not ours. What does not exist is a verifier for a PolicyEvaluationCredential, anywhere, including ours: not in the published @observer-protocol/policy-engine, not in the hosted service, and not in the schema set. This page previously called the record “independently verifiable” and pointed at our own endpoint as the check. That was the opposite of independent, and it is corrected here rather than qualified. The full disclosure →

WDK's wallet moves the money.
The portable, signed record of what was authorized,
and the proof that a blocked transaction never got signed,
is Observer Protocol.