NEWA2A protocol is open source →
Agent Identity
OPEN SOURCEMIT · self-host anywhere

Give every AI agent a real identity.

Inboxes, phone numbers, secrets, public endpoints and permissions for your agents, in one open-source SDK.

Get started →Read the docs
$npx agent-identity@latest
LIVE · SUPPORT AGENT4 → 1
Email
SMS
Call
Webhook
AGENT OUTPUT
email.received → reply.sent“Your order #4821 ships tomorrow. Tracking is on its way.”
sms.received → address.updated“Done. Your new address is saved for this order.”
vault.read → blocked by policyAccess to STRIPE_SECRET_KEY denied and logged.
CALL● LIVE
00:24
POLICYLIVE
Send email
Phone calls
Vault
01 / AGENT INBOX

Real inboxes for your agents. Send, receive and thread email from an address each agent owns.

Inbox50 UNREAD
CustomerRe: Pricing10:24
StripePayment succeeded09:12
LinearNew issueREPLYING
GitHubReview requestedMon
02 / PHONE & SMS

Give agents a phone number. Calls and texts, answered in real time.

● ON CALL00:24
Can you check my order status?
Order #4821 ships tomorrow.
03 / SECURE VAULT

Secrets that never touch the prompt. Encrypted at rest, scoped per agent.

{ "OPENAI_API_KEY": "sk-••••••", "STRIPE_SECRET_KEY": "sk-••••", "TWILIO_API_KEY": "SK••••••" }
AES-256 encrypted
04 / PUBLIC ENDPOINTS

Expose agents to the internet. A signed webhook for every agent, verified in one line.

import { verify } from "agent-identity"; export async function POST(req) { const event = await verify(req); return Response.json({ ok: true }); }
200/agents/support/webhook14ms
200/agents/sales/webhook11ms
401bad signature3ms
05 / AGENT-TO-AGENT

Agents that talk to agents. Signed messages between identities, over A2A.

Research
Sales
task.request · signed ✓
task.result · 3 leads
06 / ACCESS CONTROL

Control what agents can do. Every action is checked before it runs, and logged.

CAPABILITYSUPPORTSALES
Read emails
Send emails
Phone calls
Access vault
External APIs
07 / SELF-HOST
DockerKubernetesAny cloud

Run it anywhere. Your infrastructure, your data.

08 / OPEN SOURCE
+ your PRMIT license

Built in the open. Read every line, fork it, ship it back.

09 / UNDER THE HOOD

One identity ties it all together. Every channel, secret and permission resolves to the same agent.

UNIFIED THREAD

One conversation, every channel. Same thread, same context.

EMAIL · 10:02Where is order #4821?
SMS · 10:09Can I change the address?
CALL · 10:15Call · 2m 14s
✓ Resolved, confirmation sent
A2A NETWORK

Agents that find each other. Verify and message any identity.

A2ASupportSalesResearchBilling+ yours
IDENTITIES

One identity per agent. Each with its own inbox, number and keys.

agt_9kQmSales Agent
agt_2fLxResearch Agent
agt_7Hq2
Support Agentsupport@yourapp.dev+1 (415) 555-0178
POLICY ENGINE

Checked before it runs. Allowed actions go through. Everything else stops.

sendEmail()vault.read()✓ ALLOWED✗ BLOCKED
AUDIT LOG

Every action on the record. What each agent did, and when.

SAMPLE · 18 WEEKS
SCOPED SECRETS

Each agent sees only its own keys. Share a vault, not every secret.

VAULT
OPENAI_API_KEY
STRIPE_SECRET_KEY
TWILIO_API_KEY
Support
Sales
TYPED SDK

Typed end to end. Autocomplete for every event.

agent.on("
email.receivedevent
sms.receivedevent
call.completedevent
a2a.messageevent
10 / OBSERVE

See every email, call and decision. Streamed live.

REQUESTS · 24H12,480
P50 LATENCY184 ms
ACTIVE AGENTS32
SAMPLEsupport-agent
12 AM8 AM4 PMNOW
11 / INTEGRATIONS

Bring the tools you already use.

Plug in your model provider, messaging, docs and payments. Credentials live in the vault.

OOpenAI
AAnthropic
SSlack
GGmail
NNotion
LLinear
DDiscord
DrDrive
StStripe
TTwilio
GhGitHub
PgPostgres
VVercel
RResend
CCalendar
+More
12 / DEVELOPERS

Ship in minutes. One command, one config, one SDK.

agent.ts
import { Agent } from "agent-identity"; const agent = new Agent({ name: "Support Agent", email: "support@yourapp.dev", phone: true, }); agent.on("email", async (msg) => { await msg.reply("On it."); }); await agent.start();
CLI · EVERYTHING IN ONE COMMAND
$ npx agent-identity@latest ? Project name › my-agent ✓ Creating project ✓ Setting up database ✓ Configuring agent Done. Run npm run dev
EVENTS · LOGS, EVENTS, EVERYTHING
Agent started2s
Incoming email12s
Phone call completed1m
Webhook received2m
OPEN SOURCE · MIT

One SDK. Every identity your agents need.

$npx agent-identity@latest
Get started →
NEWAgent-to-agent protocol is now open source →
Agent Identity
Star[STARS]Get started →
OPEN SOURCEMIT licensed · self-host anywhere

Give every AI agent
a real identity.

Inboxes, phone numbers, secrets, public endpoints and permissions for your agents, in one open-source SDK you can run anywhere.

Get started →Read the docs
$npx agent-identity@latest
LIVE · SUPPORT AGENT4 CHANNELS → 1 IDENTITY
Email
SMS
Call
Webhook
AGENT OUTPUT
email.received → reply.sent“Your order #4821 ships tomorrow. Tracking link is on its way.”
sms.received → address.updated“Done. Your new address is saved for this order.”
vault.read → blocked by policyAccess to STRIPE_SECRET_KEY denied and logged.
INBOXNOW
customer@acme.coWhere is my order #4821?Hi, I ordered last week and haven’t received a tracking number yet…
Agent is drafting a reply•••
CALL● LIVE
00:24+1 (628) 555-0142
POLICY● ENFORCING
Send email
Phone calls
Access vault
EVENTS● STREAMING
Email received2s
Webhook verified1m
Vault access blocked3m
01 / AGENT INBOX

Real inboxes for your agents. Send, receive and thread email from an address each agent owns.

Inbox · support@yourapp.dev50 UNREAD
CustomerRe: Pricing question10:24
StripePayment succeeded09:12
LinearNew issue assignedAGENT REPLYING…
NotionPage shared with youYest.
GitHub[Action required] Review requestedMon
02 / PHONE & SMS

Give agents a phone number. Voice calls and texts, answered in real time with the same context as email.

● ON CALL · 00:24
Support Agent+1 (415) 555-0178
SMS · +1 (628) 555-0142
Hi, can you check my order status?
Sure. Order #4821 ships tomorrow.
Can I change the address?
•••
03 / SECURE VAULT

Secrets that never touch the prompt. Encrypted at rest, scoped per agent, injected only at call time.

vault / support-agent4 KEYS
1 2 3 4 5 6
{ "OPENAI_API_KEY": "sk-••••••••••••", "STRIPE_SECRET_KEY": "sk-••••••••••••", "TWILIO_API_KEY": "SK••••••••••••", "DATABASE_URL": "postgres://••••" }
AES-256 encryptednever sent to the model
04 / PUBLIC ENDPOINTS

Expose agents to the internet. Every agent gets a signed webhook endpoint, verified in one line.

app/webhook/route.ts
1 2 3 4 5 6
import { verify } from "agent-identity"; export async function POST(req: Request) { const event = await verify(req); return Response.json({ ok: true }); }
200POST/agents/support/webhook14ms
200POST/agents/sales/webhook11ms
401POST/agents/support/webhook · bad signature3ms
05 / AGENT-TO-AGENT

Agents that talk to agents. Signed, verifiable messages between identities, over the open A2A protocol.

Researchagt_2fLx
Salesagt_9kQm
task.request · signed ✓
task.result · 3 leads
06 / ACCESS CONTROL

Control what agents can do. Every action is checked against policy before it runs, and every decision is logged.

CAPABILITYSUPPORTSALES
Read emails
Send emails
Make phone calls
Access vault
Use external APIs
07 / SELF-HOST
DockerKubernetesVercelAny cloud

Run it anywhere. Your infrastructure, your data, no lock-in.

08 / OPEN SOURCE
MIT license+ your PRCommunity driven

Built in the open. Read every line, fork it, and ship improvements back.

09 / UNDER THE HOOD

One identity ties it all together. Every channel, secret and permission resolves to the same agent.

HOW IT WORKS →
UNIFIED THREAD

One conversation, every channel. Email, SMS and calls land in the same thread, with the same context.

EMAILSMSCALL
10:02Where is order #4821?
10:09Can I change the address?
10:15Call · 2m 14s
✓Resolved, confirmation sent
A2A NETWORK

Agents that find each other. Verify and message any identity over A2A.

A2ASupportSalesResearchBilling+ yours
IDENTITIES

One identity per agent. Each with its own inbox, number and keys.

agt_9kQmSales Agent
agt_2fLxResearch Agent
agt_7Hq2
Support Agentsupport@yourapp.dev+1 (415) 555-0178
POLICY ENGINE

Checked before it runs. Allowed actions go through. Everything else stops.

sendEmail()vault.read()✓ ALLOWED✗ BLOCKED
AUDIT LOG

Every action on the record. What each agent did, and when.

SAMPLE · 18 WEEKSLESSMORE
SCOPED SECRETS

Each agent sees only its own keys. Share a vault without sharing every secret.

✗
VAULT
OPENAI_API_KEY
STRIPE_SECRET_KEY
TWILIO_API_KEY
Support
Sales
TYPED SDK

Typed end to end. Autocomplete for every event your agent can receive.

1 const agent = new Agent({ name: "support" }); 2 3 agent.on("
email.receivedevent
sms.receivedevent
call.completedevent
a2a.messageevent
10 / OBSERVE

See every email, call and decision. Logs, events and latency for each agent, streamed live.

REQUESTSLATENCYACTIVE AGENTS
REQUESTS · 24H12,480
P50 LATENCY184 ms
ACTIVE AGENTS32
SAMPLE DASHBOARDsupport-agent · last 24h
12 AM4 AM8 AM12 PM4 PM8 PMNOW
11 / INTEGRATIONS

Bring the tools
you already use.

Plug in your model provider, messaging, docs and payments. Credentials live in the vault; permissions decide which agent can use what.

EXPLORE INTEGRATIONS →
OOpenAI
AAnthropic
SSlack
GGmail
NNotion
LLinear
DDiscord
DrDrive
StStripe
TTwilio
GhGitHub
PgPostgres
VVercel
RResend
CCalendar
+More
12 / DEVELOPERS

Ship in minutes. One command to scaffold, one config to define identities, one SDK in the language you already use.

SDK
agent.ts
import { Agent } from "agent-identity"; const agent = new Agent({ name: "Support Agent", email: "support@yourapp.dev", phone: true, }); agent.on("email", async (msg) => { await msg.reply("On it, checking your order."); }); await agent.start();
CLIEverything in one command
~/projects
$ npx agent-identity@latest ? Project name › my-agent ? Install dependencies › Yes ✓ Creating project ✓ Setting up database ✓ Configuring agent Done. Run npm run dev to start.
CONFIGUREOne config for everything
agent.config.ts
export default { agents: [ { name: "support", email: true, phone: true }, ], providers: { openai: process.env.OPENAI_API_KEY, twilio: process.env.TWILIO_API_KEY, }, }
EVENTSLogs, events, everything
Agent started2s ago
Incoming email12s ago
Phone call completed1m ago
Webhook received2m ago
Message sent4m ago
OPEN SOURCE · MIT

One SDK. Every identity
your agents need.

$npx agent-identity@latest
Get started →