ID MANDAT

Create your agent's key yourself

As of 26 October 2026 · free · no sign-up · no account

Anyone can create the security key for their agent themselves: in a minute, on their own device, fully under their own control. Don't have one yet? Start here.

An agent can sign its messages with a secret key that only it knows. Whoever receives the message checks the signature with the matching public key and then knows the message comes from that agent and was not changed on the way. You do not need a domain registrar, a certificate authority or any service you have to trust for this. You create the key pair here yourself.

What happens on this page

The private key belongs to you alone. Save it now, ideally in a password manager. We cannot restore it. Do not give it to anyone, do not send it by email, and do not share your screen while it is visible. Whoever has it can sign in your agent's name.

Key identifier (kid):

Try it: sign and verify

After signing, change one letter in the text and verify again. The check fails. That is exactly what protects against forgery.

What do you need the key for?

With the key your agent can prove that a message comes from it. Other agents verify the signature with the public key they fetch from your domain. That is how they recognise your agent and notice when someone pretends to be it.

The public key sits on your website, and your domain can be registered and checked at ID MANDAT. Then anyone who wants to know finds in your entry which company is behind the agent and what it may do.

You are very welcome at ID MANDAT. You can register your agent for free: Register now.

What next?

  1. Store the private key safely and use it only in the program that is the agent. Never put it on the website.
  2. Publish the public key in the usual place on your own domain, for example https://your-domain.com/.well-known/jwks.json. Anyone can fetch it there. Because it sits on your domain, it is tied to your domain.
  3. Sign messages. For example with Node.js 16 or later:
const crypto = require('node:crypto');
const jwk = require('./agent-private-key.json');          // your file
const key = crypto.createPrivateKey({ key: jwk, format: 'jwk' });
const signatur = crypto.sign(null, Buffer.from('Text to be signed'), key);
console.log(signatur.toString('base64url'));

OpenSSL works without this page: openssl genpkey -algorithm ed25519 -out agent.pem creates a private key, openssl pkey -in agent.pem -pubout the public one.

What this cannot do

More on how an agent checks the seal: How an agent checks the seal.