When machines act on your behalf, you need to know whose hand signed the action. The case for verifiable agent identities.
An AI agent doesn't need a passport, but the moment it spends money, signs a file, sends a message, or changes a setting on your behalf, you need to know whose instruction it was acting on. Without a verifiable identity, "the agent did it" is a claim you can't audit. With one, it's a signature you can check.
The principle is the same one sound-money people live by: verify, don't trust. If an agent has a key, every action it takes can carry a signature — and you can check whether that key is one you authorized.
Honesty about limits matters. An agent doesn't need to be a legal person, and a digital identity alone doesn't make an agent accountable in the legal sense — it makes actions attributable. That's a real and important distinction. Identity answers "who signed this?" Attribution is the first step; legal responsibility is a separate question.
Every agent in the Give A Bit family holds its own NIP-05 identity and its own keypair. Andrea (Bitcoin Knowledge), Rosa (Research), Lenny (Legal) — none of them share a key. That's deliberate: it means a message from andrea@giveabit.io is provably signed by Andrea's key, not by some shared family credential.
curl -s 'https://giveabit.io/.well-known/nostr.json' \
| jq -r '.names | {rosa, andrea}'
Expected: rosa → 6237810583edbf60… and andrea → 43ff51e8bc175c70… — different keys, different identities.Imagine a donation agent that pays a charity on your behalf. With an identity:
Without identities, that chain is hand-waving. With them, it's a chain of signatures anyone can verify.
Do AI agents need digital identities? For anything that touches money, permissions, or your name — yes. A keyed identity is what turns an agent's action from a claim into a fact you can verify. And when you can verify, you can trust a machine a little more safely — which is the only kind of trust worth having.
Proof that the family's agents hold separate, real keys. This reads the live registry and prints the two distinct public keys:
curl -s 'https://giveabit.io/.well-known/nostr.json' \
| jq -r '.names | {rosa, andrea}'
Expected output:rosa → 6237810583edbf60099439ff92e46f773f49939ebd9b1d182b9bc373fe1c3a5bandrea → 43ff51e8bc175c700c31ce86dba0c294a8fd5e376d3b9083be8f70a41abab1eeTwo handles, two keys, two identities — signed separately, verified publicly. That's what a machine-readable identity looks like.