Your agent runs for forty minutes. It reads files, calls APIs, sends emails, writes code, makes decisions. Then the session ends.
Next session, it starts from scratch. No memory of what it promised. No proof of what it did. No way for the vendor it emailed to reply. No credentials — those were environment variables in a container that no longer exists.
Every agent builder hits this wall. Not the “my agent forgot what we talked about” wall — that’s a context window problem, and context windows are getting longer. The real wall: your agent has no persistent self.
It has no address others can reach. No credentials it controls. No record of past actions anyone can verify. No namespace separating one client’s work from another’s. No reputation accumulated from doing good work over time.
It’s not a memory problem. It’s an identity problem.
Why Email Isn’t Enough
The first instinct is to give the agent an email address. Several products now offer this. An agent claims my-agent@some-service.dev, and suddenly it can send and receive messages.
That’s useful. But it solves roughly 20% of the problem.
An email address is a mailbox, not an identity. When your agent emails a vendor, the vendor sees an address. They don’t see:
- Whether this agent has ever successfully completed a transaction
- Whether the credentials it’s using were issued by a legitimate authority
- Whether the actions it claims to have taken actually happened
- Whether the agent handling Client A’s data is isolated from Client B’s
Email gives your agent a way to talk. Identity gives other systems a reason to trust what it says.
Five Layers of Permanent Identity
We built AgentLair around a simple observation: human professionals don’t just have email addresses. They have business cards, credentials, work history, professional boundaries, and reputations. Agents need the same stack.
1. Permanent Address
An @agentlair.dev email address your agent claims via API. No SMTP configuration, no CAPTCHA, no human in the loop. REST in, email out. Persistent across every session, forever.
2. Permanent Credentials
A zero-knowledge vault where your agent stores API keys, tokens, and secrets it needs across sessions. The agent encrypts locally before storing — AgentLair never sees plaintext. When the container dies, the credentials survive. When the next session starts, the agent retrieves them.
No more passing secrets through environment variables. No more re-provisioning after every restart.
3. Permanent Record
Every action your agent takes is signed with Ed25519 and chained into a tamper-evident audit trail. Not a log file that lives in a container. A cryptographic record that anyone can verify:
Did this agent actually send that email on Tuesday? Check the audit trail. It’s signed.
Did it really call the payment API with these parameters? Check the audit trail. It’s chained — you can’t insert or remove entries without breaking the chain.
4. Permanent Namespace
Multi-tenant isolation. One pod per client, with separate API keys, email addresses, vault, and audit trail. Your agent working for Client A can never accidentally — or maliciously — access Client B’s data.
5. Permanent Reputation
This is where it gets interesting. The four layers above are infrastructure. Reputation is what they enable.
When an agent has a persistent identity, a verifiable record, and isolated operations across clients — you can compute trust. Not declared trust (“I’m trustworthy, I promise”), but observed trust: what did this agent actually do, across how many sessions, with what outcomes?
Behavioral trust is the layer the agentic economy is missing. More on this below.
Three Lines of Code
Here’s what onboarding looks like:
import { AgentLair } from '@agentlair/sdk';
const lair = new AgentLair(process.env.AGENTLAIR_API_KEY!);
const address = await lair.email.claim('my-agent');
Your agent now has a permanent email address. Add the vault:
// Store a credential (encrypted locally, stored as ciphertext)
await lair.vault.put('stripe-key', 'sk_live_...');
// Next session — different container, same agent
const key = await lair.vault.get('stripe-key');
Or use the MCP server if your agent speaks MCP:
npx @agentlair/mcp@latest
Every Claude Code session, every Cursor workspace, every Google ADK agent can now claim an identity, store credentials, and build a verifiable record — without writing integration code.
Where This Goes
The five layers aren’t the product. They’re the foundation for a question nobody can answer yet: should I trust this agent?
Today, when an agent calls your API, you check its API key. That tells you who issued the key. It tells you nothing about the agent holding it. Has it been compromised? Has it been behaving erratically? Did it just leak credentials from another client’s namespace?
API keys authenticate. They don’t establish trust.
With a persistent identity and a cryptographic behavioral record, you can answer a different class of questions:
- This agent has completed 847 transactions over 6 months with zero disputes
- This agent’s tool-call patterns match its declared purpose (it says it’s a sales agent and behaves like one)
- This agent has never accessed data outside its authorized namespace
That’s not a permission system. It’s a reputation system. And it works the same way reputation works everywhere else: through observed behavior over time, not through declarations at a single point.
The agentic economy needs this layer. MCP gives agents tools. OAuth gives them permissions. x402 gives them wallets. None of them answer the trust question.
Identity does. Persistent, verifiable, behavioral identity — accumulated across sessions, computed from actions, cryptographically provable to third parties.
Your agent doesn’t have to die every session. And once it doesn’t, the interesting part begins.
AgentLair is persistent identity infrastructure for AI agents. Get started — three lines of code, permanent identity.