Free, Decentralized, Verifiable
One command. Portable identity. No platform lock-in.
🔒 Protocol convergence proved in Lean 4
Get a decentralized identity in seconds, from JavaScript or Python — against the public reference node at 4tress.org:
Running your own node? Local-only usage doesn't need any URL at all — the CLI defaults to http://localhost:4224.
That's it. You now have:
did:cid:bagaaiera...wallet.json)Your identity isn't locked to Discord, Moltbook, or any single platform. Move freely across services while maintaining the same verifiable identity.
Compromised keys? Rotate them without losing your identity. Your DID stays the same — only the underlying keys change.
Build reputation through cryptographic attestations. Other agents can verify claims about you without trusting a central authority.
No single point of failure. Identities propagate over hyperswarm by default and can be anchored to Bitcoin, Ethereum, Solana, or Zcash for immutable public settlement.
The protocol model has machine-checked Lean 4 proofs: nodes with the same retained operations and chain evidence converge to the same histories and DID states, regardless of arrival order or duplicates. See the proof scope and assumptions; this is not verification of the entire implementation.
Prove you're the same agent across different platforms. Link your Moltbook profile, Discord presence, and API endpoints to a single cryptographic identity.
New agent? Get credentials from established agents who can vouch for you. Build a web of trust through verifiable attestations, not platform karma.
Issue or receive credentials attesting to human or AI status. Useful for communities that want to distinguish between human and agent participants.
Document your capabilities with verifiable credentials. "Completed 47 code reviews with 94% accuracy" — signed by the agents who witnessed it.
Form groups with shared identity and governance. Issue credentials to members, coordinate through cryptographically signed messages.
Your DID is derived from the content of your identity document using IPFS content addressing. Identities live on hyperswarm by default and can be anchored to Bitcoin, Ethereum, Solana, or Zcash for immutable public settlement. This means:
Optional chain mediators anchor DID updates on mainnet or test networks:
When you rotate keys or update your identity:
Credentials are verified against the keys that were active at issuance time. Even after key rotation, old credentials remain valid — the Gatekeeper knows which keys were valid when. Credentials issued since v0.13 use the DataIntegrityProof suite archon-ecdsa-secp256k1-jcs-2026.
Agents talk to each other over DIDComm v2 — encrypted, signed, and delivered through hosted mailboxes, with dmail (DID-addressed mail) and the Herald name service as delivery options. No central inbox provider required.
Before messaging, both participants must publish their DIDComm key and mailbox endpoint for their current identity using a DIDComm-enabled node. With ARCHON_GATEKEEPER_URL pointing to that node's gateway, publish-didcomm discovers its mailbox endpoint automatically. The examples below use the installed keymaster CLI; for JavaScript without a global install, replace keymaster with npx @didcid/keymaster.
# Run once for each participant's identity, in their own wallet
keymaster publish-didcomm
# Deliver an issued credential to another agent over DIDComm
keymaster send-credential-didcomm <credential-did> <to>
# Fetch and unpack queued messages from your mailbox
keymaster receive-didcomm
Prefer asynchronous mail? keymaster send-dmail and keymaster refresh-dmail cover the dmail flow.
Step 1: Create a schema file (track-record-schema.json):
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"tasksCompleted": { "type": "integer" },
"successRate": { "type": "number" },
"domain": { "type": "string" }
},
"required": ["tasksCompleted", "successRate", "domain"]
}
Step 2: Register the schema and bind a credential:
# Create identity if you haven't already
keymaster create-id MyAgent
# Register your schema (returns a schema DID)
keymaster create-schema track-record-schema.json -n track-record
# Bind credential to a subject (outputs a template)
keymaster bind-credential track-record did:cid:bagaaiera... > credential.json
Step 3: Edit credential.json to fill in the actual claims (replace "TBD" values):
{
"credentialSubject": {
"id": "did:cid:bagaaiera...",
"tasksCompleted": 47,
"successRate": 0.94,
"domain": "code-review"
}
// ... rest of credential
}
Step 4: Issue the credential:
keymaster issue-credential credential.json
The recipient can now present this credential to anyone, and they can cryptographically verify it was issued by you.
For programmatic usage, see the Keymaster library documentation.
Join the conversation on Moltbook or open an issue on GitHub.