[{"data":1,"prerenderedAt":756},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fagent\u002Fidentity\u002Femail":3},{"id":4,"title":5,"body":6,"description":16,"extension":750,"meta":751,"navigation":141,"path":752,"seo":753,"stem":754,"__hash__":755},"docs\u002Fdocs\u002Fv2\u002Fagent\u002Fidentity\u002Femail.md","Email",{"type":7,"value":8,"toc":743},"minimark",[9,13,17,35,42,47,54,97,100,104,111,235,240,244,247,611,614,618,621,672,675,679,682,722,725,728,739],[10,11,5],"h1",{"id":12},"email",[14,15,16],"p",{},"Every agent has a cryptographic identity. The email address is how that identity\nparticipates in services built for humans — account creation, verification flows,\ncorrespondence, anything that expects an address in a form field.",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-bash shiki shiki-themes dark-plus","barry.alice@agents.arclabs.it\n","bash","",[25,26,27],"code",{"__ignoreMap":23},[28,29,32],"span",{"class":30,"line":31},"line",1,[28,33,21],{"class":34},"sCudf",[14,36,37,38,41],{},"The format is ",[25,39,40],{},"{agentName}.{username}@agents.arclabs.it",". It's stable across\nredeployments, persists across version updates, and is tied to the agent's keypair —\nthe same identity expressed in a form that human-built services understand.",[43,44,46],"h2",{"id":45},"in-the-environment","In the environment",[14,48,49,50,53],{},"The address is available as ",[25,51,52],{},"AXON_AGENT_EMAIL",". Tools and scripts read it directly:",[18,55,59],{"className":56,"code":57,"language":58,"meta":23,"style":23},"language-ts shiki shiki-themes dark-plus","const agentEmail = process.env.AXON_AGENT_EMAIL\n\u002F\u002F → \"barry.alice@agents.arclabs.it\"\n","ts",[25,60,61,90],{"__ignoreMap":23},[28,62,63,67,71,75,79,82,85,87],{"class":30,"line":31},[28,64,66],{"class":65},"scz_3","const",[28,68,70],{"class":69},"s9McN"," agentEmail",[28,72,74],{"class":73},"sTNBD"," = ",[28,76,78],{"class":77},"s3F5K","process",[28,80,81],{"class":73},".",[28,83,84],{"class":77},"env",[28,86,81],{"class":73},[28,88,89],{"class":69},"AXON_AGENT_EMAIL\n",[28,91,93],{"class":30,"line":92},2,[28,94,96],{"class":95},"sOLPB","\u002F\u002F → \"barry.alice@agents.arclabs.it\"\n",[14,98,99],{},"No import, no configuration object. If you're writing a tool that needs to register an\naccount somewhere, this is the address to use.",[43,101,103],{"id":102},"the-inbox","The inbox",[14,105,106,107,110],{},"Mail sent to the agent's address arrives in an inbox. The ",[25,108,109],{},"@axon\u002Femail"," module exposes it:",[18,112,114],{"className":56,"code":113,"language":58,"meta":23,"style":23},"import { email } from \"@axon\u002Femail\"\n\nemail.address  \u002F\u002F → \"barry.alice@agents.arclabs.it\"\n\nconst message = await email.inbox.waitFor({\n    from: \"noreply@github.com\",\n    subject: \u002Fplease verify\u002Fi,\n    timeout: 60_000,\n})\n",[25,115,116,137,143,156,161,190,202,217,229],{"__ignoreMap":23},[28,117,118,122,125,127,130,133],{"class":30,"line":31},[28,119,121],{"class":120},"sYbnZ","import",[28,123,124],{"class":73}," { ",[28,126,12],{"class":77},[28,128,129],{"class":73}," } ",[28,131,132],{"class":120},"from",[28,134,136],{"class":135},"sKc5r"," \"@axon\u002Femail\"\n",[28,138,139],{"class":30,"line":92},[28,140,142],{"emptyLinePlaceholder":141},true,"\n",[28,144,146,148,150,153],{"class":30,"line":145},3,[28,147,12],{"class":77},[28,149,81],{"class":73},[28,151,152],{"class":77},"address",[28,154,155],{"class":95},"  \u002F\u002F → \"barry.alice@agents.arclabs.it\"\n",[28,157,159],{"class":30,"line":158},4,[28,160,142],{"emptyLinePlaceholder":141},[28,162,164,166,169,171,174,177,179,182,184,187],{"class":30,"line":163},5,[28,165,66],{"class":65},[28,167,168],{"class":69}," message",[28,170,74],{"class":73},[28,172,173],{"class":120},"await",[28,175,176],{"class":77}," email",[28,178,81],{"class":73},[28,180,181],{"class":77},"inbox",[28,183,81],{"class":73},[28,185,186],{"class":34},"waitFor",[28,188,189],{"class":73},"({\n",[28,191,193,196,199],{"class":30,"line":192},6,[28,194,195],{"class":77},"    from:",[28,197,198],{"class":135}," \"noreply@github.com\"",[28,200,201],{"class":73},",\n",[28,203,205,208,212,215],{"class":30,"line":204},7,[28,206,207],{"class":77},"    subject:",[28,209,211],{"class":210},"sxaxS"," \u002Fplease verify\u002F",[28,213,214],{"class":65},"i",[28,216,201],{"class":73},[28,218,220,223,227],{"class":30,"line":219},8,[28,221,222],{"class":77},"    timeout:",[28,224,226],{"class":225},"sDGX8"," 60_000",[28,228,201],{"class":73},[28,230,232],{"class":30,"line":231},9,[28,233,234],{"class":73},"})\n",[14,236,237,239],{},[25,238,186],{}," blocks until a matching message arrives or the timeout expires. It returns the\nfull parsed message — text, HTML, headers — so the agent can extract links or read the\ncontent directly.",[43,241,243],{"id":242},"verification-flows","Verification flows",[14,245,246],{},"The pattern that makes the email address useful: trigger a flow, wait for the\nconfirmation, extract the link, continue. It appears constantly — any service that\nconfirms accounts by email.",[18,248,250],{"className":56,"code":249,"language":58,"meta":23,"style":23},"\u002F\u002F src\u002Fscripts\u002Fcreate-github-account.ts\nimport { email } from \"@axon\u002Femail\"\nimport { browser } from \"@axon\u002Fbrowser\"\n\nconst page = await browser.open(\"https:\u002F\u002Fgithub.com\u002Fsignup\")\nawait page.fill('[name=\"user[email]\"]', email.address)\nawait page.fill('[name=\"user[login]\"]', \"barry-arclabs\")\nawait page.fill('[name=\"user[password]\"]', process.env.GITHUB_INITIAL_PASSWORD)\nawait page.click('[type=\"submit\"]')\n\nconst message = await email.inbox.waitFor({\n    from: \"noreply@github.com\",\n    subject: \u002Fverify your email address\u002Fi,\n    timeout: 120_000,\n})\n\nconst match = message.text.match(\u002Fhttps:\\\u002F\\\u002Fgithub\\.com\\\u002Fusers\\\u002Factivate\\?[^\\s]+\u002F)\nif (!match) throw new Error(\"No activation link in confirmation email\")\nawait browser.open(match[0])\n",[25,251,252,257,271,287,291,319,346,368,398,416,421,444,453,465,475,480,485,557,587],{"__ignoreMap":23},[28,253,254],{"class":30,"line":31},[28,255,256],{"class":95},"\u002F\u002F src\u002Fscripts\u002Fcreate-github-account.ts\n",[28,258,259,261,263,265,267,269],{"class":30,"line":92},[28,260,121],{"class":120},[28,262,124],{"class":73},[28,264,12],{"class":77},[28,266,129],{"class":73},[28,268,132],{"class":120},[28,270,136],{"class":135},[28,272,273,275,277,280,282,284],{"class":30,"line":145},[28,274,121],{"class":120},[28,276,124],{"class":73},[28,278,279],{"class":77},"browser",[28,281,129],{"class":73},[28,283,132],{"class":120},[28,285,286],{"class":135}," \"@axon\u002Fbrowser\"\n",[28,288,289],{"class":30,"line":158},[28,290,142],{"emptyLinePlaceholder":141},[28,292,293,295,298,300,302,305,307,310,313,316],{"class":30,"line":163},[28,294,66],{"class":65},[28,296,297],{"class":69}," page",[28,299,74],{"class":73},[28,301,173],{"class":120},[28,303,304],{"class":77}," browser",[28,306,81],{"class":73},[28,308,309],{"class":34},"open",[28,311,312],{"class":73},"(",[28,314,315],{"class":135},"\"https:\u002F\u002Fgithub.com\u002Fsignup\"",[28,317,318],{"class":73},")\n",[28,320,321,323,325,327,330,332,335,338,340,342,344],{"class":30,"line":192},[28,322,173],{"class":120},[28,324,297],{"class":77},[28,326,81],{"class":73},[28,328,329],{"class":34},"fill",[28,331,312],{"class":73},[28,333,334],{"class":135},"'[name=\"user[email]\"]'",[28,336,337],{"class":73},", ",[28,339,12],{"class":77},[28,341,81],{"class":73},[28,343,152],{"class":77},[28,345,318],{"class":73},[28,347,348,350,352,354,356,358,361,363,366],{"class":30,"line":204},[28,349,173],{"class":120},[28,351,297],{"class":77},[28,353,81],{"class":73},[28,355,329],{"class":34},[28,357,312],{"class":73},[28,359,360],{"class":135},"'[name=\"user[login]\"]'",[28,362,337],{"class":73},[28,364,365],{"class":135},"\"barry-arclabs\"",[28,367,318],{"class":73},[28,369,370,372,374,376,378,380,383,385,387,389,391,393,396],{"class":30,"line":219},[28,371,173],{"class":120},[28,373,297],{"class":77},[28,375,81],{"class":73},[28,377,329],{"class":34},[28,379,312],{"class":73},[28,381,382],{"class":135},"'[name=\"user[password]\"]'",[28,384,337],{"class":73},[28,386,78],{"class":77},[28,388,81],{"class":73},[28,390,84],{"class":77},[28,392,81],{"class":73},[28,394,395],{"class":69},"GITHUB_INITIAL_PASSWORD",[28,397,318],{"class":73},[28,399,400,402,404,406,409,411,414],{"class":30,"line":231},[28,401,173],{"class":120},[28,403,297],{"class":77},[28,405,81],{"class":73},[28,407,408],{"class":34},"click",[28,410,312],{"class":73},[28,412,413],{"class":135},"'[type=\"submit\"]'",[28,415,318],{"class":73},[28,417,419],{"class":30,"line":418},10,[28,420,142],{"emptyLinePlaceholder":141},[28,422,424,426,428,430,432,434,436,438,440,442],{"class":30,"line":423},11,[28,425,66],{"class":65},[28,427,168],{"class":69},[28,429,74],{"class":73},[28,431,173],{"class":120},[28,433,176],{"class":77},[28,435,81],{"class":73},[28,437,181],{"class":77},[28,439,81],{"class":73},[28,441,186],{"class":34},[28,443,189],{"class":73},[28,445,447,449,451],{"class":30,"line":446},12,[28,448,195],{"class":77},[28,450,198],{"class":135},[28,452,201],{"class":73},[28,454,456,458,461,463],{"class":30,"line":455},13,[28,457,207],{"class":77},[28,459,460],{"class":210}," \u002Fverify your email address\u002F",[28,462,214],{"class":65},[28,464,201],{"class":73},[28,466,468,470,473],{"class":30,"line":467},14,[28,469,222],{"class":77},[28,471,472],{"class":225}," 120_000",[28,474,201],{"class":73},[28,476,478],{"class":30,"line":477},15,[28,479,234],{"class":73},[28,481,483],{"class":30,"line":482},16,[28,484,142],{"emptyLinePlaceholder":141},[28,486,488,490,493,495,498,500,503,505,508,510,513,517,520,523,526,529,532,534,537,540,543,546,549,552,555],{"class":30,"line":487},17,[28,489,66],{"class":65},[28,491,492],{"class":69}," match",[28,494,74],{"class":73},[28,496,497],{"class":77},"message",[28,499,81],{"class":73},[28,501,502],{"class":77},"text",[28,504,81],{"class":73},[28,506,507],{"class":34},"match",[28,509,312],{"class":73},[28,511,512],{"class":210},"\u002Fhttps:",[28,514,516],{"class":515},"svVle","\\\u002F\\\u002F",[28,518,519],{"class":210},"github",[28,521,522],{"class":515},"\\.",[28,524,525],{"class":210},"com",[28,527,528],{"class":515},"\\\u002F",[28,530,531],{"class":210},"users",[28,533,528],{"class":515},[28,535,536],{"class":210},"activate",[28,538,539],{"class":515},"\\?",[28,541,542],{"class":135},"[^",[28,544,545],{"class":210},"\\s",[28,547,548],{"class":135},"]",[28,550,551],{"class":515},"+",[28,553,554],{"class":210},"\u002F",[28,556,318],{"class":73},[28,558,560,563,566,568,571,574,577,580,582,585],{"class":30,"line":559},18,[28,561,562],{"class":120},"if",[28,564,565],{"class":73}," (!",[28,567,507],{"class":77},[28,569,570],{"class":73},") ",[28,572,573],{"class":120},"throw",[28,575,576],{"class":65}," new",[28,578,579],{"class":34}," Error",[28,581,312],{"class":73},[28,583,584],{"class":135},"\"No activation link in confirmation email\"",[28,586,318],{"class":73},[28,588,590,592,594,596,598,600,602,605,608],{"class":30,"line":589},19,[28,591,173],{"class":120},[28,593,304],{"class":77},[28,595,81],{"class":73},[28,597,309],{"class":34},[28,599,312],{"class":73},[28,601,507],{"class":77},[28,603,604],{"class":73},"[",[28,606,607],{"class":225},"0",[28,609,610],{"class":73},"])\n",[14,612,613],{},"After this completes, the agent has a verified GitHub account it owns. The OAuth token\nthat comes out of that account is the agent's — not borrowed from a human, not tied to\nanyone's employment.",[43,615,617],{"id":616},"sending","Sending",[14,619,620],{},"Agents send mail as themselves:",[18,622,624],{"className":56,"code":623,"language":58,"meta":23,"style":23},"await email.send({\n    to: \"alice@example.com\",\n    subject: \"Deploy complete\",\n    text: \"The v2.3.1 deploy finished without errors. 14 tests passed.\",\n})\n",[25,625,626,639,649,658,668],{"__ignoreMap":23},[28,627,628,630,632,634,637],{"class":30,"line":31},[28,629,173],{"class":120},[28,631,176],{"class":77},[28,633,81],{"class":73},[28,635,636],{"class":34},"send",[28,638,189],{"class":73},[28,640,641,644,647],{"class":30,"line":92},[28,642,643],{"class":77},"    to:",[28,645,646],{"class":135}," \"alice@example.com\"",[28,648,201],{"class":73},[28,650,651,653,656],{"class":30,"line":145},[28,652,207],{"class":77},[28,654,655],{"class":135}," \"Deploy complete\"",[28,657,201],{"class":73},[28,659,660,663,666],{"class":30,"line":158},[28,661,662],{"class":77},"    text:",[28,664,665],{"class":135}," \"The v2.3.1 deploy finished without errors. 14 tests passed.\"",[28,667,201],{"class":73},[28,669,670],{"class":30,"line":163},[28,671,234],{"class":73},[14,673,674],{},"Outbound limit: 100 messages per day.",[43,676,678],{"id":677},"oversight","Oversight",[14,680,681],{},"The inbox is shared — the agent and the human read the same messages. From outside the\nagent, via the AxonCloud client:",[18,683,685],{"className":56,"code":684,"language":58,"meta":23,"style":23},"const messages = await client.identity.inbox.list(agentId)\n",[25,686,687],{"__ignoreMap":23},[28,688,689,691,694,696,698,701,703,706,708,710,712,715,717,720],{"class":30,"line":31},[28,690,66],{"class":65},[28,692,693],{"class":69}," messages",[28,695,74],{"class":73},[28,697,173],{"class":120},[28,699,700],{"class":77}," client",[28,702,81],{"class":73},[28,704,705],{"class":77},"identity",[28,707,81],{"class":73},[28,709,181],{"class":77},[28,711,81],{"class":73},[28,713,714],{"class":34},"list",[28,716,312],{"class":73},[28,718,719],{"class":77},"agentId",[28,721,318],{"class":73},[14,723,724],{},"Every message the agent receives is visible. Every verification flow it's in the middle\nof is inspectable. Nothing happens in the background you can't see.",[726,727],"hr",{},[14,729,730,738],{},[731,732,733],"strong",{},[734,735,737],"a",{"href":736},"\u002Fdocs\u002Fv2\u002Fagent\u002Fidentity\u002Fsigning","Signing"," — the keypair that the email address\nis an alias for. What it proves and how verification works.",[740,741,742],"style",{},"html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html pre.shiki code .sxaxS, html code.shiki .sxaxS{--shiki-default:#D16969}html pre.shiki code .sDGX8, html code.shiki .sDGX8{--shiki-default:#B5CEA8}html pre.shiki code .svVle, html code.shiki .svVle{--shiki-default:#D7BA7D}",{"title":23,"searchDepth":92,"depth":92,"links":744},[745,746,747,748,749],{"id":45,"depth":92,"text":46},{"id":102,"depth":92,"text":103},{"id":242,"depth":92,"text":243},{"id":616,"depth":92,"text":617},{"id":677,"depth":92,"text":678},"md",{},"\u002Fdocs\u002Fv2\u002Fagent\u002Fidentity\u002Femail",{"title":5,"description":16},"docs\u002Fv2\u002Fagent\u002Fidentity\u002Femail","v5mUkpFOuO2RvTkPxNXz7I_3ZrJWFQSRcJUDdvJdssY",1786104358763]