Agent Identity Card

live on the Apodix appchain connecting… 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.

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.