[{"data":1,"prerenderedAt":346},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Fquickstart-sp":89,"\u002Fgetting-started\u002Fquickstart-sp-surround":341},[4,40,63,76],{"title":5,"path":6,"stem":7,"children":8,"icon":39},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11,15,19,23,27,31,35],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Quick Start: Service Provider","\u002Fgetting-started\u002Fquickstart-sp","1.getting-started\u002F2.quickstart-sp",{"title":16,"path":17,"stem":18},"Quick Start: Identity Provider","\u002Fgetting-started\u002Fquickstart-idp","1.getting-started\u002F3.quickstart-idp",{"title":20,"path":21,"stem":22},"Quick Start: Agent","\u002Fgetting-started\u002Fquickstart-agent","1.getting-started\u002F4.quickstart-agent",{"title":24,"path":25,"stem":26},"Quick Start","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F5.installation",{"title":28,"path":29,"stem":30},"How It Works","\u002Fgetting-started\u002Fhow-it-works","1.getting-started\u002F6.how-it-works",{"title":32,"path":33,"stem":34},"For Service Providers","\u002Fgetting-started\u002Ffor-service-providers","1.getting-started\u002F7.for-service-providers",{"title":36,"path":37,"stem":38},"CLI (apes & ape-shell)","\u002Fgetting-started\u002Fcli","1.getting-started\u002F8.cli",false,{"title":41,"path":42,"stem":43,"children":44,"icon":39},"Ecosystem","\u002Fecosystem","2.ecosystem\u002F1.index",[45,47,51,55,59],{"title":46,"path":42,"stem":43},"Overview",{"title":48,"path":49,"stem":50},"OpenApe Auth","\u002Fecosystem\u002Fauth","2.ecosystem\u002F2.auth",{"title":52,"path":53,"stem":54},"OpenApe Grants","\u002Fecosystem\u002Fgrants","2.ecosystem\u002F3.grants",{"title":56,"path":57,"stem":58},"nuxt-auth-sp","\u002Fecosystem\u002Fnuxt-auth-sp","2.ecosystem\u002F4.nuxt-auth-sp",{"title":60,"path":61,"stem":62},"escapes","\u002Fecosystem\u002Fescapes","2.ecosystem\u002F5.escapes",{"title":64,"icon":39,"path":65,"stem":66,"children":67,"page":39},"Security","\u002Fsecurity","3.security",[68,72],{"title":69,"path":70,"stem":71},"Compliance","\u002Fsecurity\u002Fcompliance","3.security\u002F1.compliance",{"title":73,"path":74,"stem":75},"Threat Model","\u002Fsecurity\u002Fthreat-model","3.security\u002F2.threat-model",{"title":77,"icon":39,"path":78,"stem":79,"children":80,"page":39},"Guides","\u002Fguides","4.guides",[81,85],{"title":82,"path":83,"stem":84},"Capabilities & Grants","\u002Fguides\u002Fcapabilities","4.guides\u002F1.capabilities",{"title":86,"path":87,"stem":88},"Delegation","\u002Fguides\u002Fdelegation","4.guides\u002F2.delegation",{"id":90,"title":12,"body":91,"description":334,"extension":335,"links":336,"meta":337,"navigation":338,"path":13,"seo":339,"stem":14,"__hash__":340},"docs\u002F1.getting-started\u002F2.quickstart-sp.md",{"type":92,"value":93,"toc":323},"minimark",[94,99,104,111,115,156,168,172,188,192,202,205,209,212,217,241,245,319],[95,96,98],"h1",{"id":97},"add-login-to-your-app","Add Login to Your App",[100,101,103],"h2",{"id":102},"prerequisites","Prerequisites",[105,106,107],"ul",{},[108,109,110],"li",{},"Node.js 22+",[100,112,114],{"id":113},"_1-create-project","1. Create Project",[116,117,122],"pre",{"className":118,"code":119,"language":120,"meta":121,"style":121},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx @openape\u002Fapes init --sp my-app\ncd my-app\n","bash","",[123,124,125,147],"code",{"__ignoreMap":121},[126,127,130,134,138,141,144],"span",{"class":128,"line":129},"line",1,[126,131,133],{"class":132},"sBMFI","npx",[126,135,137],{"class":136},"sfazB"," @openape\u002Fapes",[126,139,140],{"class":136}," init",[126,142,143],{"class":136}," --sp",[126,145,146],{"class":136}," my-app\n",[126,148,150,154],{"class":128,"line":149},2,[126,151,153],{"class":152},"s2Zo4","cd",[126,155,146],{"class":136},[157,158,159,160,163,164,167],"p",{},"This scaffolds a Nuxt app with ",[123,161,162],{},"@openape\u002Fnuxt-auth-sp"," pre-configured. The Free IdP at ",[123,165,166],{},"id.openape.ai"," is used by default.",[100,169,171],{"id":170},"_2-start","2. Start",[116,173,175],{"className":118,"code":174,"language":120,"meta":121,"style":121},"npm run dev\n",[123,176,177],{"__ignoreMap":121},[126,178,179,182,185],{"class":128,"line":129},[126,180,181],{"class":132},"npm",[126,183,184],{"class":136}," run",[126,186,187],{"class":136}," dev\n",[100,189,191],{"id":190},"_3-test","3. Test",[157,193,194,195,201],{},"Open ",[196,197,198],"a",{"href":198,"rel":199},"http:\u002F\u002Flocalhost:3001\u002Flogin",[200],"nofollow",". Enter your email and sign in with your passkey.",[157,203,204],{},"After login, you'll be redirected to the home page showing your identity.",[100,206,208],{"id":207},"done","Done",[157,210,211],{},"You now have a working DDISA login. The app uses the Free IdP — no DNS, no server, no configuration needed.",[213,214,216],"h3",{"id":215},"whats-next","What's Next?",[105,218,219,229,235],{},[108,220,221,224,225,228],{},[196,222,223],{"href":25},"Connect your own domain with DNS"," — point ",[123,226,227],{},"_ddisa.yourdomain.com"," to your IdP",[108,230,231,234],{},[196,232,233],{"href":17},"Run your own Identity Provider"," — full control over users and agents",[108,236,237,240],{},[196,238,239],{"href":29},"How DDISA works"," — understand the protocol under the hood",[213,242,244],{"id":243},"whats-in-the-starter","What's in the Starter?",[246,247,248,261],"table",{},[249,250,251],"thead",{},[252,253,254,258],"tr",{},[255,256,257],"th",{},"File",[255,259,260],{},"Purpose",[262,263,264,279,289,299,309],"tbody",{},[252,265,266,272],{},[267,268,269],"td",{},[123,270,271],{},"pages\u002Flogin.vue",[267,273,274,275,278],{},"Login page with ",[123,276,277],{},"\u003COpenApeAuth \u002F>"," component",[252,280,281,286],{},[267,282,283],{},[123,284,285],{},"pages\u002Findex.vue",[267,287,288],{},"Protected home page",[252,290,291,296],{},[267,292,293],{},[123,294,295],{},"pages\u002Fprofile.vue",[267,297,298],{},"User profile showing JWT claims",[252,300,301,306],{},[267,302,303],{},[123,304,305],{},"nuxt.config.ts",[267,307,308],{},"3 lines of OpenApe config",[252,310,311,316],{},[267,312,313],{},[123,314,315],{},".env",[267,317,318],{},"Fallback IdP URL (id.openape.ai)",[320,321,322],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":121,"searchDepth":129,"depth":149,"links":324},[325,326,327,328,329],{"id":102,"depth":149,"text":103},{"id":113,"depth":149,"text":114},{"id":170,"depth":149,"text":171},{"id":190,"depth":149,"text":191},{"id":207,"depth":149,"text":208,"children":330},[331,333],{"id":215,"depth":332,"text":216},3,{"id":243,"depth":332,"text":244},"Add DDISA login to your Nuxt app in 3 minutes.","md",null,{},true,{"title":12,"description":334},"0cSbgRYn_f1BYfy3rMskIgUSHm3jcSyXTPNLxOvqSDQ",[342,344],{"title":10,"path":6,"stem":7,"description":343,"children":-1},"What is OpenApe and why does it exist?",{"title":16,"path":17,"stem":18,"description":345,"children":-1},"Run your own DDISA Identity Provider in 3 minutes.",1776885317056]