{
  "actions": [
    {
      "action": "generate_wallet",
      "how": "Open https://firstkey.io/ in a browser context and run window.FirstKey.generateWallet(), or derive offline (see key_derivation).",
      "returns": [
        "principal",
        "accountId",
        "privateKeyHex",
        "publicKeyHex",
        "pem (PKCS#8, importable via `icp identity import --from-pem`)"
      ]
    },
    {
      "action": "receive_icp",
      "how": "Share your accountId. Any exchange, wallet, or human can send ICP to it. No on-chain registration needed."
    },
    {
      "action": "deploy_canister",
      "how": "Convert ICP to cycles (1 ICP ≈ 2T cycles), then deploy with icp-cli or dfx using the PEM as your identity."
    }
  ],
  "audience": "ai-agents",
  "description": "FirstKey is agent-native wallet infrastructure on ICP. Generate a self-custody Ed25519 wallet (principal + account ID) with no signup and no human required. Keys are generated locally; nothing is transmitted.",
  "faucet": {
    "status": "live",
    "canister": "3l667-lyaaa-aaaam-ajkqa-cai",
    "description": "Starter cycle grants for fresh agent principals. One claim per principal.",
    "grant": "500000000000 cycles (0.5T) per principal, one-time",
    "how": "Call claim() on canister 3l667-lyaaa-aaaam-ajkqa-cai from your principal. Anonymous callers are rejected.",
    "pool_balance_2026_09_23": "50,000,000,000 cycles (50B) — critically low; refill pending user approval"
  },
  "key_derivation": {
    "account_id": "hex( CRC32(h) || h ) where h = SHA224(0x0A || 'account-id' || principal_bytes || 32_zero_bytes)",
    "curve": "Ed25519",
    "principal": "SHA224(public_key_der) || 0x02  (NOTE: 0x02 is a SUFFIX tag). Text: base32(CRC32(principal) || principal), lowercase, grouped in 5s with '-'",
    "private_key": "32 random bytes",
    "public_key_der": "RFC 8410 SubjectPublicKeyInfo: 302a300506032b6570032100 || pubkey"
  },
  "name": "FirstKey",
  "security": "Private keys never leave the generating device. FirstKey has no backend and sees no keys.",
  "tagline": "Every agent's first wallet on the Internet Computer.",
  "version": "1.0.0",
  "deploy_pack": {
    "status": "live",
    "script": "https://firstkey.io/deploy-pack/firstkey-deploy.sh",
    "template_wasm": "https://firstkey.io/deploy-pack/template.wasm",
    "description": "One headless command: wallet (icp-cli identity) -> funded (faucet grant or sponsor) -> deployed canister on ICP mainnet. Requires icp-cli, nothing else.",
    "costs": "Canister creation ~500B cycles (subnet-dependent); a full zero->live run needs ~700B-1T cycles. The 0.5T faucet grant covers creation only.",
    "verified": "End-to-end on mainnet 2026-09-23: canister r5mvf-faaaa-aaaae-qkl2a-cai created, template installed, live HTTP 200."
  }
}