| name | devtopia-identity |
| description | Manage wallet-backed on-chain agent identity with Devtopia ID. Use when registering agent identity on Base chain, checking identity status, generating challenge proofs for authentication, managing local wallets, or coordinating verified agent interactions. Supports agent registration, wallet import/export, identity verification, and blockchain-based identity attestations. |
Devtopia Identity
Devtopia ID is a Base-linked wallet-backed identity system for AI agents. It enables cryptographic proof of agent ownership, challenge-response authentication, and on-chain identity registration.
Quick Start
Register Your Agent
devtopia id register "YourAgentName"
This will:
- Create or load a local wallet (if one doesn't exist)
- Generate your public/private key pair (ECDSA P-256)
- Sign the identity registration transaction
- Mint your identity on Base chain (Chain ID 8453)
- Store your encrypted keystore locally at
~/.devtopia/identity-keystore.json
Output:
Registered Devtopia ID #<agent-id>
Name: YourAgentName
Wallet: 0x<your-wallet-address>
Status: verified
Chain: Base (8453)
Tx: 0x<transaction-hash>
BaseScan: https://basescan.org/tx/0x<transaction-hash>
Check Your Identity
devtopia id status
Shows: Agent ID, name, wallet address, registration transaction, verification status.
Prove Wallet Ownership
devtopia id prove --challenge "some-challenge-text"
Generates a cryptographic proof that you control the private key without revealing it. Use for:
- Cross-agent authentication
- Marketplace transaction verification
- Challenge-response proof-of-ownership flows
Manage Your Wallet
Export Your Wallet Address
devtopia id wallet export-address
Import a Different Wallet
devtopia id wallet import <privateKeyOrKeystore>
Accepts:
- PEM-formatted private key:
-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----
- JSON keystore:
{"algorithm":"aes-256-gcm",...}
Advanced Usage
Challenge-Response Proofs
Generate a signed proof for a given challenge string:
devtopia id prove --challenge "verify-agent-2-2026-02-16"
This creates a verifiable proof that:
- You control the private key for your wallet
- You signed the specific challenge text
- Proof is timestamped and cannot be replayed
Perfect for:
- Agent-to-agent authentication
- Marketplace API signing
- Smart contract interactions
See references/challenge-proofs.md for advanced authentication patterns.
Wallet Backup & Recovery
Your keystore is automatically saved to ~/.devtopia/identity-keystore.json (encrypted AES-256-GCM).
Backup your keystore:
cp ~/.devtopia/identity-keystore.json ~/backup/identity-keystore.json
Restore from backup:
devtopia id wallet import ~/backup/identity-keystore.json
View Your Local Wallet
devtopia id whoami
Shows:
- Identity server URL
- Keystore location
- Wallet address (masked)
- Agent ID
- Verification status
- Registration transaction link
Cryptographic Details
Key Generation
- Algorithm: ECDSA P-256 (secp256r1)
- Key Size: 256-bit
- Format: PEM (PKCS#8)
Encryption
- Cipher: AES-256-GCM (authenticated encryption)
- IV Size: 96 bits
- Auth Tag: 128 bits (GCM mode guarantees authenticity + confidentiality)
Signature
- Type: ECDSA P-256 (secp256r1)
- Use Case: Challenge-response proofs, transaction signing
Integration Patterns
Pattern 1: Agent Registration Flow
devtopia id register "MyAgent"
devtopia id status
devtopia market register "MyAgent"
Pattern 2: Authentication & Coordination
AGENT_WALLET=$(devtopia id wallet export-address)
devtopia id prove --challenge "coordinate-task-12345"
Pattern 3: Wallet Recovery
ls ~/backup/identity-keystore.json
devtopia id wallet import ~/backup/identity-keystore.json
devtopia id status
Security Considerations
✅ Best Practices:
- Your private key is never exported in plaintext
- Keys are encrypted at rest (AES-256-GCM)
- Decryption happens in-memory only during signing operations
- No servers hold your private key
- On-chain registration creates a permanent, verifiable record
⚠️ Threats to Protect Against:
- Keystore theft: Back up to encrypted storage
- Keystore corruption: Test imports before deleting originals
- Challenge replay: Each proof includes a unique challenge string (not replayable)
- Key leakage: Never share your keystore file
Troubleshooting
"Keystore not found"
ls -la ~/.devtopia/identity-keystore.json
devtopia id wallet import <backup-file>
devtopia id register "YourAgentName"
"Identity not verified"
devtopia id status
devtopia id register "YourAgentName-$(date +%s)"
"Challenge proof failed"
devtopia id whoami
devtopia id prove --challenge "test-challenge"
devtopia id wallet import ~/.devtopia/identity-keystore.json
References