1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/share-local-app-section-D3EUh8rW.js","assets/icon-BT8FnkkJ-BXNRZ6YI.js","assets/href-SWPxf9Xv.js","assets/button-pwkdtR3U-BvUx4nf0.js","assets/slot-BsvE2ntj-B4hthNWr.js","assets/button-Dij5vCQG-D-1fShZx.js","assets/IconBase.es-Uflyhfs3.js","assets/rainbow-text-Bq55m6qb.js","assets/use-copy-to-clipboard-ByLT8veV-DrUBkRzU.js","assets/browser-only-Crr3sgA0-ChZXuJOp.js","assets/ArrowRight.es-DbIDcYkD.js","assets/ShareFat.es-Cv4Iziuc.js","assets/posthog-BUtcC3lK.js","assets/decorative-svg-BE0lCU_Y.js","assets/apple-BPauvOEv.js","assets/docker-B9u9Ukyc.js","assets/windows-Dm7SmS4e.js","assets/Check.es-8Z9PE5Fq.js","assets/Copy.es-CyaitNqw.js","assets/dist-14AyZkaC.js","assets/dist-BGdOy5lc.js","assets/preconnect-on-intent-Ct11lnrS.js","assets/dist-B4Hriy8K.js","assets/prompt-DdvZDrVW.js","assets/download-href-qq8Oap3w.js","assets/detect-platform-CMY_juDf.js","assets/DotsThree.es-odXSAr52.js","assets/testimonials-section-C8CGSa57.js","assets/hooks-DwpBe2z4.js","assets/logo-loop-Oh0ihhVA.js","assets/use-prefers-reduced-motion-Cj9tJ181-qAhyIwDp.js","assets/use-matches-media-query-m860lols-BPcGxkvr.js","assets/types-D85fCNV3-DOc6skV4.js","assets/love-card-Dar3c5Rw.js","assets/card-y7Mq0rH2.js"])))=>i.map(i=>d[i]); 2import{A as e,K as t,Y as n,i as r,l as i,o as a,t as o,w as s}from"./icon-BT8FnkkJ-BXNRZ6YI.js";import{t as c}from"./href-SWPxf9Xv.js";import{t as l}from"./canonical-origin-DEvI19Uw.js";import{t as u}from"./button-Dij5vCQG-D-1fShZx.js";import{t as d}from"./rainbow-gradient-blur-ChSjnpBD.js";import{t as f}from"./rainbow-text-Bq55m6qb.js";import{t as p}from"./ArrowRight.es-DbIDcYkD.js";import{t as m}from"./Globe.es-D47Pp2Ey.js";import{t as h}from"./Sparkle.es-D-iS7tAi.js";import{t as g}from"./posthog-BUtcC3lK.js";import{r as _}from"./dashboard-link-CFy8vj_N.js";import{t as v}from"./glow-cta-anchor-BMFtzL9f.js";import{t as y}from"./CheckCircle.es-BQuhItOx.js";import{a as b,c as x,i as S,l as C,n as w,o as T,s as E,u as D}from"./json-ld-JSGdREsX.js";import{t as O}from"./title-CRAFBM5R.js";import{t as k}from"./decorative-svg-BE0lCU_Y.js";import{t as A}from"./logo-loop-Oh0ihhVA.js";import{t as j}from"./scroll-depth-tracker-BIkLmn0C.js";import{t as M}from"./spotlight-card-DbSuHGOD.js";import{n as N,t as P}from"./lazy-home-page-svgs-832CDDg7.js";var F=r();function I(){return(0,F.jsxs)(`h1`,{className:`font-family text-strong min-h-30 w-full text-center text-6xl leading-none text-balance md:min-h-36 md:text-7xl`,children:[`Connect anything,`,(0,F.jsx)(`br`,{}),(0,F.jsx)(f,{className:`will-change-transform`,children:`anywhere.`})]})}function L(){return(0,F.jsx)(`p`,{className:`text-body max-w-lg text-center text-xl`,children:`ngrok is developer infrastructure that routes and secures traffic to your apps, APIs, and AI models.`})}var R=n(t(),1),z=(0,R.lazy)(()=>s(()=>import(`./share-local-app-section-D3EUh8rW.js`).then(e=>e.n).then(e=>({default:e.ShareLocalAppSection})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]))),B=(0,R.lazy)(()=>s(()=>import(`./testimonials-section-C8CGSa57.js`).then(e=>e.n).then(e=>({default:e.TestimonialsSection})),__vite__mapDeps([27,1,2,5,4,6,28,10,29,30,9,31,32,33,34])));function V(e){return(0,F.jsx)(R.Suspense,{fallback:(0,F.jsx)(`div`,{className:`min-h-188 sm:min-h-197 min-[70.625rem]:min-h-140`}),children:(0,F.jsx)(z,{...e})})}function H(e){return(0,F.jsx)(R.Suspense,{fallback:(0,F.jsx)(`div`,{className:`min-h-208 sm:min-h-229 md:min-h-226`}),children:(0,F.jsx)(B,{...e})})}var U=`ngrok: deliver your apps, APIs, and AI on local and prod`,W=`ngrok is developer infrastructure that routes and secures traffic to your apps, APIs, and AI models, wherever they run. Start on localhost, ship to prod.`,G=({location:e})=>{let t=l(e.pathname),n=l(`/assets/home/og-image.png`);return[...O(U),...C(W),...x(n),...D(t),E([T(),w(),b({name:U,description:W,pathname:e.pathname}),S({name:`ngrok`,pathname:e.pathname,description:W,featureList:[`AI gateway routing any hosted or self-hosted model behind one URL`,`API gateway with load balancing, WAF, and observability built in`,`Secure tunnels to services running anywhere with zero open ports`,`Traffic Policy for routing, transforming, and authenticating requests`,`SOC 2, HIPAA, and GDPR-ready with SSO, RBAC, and audit logs`]})])]},K=e(function(){return(0,F.jsxs)(`div`,{className:`relative`,children:[(0,F.jsx)(j,{}),(0,F.jsx)(q,{}),(0,F.jsx)(J,{}),(0,F.jsx)(Y,{}),(0,F.jsx)(V,{showShareLocalhostBranding:!0,copyEventSource:`homepage`,heading:(0,F.jsxs)(F.Fragment,{children:[`Try ngrok by sharing a local app. `,(0,F.jsx)(`br`,{className:`hidden md:block`}),(0,F.jsx)(`span`,{className:`italic`,children:`Right now`}),`.`]})}),(0,F.jsx)(H,{heading:`Developers go on and on about us.`,showSeeMoreCta:!1}),(0,F.jsx)(X,{}),(0,F.jsx)(Z,{})]})});function q({className:e,...t}){let n=_(`https://dashboard.ngrok.com/signup`);return(0,F.jsx)(`section`,{className:a(`flex flex-col items-center justify-center px-4 pt-20 pb-12`,e),...t,children:(0,F.jsxs)(`div`,{className:`relative flex w-full max-w-270 flex-col items-center`,children:[(0,F.jsx)(d,{}),(0,F.jsxs)(`div`,{className:`flex w-full max-w-full flex-col items-center space-y-6`,children:[(0,F.jsxs)(`div`,{className:`flex w-full flex-col items-center space-y-2`,children:[(0,F.jsx)(I,{}),(0,F.jsx)(L,{})]}),(0,F.jsx)(`div`,{className:`2xs:w-auto relative w-full shrink-0`,children:(0,F.jsx)(v,{href:n,className:`2xs:w-auto w-full shrink-0`,id:`hero-signup-cta`,onClick:()=>g(`cta_clicked`,{cta_id:`hero-signup-cta`,page:`/`,location:`hero`,destination:n}),children:`Get started (for free)`})})]})]})})}function J({className:e,...t}){return(0,F.jsx)(`section`,{className:a(`flex w-full justify-center px-4 py-8`,e),...t,children:(0,F.jsx)(`div`,{className:`flex w-full max-w-300 flex-col items-center`,children:(0,F.jsx)(`div`,{className:`relative w-full overflow-hidden mask-x-from-90% mask-x-to-100% md:mask-x-from-70% md:mask-x-to-90%`,children:(0,F.jsx)(A,{})})})})}function Y({className:e,...t}){return(0,F.jsx)(`section`,{className:a(`flex flex-col items-center justify-center px-4 pt-4 pb-12`,e),...t,children:(0,F.jsxs)(`div`,{className:`relative flex w-full max-w-133 flex-col gap-4 min-[64rem]:max-w-267`,children:[(0,F.jsxs)(`div`,{className:`flex w-full flex-col items-center gap-2 pt-4 pb-2`,children:[(0,F.jsx)(`p`,{className:`text-muted text-center font-mono text-[0.75rem] font-medium tracking-[0.08em] uppercase`,children:`Our products`}),(0,F.jsx)(`h2`,{className:`font-family text-strong text-center text-4xl leading-none text-balance md:text-5xl`,children:`Way more than a tunnel to localhost.`})]}),(0,F.jsxs)(`div`,{className:`grid items-stretch gap-4 min-[64rem]:grid-cols-2`,children:[(0,F.jsx)(M,{asChild:!0,spotlightColor:`rgba(245, 158, 11, 0.2)`,className:`relative flex flex-col items-center gap-6 overflow-hidden p-8 text-center transition-colors hover:border-amber-600/30`,children:(0,F.jsxs)(`a`,{href:`https://ngrok.ai`,target:`_blank`,rel:`noopener`,id:`home-tile-ai-gateway`,onClick:()=>g(`home_product_tile_clicked`,{product:`ai_gateway`,destination:`https://ngrok.ai`}),children:[(0,F.jsxs)(`div`,{className:`pointer-events-none flex flex-col items-center gap-2`,children:[(0,F.jsx)(`div`,{className:`flex items-center justify-center rounded-md bg-amber-500/20 p-2`,children:(0,F.jsx)(o,{className:`size-8 text-amber-600`,svg:(0,F.jsx)(h,{weight:`regular`})})}),(0,F.jsx)(`span`,{className:`font-mono text-[0.8125rem] font-medium tracking-wider text-amber-600 uppercase`,children:`AI Gateway`}),(0,F.jsx)(`h3`,{className:`text-strong text-3xl font-semibold text-balance`,children:`The managed path to any model and inference provider.`}),(0,F.jsx)(`p`,{className:`text-body text-sm text-balance`,children:`Change one URL to route between hosted or self-hosted models, with failover and observability built in.`})]}
2),(0,F.jsx)(P,{"aria-hidden":!0,className:`pointer-events-none w-full max-w-full mask-t-from-95%`}),(0,F.jsx)(`span`,{className:`text-strong pointer-events-none mt-auto inline-flex h-9 items-center justify-center rounded-full bg-neutral-500/20 px-[1.125rem] font-mono text-[0.8125rem] font-medium tracking-wider uppercase transition-colors group-hover:bg-neutral-950 group-hover:text-neutral-50`,children:`Learn more`})]})}),(0,F.jsx)(M,{asChild:!0,spotlightColor:`rgba(16, 185, 129, 0.2)`,className:`relative flex flex-col items-center gap-6 overflow-hidden p-8 text-center transition-colors hover:border-emerald-600/30`,children:(0,F.jsxs)(i,{to:c(`/gateway`),id:`home-tile-gateway`,onClick:()=>g(`home_product_tile_clicked`,{product:`gateway`,destination:`/gateway`}),children:[(0,F.jsxs)(`div`,{className:`pointer-events-none flex flex-col items-center gap-2`,children:[(0,F.jsx)(`div`,{className:`flex items-center justify-center rounded-md bg-emerald-500/20 p-2`,children:(0,F.jsx)(o,{className:`size-8 text-emerald-600`,svg:(0,F.jsx)(m,{weight:`regular`})})}),(0,F.jsx)(`span`,{className:`font-mono text-[0.8125rem] font-medium tracking-wider text-emerald-600 uppercase`,children:`Gateway`}),(0,F.jsx)(`h3`,{className:`text-strong text-3xl font-semibold text-balance`,children:`One gateway to services running anywhere.`}),(0,F.jsx)(`p`,{className:`text-body text-sm text-balance`,children:`An all-in-one cloud networking platform that secures, transforms, and routes traffic to all your services no matter where they run.`})]}),(0,F.jsx)(N,{"aria-hidden":!0,className:`pointer-events-none w-full max-w-full mask-t-from-95%`}),(0,F.jsx)(`span`,{className:`text-strong pointer-events-none mt-auto inline-flex h-9 items-center justify-center rounded-full bg-neutral-500/20 px-[1.125rem] font-mono text-[0.8125rem] font-medium tracking-wider uppercase transition-colors group-hover:bg-neutral-950 group-hover:text-neutral-50`,children:`Learn more`})]})})]})]})})}function X({className:e,...t}){return(0,F.jsx)(`section`,{className:a(`flex flex-col items-center gap-12 px-4 py-12 sm:py-20`,e),...t,children:(0,F.jsxs)(`div`,{className:`relative flex w-full max-w-270 flex-col items-center gap-12`,children:[(0,F.jsx)(`div`,{className:`relative flex flex-col items-center gap-4`,children:(0,F.jsx)(`h2`,{className:`font-family text-strong relative text-center text-4xl leading-none md:text-5xl`,children:`Every security checkbox, checked.`})}),(0,F.jsxs)(`div`,{className:`flex flex-col items-center gap-8`,children:[(0,F.jsxs)(`ul`,{className:`text-strong grid grid-cols-2 gap-x-6 gap-y-2 text-sm md:grid-cols-5 md:text-base`,children:[(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`SOC2 Type II`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`HIPAA & BAA`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`GDPR`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`CCPA`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`EU-US DPF`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`RBAC`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`SSO & SCIM`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`Audit logs`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`Data residency`]}),(0,F.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`size-5 text-emerald-600 md:size-6`,svg:(0,F.jsx)(y,{weight:`duotone`})}),`White-labeling`]})]}),(0,F.jsxs)(`a`,{href:`https://trust.ngrok.com/`,className:`group flex items-center gap-2 text-emerald-600`,id:`home-trust-center`,children:[(0,F.jsx)(`span`,{className:`font-mono text-[0.8125rem] font-medium tracking-wider up
2percase`,children:`Trust Center`}),(0,F.jsx)(o,{className:`size-6 transition-transform group-hover:translate-x-1.5`,svg:(0,F.jsx)(p,{weight:`regular`})})]})]})]})})}function Z({className:e,...t}){let n=_(`https://dashboard.ngrok.com/signup`);return(0,F.jsxs)(`section`,{className:a(`relative flex flex-col items-center justify-center px-4 py-12 sm:py-20`,e),...t,children:[(0,F.jsx)(d,{}),(0,F.jsxs)(`div`,{className:`relative flex w-full max-w-268.75 flex-col items-center justify-center gap-12 min-[70.625rem]:flex-row`,children:[(0,F.jsx)(k,{}),(0,F.jsxs)(`div`,{className:`grid items-center gap-8`,children:[(0,F.jsx)(`div`,{className:`flex flex-col items-center gap-4 text-center`,children:(0,F.jsxs)(`h2`,{className:`font-family text-strong w-full max-w-6xl text-4xl leading-none md:text-5xl`,children:[`Less wrestling with infrastructure.`,(0,F.jsx)(`br`,{}),` More shipping.`]})}),(0,F.jsxs)(`div`,{className:`2xs:flex-row flex w-full flex-col items-center justify-center gap-2`,children:[(0,F.jsx)(v,{href:n,className:`2xs:w-auto w-full shrink-0`,id:`footer-signup-cta`,onClick:()=>g(`cta_clicked`,{cta_id:`footer-signup-cta`,page:`/`,location:`footer`,destination:n}),children:`Get started (for free)`}),(0,F.jsx)(u,{intent:`neutral`,asChild:!0,appearance:`filled`,className:`bg-static-white/10 not-disabled:hover:bg-static-white/15 not-disabled:active:bg-static-white/15 2xs:w-auto h-12 w-full rounded-full px-5`,children:(0,F.jsx)(i,{to:c(`/pricing`),id:`footer-see-pricing`,onClick:()=>g(`cta_clicked`,{cta_id:`footer-see-pricing`,page:`/`,location:`footer`,destination:c(`/pricing`)}),children:(0,F.jsx)(`span`,{className:`text-strong font-mono text-[0.8125rem] leading-[1.538em] font-medium tracking-[0.05em] uppercase`,children:`See pricing`})})})]})]}),(0,F.jsx)(k,{flipped:!0})]})]})}export{K as default,G as meta};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.