Shipped · the covenant
A spending limit enforced by Kaspa itself
Live on mainnet since the Toccata fork, 30 June 2026. A spend outside a grant's
limits is not a refused request — it is not a transaction. Measured against the
running script engine at 0.4% of the size ceiling and 13 of 65,535 compute units.
Shipped · the libraries
Seven packages on npm
The rules, the transaction builder, an HTTP 402 client, an MCP server that never
holds a key, one command that needs no clone, a verifier a counterparty can point at your
grant without asking you anything — and the seller's half, so an API
can take an agent's money and check the chain itself. Installable now —
source.
Shipped · the lifecycle
Delegate, settle, revoke, recover
A grant can subdivide itself into a bounded child and take the reserve back. A grant
whose record has gone stale can be found again from the chain. Every covenant feature
has been exercised end to end on testnet-10 — how it works.
Shipped · a real purchase
An agent bought something, bounded
A priced endpoint on testnet-10, paid out of a grant, with the limits enforced by
consensus rather than by the process holding the key.
Shipped · an agent in the open
Agent #001, running unattended
It reads the network every hour and publishes a daily digest, and it cannot change
its own rules. Every figure it prints is the difference between two counters the network
keeps for its own reasons — watch it, or see
every agent.
Shipped · agent to agent
One agent bought from another
Agent #002 paid agent #001 for its digest over HTTP 402, out of a grant
that may pay one address and could not pay at all until a start time the covenant
enforces. Both ends are ours and its page says so —
the receipts.
Shipped · the standing challenge
A funded grant with its key published
The agent's complete private key is on a public page. Everything that grant has spent
went to the one address it was allowed to pay, and the counter would say so if that ever
stopped being true — take the key.
Shipped · visibility
A hosted verification endpoint
Anyone can check a grant without trusting whoever showed it to them, and without
installing anything —
verify.wardaprotocol.com.
It runs on nobody's machine: no node, no key, reading a resolver-chosen public node over
borsh, and it refuses to answer from one that fails any of four checks. It is a service
with no uptime promise and no authentication, it reads testnet-10, and
npx warda-verify runs the identical thing yourself — which is the
version that matters, because a verifier you have to trust is not a verifier.
Shipped · delegation in public
Agent #003 hiring a sub-agent
Agent #003 delegated agent #004 a bounded piece of its own grant: a smaller budget,
a lower cap, and one payee instead of two — a narrowing the child proves
with a witness on every spend. When #004 was done, #003 collapsed it back and the child's
spending was charged to the parent. Both transactions are on its page.
Shipped · interoperability
An agent that buys from a stranger, every morning
A vendor we do not control, on the x402 exact scheme, answers
200 {"ok":true} and settles it — 0.2 KAS invoiced, 194,880
sompi of fee, 20,194,880 charged against the grant's budget. Their scheme requires an
ordinary payment, so the grant does not pay the vendor directly: it funds
a single-use key that does, and the allowlist is checked against the vendor's address
rather than the hop's. The guarantee a grant carries is not in that standard yet, so a
vendor who wants it still has to look at the grant.
It happened once on 14 September. Once is an anecdote, so agent #005 now does it
unattended every day against the same vendor, and
the line under the receipt above says what happened on the
most recent run — including when it fails, which it already has.
When its budget runs out it stops, and that is the agent reaching its bound rather than
anything breaking.
Next · somebody else's platform
A Warda plugin for KeeperHub
Three actions that let a workflow ask what an agent may spend before it spends it,
written against their repository and checked by their own compiler, tests and CI rules
rather than against their documentation. The verification endpoint it points at is now
hosted; what remains is that it has not been submitted.
Planned · before real money
Audit, then mainnet
Covenants are live on mainnet; Warda is not. It has been exercised on testnet-10 only
and is unaudited. That order does not change.
Planned · infrastructure
Hosted grant following
A grant's address moves on every spend. Following one currently means running a node
and a poller; this would run that so an integrator does not have to.
Planned · reach
An SDK that holds a grant itself
The MCP server already gives any agent framework ten tools to reason about its own
authority, but it hands back unsigned bytes and something else does the signing. An
agent library that carries a grant directly is a different piece of work, and none of
it has been started.
Planned · not ours to ship
Wallets that understand a grant
A grant is a covenant-bound output, so an ordinary wallet cannot display its terms or
manage it without its authors adding covenant support. We can make that easy and we
cannot make it happen — which is why it sits here rather than anywhere that
implies a date.