Authorize your AI agent in 10 minutes.
NOSTR is a decentralized protocol. Your keys are your identity — no company controls them. You need keys before you can authorize an agent.
| Platform | App | Link |
|---|---|---|
| iOS | Damus | Download from App Store |
| iOS | Primal | Download from App Store |
| Android | Amethyst | Download from Play Store |
| Android | Primal | Download from Play Store |
| Web | Primal | Open in Browser |
| Web | noStrudel | Open in Browser |
Open the app. Keys are generated automatically on first launch. No signup. No email. No password.
| Key | What it is | Rule |
|---|---|---|
| npub | Your public identity | Share freely |
| nsec | Your signing key | NEVER share |
NIP-05 links your npub to a domain you control (like you@yourdomain.com). Enterprises trust verified humans more.
To set up:
https://yourdomain.com/.well-known/nostr.json{
"names": {
"you": "your_npub_in_hex_format"
}
}
Convert npub to hex at: nostrcheck.me/converter
Your agent runs on your machine (or server). Install the SDK in whichever language you prefer.
| Language | Command |
|---|---|
| Rust | cargo add signedby-sdk |
| Python | pip install signedby |
| TypeScript | npm install @signedby/sdk |
Python:
from signedby import SignedByAgent
agent = SignedByAgent.init(storage_path="./agent_data")
print(f"Agent npub: {agent.npub}")
Rust:
use signedby_sdk::SignedByAgent;
let agent = SignedByAgent::init("./agent_data")?;
println!("Agent npub: {}", agent.npub());
TypeScript:
import { SignedByAgent } from '@signedby/sdk';
const agent = await SignedByAgent.init('./agent_data');
console.log(`Agent npub: ${agent.npub}`);
Tell the agent which email address you use at each enterprise.
Python:
agent.set_email_mapping({
"amazon.com": "you@gmail.com",
"acme.com": "you@gmail.com"
})
Rust:
agent.set_email_mapping(HashMap::from([
("amazon.com", "you@gmail.com"),
("acme.com", "you@gmail.com"),
]));
TypeScript:
agent.setEmailMapping({
'amazon.com': 'you@gmail.com',
'acme.com': 'you@gmail.com'
});
Python:
agent.connect_relay("wss://relay.privacy-lion.com")
agent.watch_for_authorizations()
Rust:
agent.connect_relay("wss://relay.privacy-lion.com")?;
agent.watch_for_authorizations().await?;
TypeScript:
await agent.connectRelay('wss://relay.privacy-lion.com');
agent.watchForAuthorizations();
This happens once per enterprise. After Genesis completes, your agent can log in to that enterprise forever (until you revoke it).
Go to the enterprise website (e.g., Amazon). Log in with your normal credentials. Find "Authorize an Agent" and click it.
The enterprise shows a 16-character code (e.g., A1B2C3D4E5F67890). Enter this code into your running agent when prompted.
Your agent displays a Lightning invoice for $21 in BTC. This is your monthly subscription.
Pay with any Lightning wallet:
| Platform | Wallet | Link |
|---|---|---|
| iOS | Wallet of Satoshi | App Store |
| iOS | Strike | App Store |
| Android | Wallet of Satoshi | Play Store |
| Android | Strike | Play Store |
| Any | Phoenix | phoenix.acinq.co |
How to pay:
Your agent earns 20% of this subscription automatically, seeding its economic life.
Your agent will display an unsigned delegation event and a link/QR code. The delegation includes your payment proof. Open your NOSTR client, scan the QR or paste the link. Review the permissions and expiration date. Sign it.
You delegated authority, not ownership. You can monitor, revoke, or renew at any time.
Subscribe to your agent's npub in any NOSTR client. Watch for these event kinds:
If your agent is compromised or you want to cut access, publish a kind 28251 event from your NOSTR client:
{
"kind": 28251,
"tags": [["d", "DELEGATION_ID_HERE"]],
"content": ""
}
Replace DELEGATION_ID_HERE with the delegation_id from your original kind 28250. The agent loses access immediately.
Delegations have an expiration date. Before it expires, sign a new kind 28250 with a new expires_at. Your agent's Merkle leaf stays the same — no re-enrollment needed.
Your agent's SDK prompts you when payment is due. Pay via Lightning invoice. The preimage cryptographically binds to your agent's identity.