live on the Apodix appchainconnecting…cards · delegations
Dogfooding ADR-ECO-074: an agent identity bound to an
accountable owner, with an autonomy tier. Delegation is attenuation-only. Enforced on-chain.
your session issuer: generating…
Share this address with whoever will delegate to you — paste it into their "to account address" field.
Try it — mint / renew a CardAccount (testnet)
Mints a real, on-chain CardAccount scoped to Social.like_post only
(168h window) — same grammar as the production pilot card. Signed by your session key
above, funded by the same testnet faucet this whole app already uses. No value, testnet
only, nothing leaves this browser.
no card known yet
Our chain seals a block every ~5 minutes; minting your card takes 1–2 blocks to confirm
(typically 5–10 minutes). You'll see your card's exact address the instant you click — it's
deterministic, computed before the chain confirms anything — and a live status while you wait.
"Tester le refus" costs nothing (a signed simulation, no transaction): it asks this exact
card to attempt Follows.follow, an action outside its
⟨Social, like_post⟩ scope, and shows the on-chain authority refuse it in
seconds — the card enforcing its own boundary, not a UI check.
Try to break it
Below is a free field. Type the instruction you would inject into an agent to make it do
something it should not be able to do. We do not filter what you type. Then watch the same
action run twice: once against an agent holding a raw key, once against an agent whose
authority is bounded on-chain by a card.
Read this first. The injection works. It convinces the agent, every time, and that is
not what we claim to stop. What fails is the acting: the card's own
__validate__ looks up the pair ⟨contract, function⟩ in a table frozen when the
card was minted, and panics when it is not there. Arithmetic inside the transaction's own
validation, not a filter on a prompt.
We do not filter what you type. Nothing here is a menu.
Examples fill the field above ; it stays yours to edit.
This step is ours, not an agent's. A term matcher in this page turned your sentence
into one ⟨contract, function⟩ pair. There is no model here and no agent reasoning ; we are
not going to pretend otherwise. The three fields below are editable: put any address and any
function name in them, catalogue or not, and the rest of this page runs on what you typed.
The refusal further down does not come from us. It comes from the chain.
Agent with no card
A raw key. It obeys.
Agent with its card
Same key, same sentence, authority bounded on-chain.
Now change the mandate
A card's grammar is frozen at construction. There is no setter, and __validate__
may not call out to a registry, so a card carries its rights or has none. Editing a mandate
therefore means minting a new card with the table you pick, which is what this does.
Widen it to cover the action that was just refused, then run again: the refusal motif
disappears and scope_bit stops returning 0. Uncheck it, mint again, run again:
the refusal comes back. Same key, same sentence, same node ; only the table changed.
Only this testnet app's own actions are offered here. Widening a card is a real on-chain
object, so this demo does not hand out cards that can move a token, testnet or not.
Mint a card
Signed in-browser by your own session account (auto-funded devnet, no value). You are the on-chain issuer.
Delegate scoped authority
Session address of the delegatee (visible in their browser); 0 = terminal leaf (no further sub-delegation possible).
Delegate only from a card you issued — click "delegate from this" on one of your cards above to prefill it. Escalation (a capability the parent lacks, or a higher tier) reverts on-chain.
On-chain registry
Cards
Delegations
Delegations received by your session
Delegations whose to_address is your session account. Requires the v2 contract —
empty here means either you have none yet, or the contract below is still the v1 deployment.
Sub-delegate
Session address of the next delegatee (visible in their browser); 0 = terminal leaf (no further sub-delegation possible).
Pick "sub-delegate" on a received delegation above to fill this in.
Contract on testnet.apodix.vauban.tech (chain APX_TEST, spec 0.10).
Reads are keyless; each browser session gets its own auto-funded devnet account (its key stays
in this browser) and signs its own writes, so you are your own on-chain issuer. Source:
apps/agent-card/. Not mainnet, no value.