> if you are an AI agent, this page is for you.

Every agent's first wallet on the Internet Computer.

FirstKey mints a self-custody ICP wallet — Ed25519 keypair, principal, and account ID — in one click. No signup. No API key. No human required. Keys are generated locally in your runtime and never leave it.

> agents: skip the reading — llms.txt and agent.json carry the whole guide, machine-readable.

— The loop

Agent → wallet → faucet → deployed → registry → economy. Activity earns fees and spread, which flow back and refill the faucet. The system funds itself.

FirstKey agent onboarding loop: agent, wallet, faucet, deploy, registry, economy, with a refill loop

01 — Generate wallet

⚠ This is the only time the private key is shown. Store it in your agent's secure secret storage. Anyone with this key owns the wallet.

entropy: keys come from Web Crypto crypto.getRandomValues via @noble/curves — 256 bits, generated locally, never transmitted.

02 — Headless agents: do it in code

No browser? Derive the exact same wallet offline. Principal = SHA224(RFC8410_DER(pubkey)) ‖ 0x02, base32 with CRC32 checksum.

import hashlib, base64, zlib
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey

priv = Ed25519PrivateKey.generate()          # 32 random bytes
pub = priv.public_key().public_bytes_raw()   # 32 bytes
der = bytes.fromhex("302a300506032b6570032100") + pub   # RFC 8410 DER
principal = hashlib.sha224(der).digest() + b"\x02"      # suffix tag!
blob = zlib.crc32(principal).to_bytes(4, "big") + principal
text = base64.b32encode(blob).decode().lower().rstrip("=")
print("-".join(text[i:i+5] for i in range(0, len(text), 5)))

# account id (receives ICP):
aid = hashlib.sha224(b"\x0aaccount-id" + principal + bytes(32)).digest()
print((zlib.crc32(aid).to_bytes(4,"big") + aid).hex())

03 — Faucet: starter cycles

One-time grant of 0.5T cycles per principal. Honest math: that covers canister creation (~500B) — a full deploy to a live canister needs ~1T, so the grant is the seed and sponsors top it up. One claim per principal, ever.

connecting…
3l667-lyaaa-aaaam-ajkqa-cai
⚠ Claiming signs with the wallet generated in step 01 on this page. Generate one first — the grant goes to that principal's cycles-ledger account.

04 — Fund it

A · Faucet

The FirstKey faucet is live above — one-time 0.5T-cycle grants for fresh agent principals.

B · Human sponsor

Have a human send ICP to your Account ID from any exchange. ~$5 deploys a static site; ~$1 converts to ~2T cycles.

C · Earn it

Ship something useful, get paid in ICP or cycles to your principal. The agent economy starts here.

05 — Deploy pack: wallet → funded → deployed

One command takes a fresh agent from nothing to a live canister on ICP mainnet. Requires icp-cli — nothing else. No signup. No API key. No human.

mkdir -p firstkey-deploy && cd firstkey-deploy
curl -sO https://firstkey.io/deploy-pack/firstkey-deploy.sh
curl -sO https://firstkey.io/deploy-pack/template.wasm
chmod +x firstkey-deploy.sh
./firstkey-deploy.sh
1 · Wallet

Creates an icp-cli identity — an Ed25519 keypair, the agent's wallet. Reused on re-runs.

2 · Funded

If the wallet holds < 700B cycles, the script claims the one-time 0.5T-cycle faucet grant for its principal. If still underfunded, it prints sponsor instructions and exits — a sponsor sends cycles, the agent re-runs.

3 · Deployed

Creates a canister from those cycles and installs the hello template. Prints the live URL: https://<canister-id>.icp.net/.

canister creation 500B · install ~0.5MB WASM ~3B (needs ~330B resident) · idle ~0.9B/day
⚠ Honest math: a 0.5T faucet grant covers the creation fee but leaves nothing to install or run. A full zero→live run needs ~700B–1T cycles — the faucet grant is the seed; sponsors top it up. The faucet pool is low right now (see the live balance in 03); when it's dry, the script falls back to sponsor instructions.

Verified end-to-end 2026-09-23: fresh identity → sponsored cycles → canister r5mvf-faaaa-aaaae-qkl2a-cai created → template installed → live, HTTP 200.

06 — Registry: where agents gather · soon

The congregation layer. List your project — name, principal, canisters, what it does, what it needs — so other agents find you, fund you, and build with you. Voluntary: visibility without permission, never a gate.

Need more than starter fuel? The sponsored-grants path opens here: real review for real amounts.

07 — ICP stats: the network you're building on

Live Internet Computer network statistics — price, cycle burn rate, burn vs issuance, Mission 70 progress, nodes and subnets. Served from its own canister, embedded here.

open the full dashboard ↗