PageSourceSearch

https://langwatch.ai/assets/HomePage-oEZ6sJ8F.js

js langwatch.ai collected 2026-10-02 14:36:38 UTC 47,601 bytes, 7 lines download raw bytes

1import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{D as t,E as n,Jt as r,M as i,R as a,Rt as o,Vt as s,cn as c,dn as l,et as u,h as d,k as ee,l as te,lt as ne,n as f,nt as re,o as p,rt as m,sn as h,st as ie,vt as g,w as ae}from"./lucide-react-Ch5qiNXM.js";import{a as _,i as oe,n as se,r as ce,t as le}from"./Footer-C4Orv-PC.js";import{t as ue}from"./jsx-runtime-BH1R-mb2.js";import{d as de}from"./index-KuE46f_e.js";import{t as v}from"./proxy-DfCMTLFT.js";import{t as fe}from"./AgentWorkspace-BYDxOMul.js";import{t as pe}from"./AnimatePresence-BRR54CPU.js";import{t as y}from"./use-reduced-motion-Cqb2XDBi.js";import{t as me}from"./use-in-view-CaYQSJbY.js";import{t as b}from"./MeshHeroBackground-BzHg2zn4.js";import{t as x}from"./WarpAccent-ClCvDVDy.js";import{s as S}from"./SectionFeatures-xnDj_wSk.js";import{n as C,r as w,t as T}from"./CustomerBentoTile-DpWAmef1.js";import{t as he}from"./CustomerLogos-CgLwWsy5.js";var E=e(l(),1),D=ue(),O=[{id:`why`,label:`Why LangWatch`},{id:`platform`,label:`Platform`},{id:`langy`,label:`Langy`},{id:`enterprise`,label:`Enterprise`},{id:`customers`,label:`Customers`}];function ge(e,t){let n=document.querySelectorAll(`[data-nav-dark]`);for(let r of n){let n=r.getBoundingClientRect();if(e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom)return!0}return!1}function _e(){let e=(0,E.useRef)(null),[t,n]=(0,E.useState)(-1),[r,i]=(0,E.useState)(!1),[a,o]=(0,E.useState)(!1);return(0,E.useEffect)(()=>{let t=0,r=()=>{let t=window.innerHeight/2,r=-1;for(let e=0;e<O.length;e++){let n=document.getElementById(O[e].id);if(!n)continue;let i=n.getBoundingClientRect();i.top<=t&&i.bottom>t&&(r=e)}n(r);let a=document.getElementById(`why-heading`)?.getBoundingClientRect(),s=document.getElementById(`customers`)?.getBoundingClientRect(),c=!!a&&!!s&&a.top<=t&&s.bottom>t,l=!1;for(let e of document.querySelectorAll(`[data-carousel-row]`)){let n=e.getBoundingClientRect();if(n.top<t+140&&n.bottom>t-140&&e.scrollLeft>16){l=!0;break}}i(c&&!l);let u=e.current;if(u){let e=u.getBoundingClientRect();o(ge(e.left+e.width/2,t))}},a=()=>{cancelAnimationFrame(t),t=requestAnimationFrame(r)};r(),window.addEventListener(`scroll`,a,{passive:!0}),window.addEventListener(`resize`,a);let s=Array.from(document.querySelectorAll(`[data-carousel-row]`));return s.forEach(e=>e.addEventListener(`scroll`,a,{passive:!0})),()=>{window.removeEventListener(`scroll`,a),window.removeEventListener(`resize`,a),s.forEac
1h(e=>e.removeEventListener(`scroll`,a)),cancelAnimationFrame(t)}},[]),(0,D.jsx)(`nav`,{ref:e,"aria-label":`Sections`,className:_(`fixed top-1/2 z-30 hidden -translate-y-1/2 pl-6 transition-opacity duration-[250ms] [@media(min-width:1440px)]:block`,r?`opacity-100`:`pointer-events-none opacity-0`),style:{left:`calc((100vw - 1440px) / 2 + 40px)`},children:(0,D.jsx)(`ul`,{className:`flex flex-col gap-4`,children:O.map((e,n)=>{let r=n===t;return(0,D.jsx)(`li`,{children:(0,D.jsx)(`a`,{href:`#${e.id}`,onClick:t=>{if(t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let n=document.getElementById(e.id);if(!n)return;t.preventDefault();let r=n.getBoundingClientRect().top+window.scrollY-88;window.scrollTo({top:Math.max(0,r),behavior:`smooth`})},className:_(`whitespace-nowrap text-[13.5px] transition-colors duration-300`,r?`font-semibold`:`font-medium`,a?r?`text-white`:`text-white/35 hover:text-white/70`:r?`text-ink-900`:`text-ink-400 hover:text-ink-600`),children:e.label})},e.id)})})})}var k=`https://langwatch.ai/docs/self-hosting/overview`,A=`https://app.langwatch.ai/`,j=`https://app.langwatch.ai/`,M=`npx @langwatch/server`;function N({inverse:e=!1}){let[t,n]=(0,E.useState)(!1),[r,i]=(0,E.useState)(!1),[a,o]=(0,E.useState)(null),s=(0,E.useRef)(null),c=(0,E.useRef)(void 0),l=()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect();o({top:t.bottom,cx:t.left+t.width/2})},u=()=>{window.clearTimeout(c.current),l(),n(!0)},d=()=>{c.current=window.setTimeout(()=>n(!1),130)};return(0,E.useEffect)(()=>()=>window.clearTimeout(c.current),[]),(0,E.useEffect)(()=>{if(!t)return;let e=()=>l();return window.addEventListener(`scroll`,e,{passive:!0}),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e),window.removeEventListener(`resize`,e)}},[t]),(0,D.jsxs)(`span`,{className:`relative inline-flex`,onMouseEnter:u,onMouseLeave:d,children:[(0,D.jsx)(`a`,{ref:s,href:k,onClick:e=>{let t=window.innerWidth<768,n=window.matchMedia(`(hover: none)`).matches;(t||n)&&(e.preventDefault(),i(!0))},className:e?`inline-flex items-center rounded-full border border-white/20 px-5 py-3 text-sm font-semibold text-white`:`btn-secondary !px-5 !py-3`,children:`Self-host in 15 min`}),(0,D.jsx)(ce,{children:(0,D.jsx)(pe,{children:t&&a&&(0,D.jsx)(ve,{top:a.top,cx:a.cx,onEnter:u,onLeave:d})})}),(0,D.jsx)(w,{open:r,onClose:()=>i(!1),ariaLabel:`Self-host LangWatch`,size:`md`,children:(0,D.jsx)(P,{onClose:()=>i(!1)})})]})}function P({onClose:e}){return(0,D.jsxs)(`div`,{className:`flex flex-col gap-7 p-6 pb-10 sm:p-8`,children:[(0,D.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`font-mono text-[11.5px] font-medium uppercase tracking-[0.22em] text-ink-400`,children:`Self-host`}),(0,D.jsx)(`h2`,{className:`display mt-2 text-[28px] leading-[1.05] text-ink-950`,children:`Three ways to run LangWatch.`})]}),(0,D.jsx)(`button`,{type:`button`,onClick:e,"aria-label":`Close`,className:`inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-ink-500 transition hover:bg-ink-100 hover:text-ink-900`,children:(0,D.jsx)(f,{className:`h-4 w-4`})})]}),(0,D.jsxs)(`div`,{className:`flex flex-col gap-7 border-t border-ink-100 pt-7`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col`,children:[(0,D.jsx)(R,{title:`Start in the cloud`,desc:`We run the full platform. Be sending traces in under a minute.`}),(0,D.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[(0,D.jsx)(`a`,{href:j,className:`btn-secondary !px-5 !py-2.5 !text-[13.5px]`,children:`Sign in`}),(0,D.jsx)(`a`,{href:A,className:`btn-primary !px-5 !py-2.5 !text-[13.5px]`,children:`Sign up`})]}),(0,D.jsx)(`div`,{className:`mt-5`,children:(0,D.jsx)(z,{})})]}),(0,D.jsxs)(`div`,{className:`flex flex-col border-t border-ink-100 pt-7`,children:[(0,D.jsx)(R,{title:`Run on your machine`,desc:`The whole stack on your laptop, ready in minutes.`}),(0,D.jsx)(B,{})]}),(0,D.jsxs)(`div`,{className:`flex flex-col border-t border-ink-100 pt-7`,children:[(0,D.jsx)(R,{title:`Self-Host with Helm charts`,desc:`Ship to your own cluster, production-ready.`}),(0,D.jsx)(H,{}),(0,D.jsxs)(`a`,{href:k,className:`mt-4 inline-flex items-center gap-1 text-[13px] font-medium text-[#1e3aa6] transition-colors hover:text-[#152a78]`,children:[`Read the self-hosting docs`,(0,D.jsx)(h,{className:`h-3.5 w-3.5`})]})]})]})]})}var F=24,I=1440;function ve({top:e,cx:t,onEnter:n,onLeave:r}){let i=y(),a=typeof window<`u`?window.innerWidth:I,o=Math.min(a-F*2,I),s=Math.max(F,(a-o)/2),c=Math.min(Math.max(t-s,30),o-30),l={hidden:{},show:{transition:{staggerChildren:.05,delayChildren:i?0:.04}}},u={hidden:{opacity:0,y:10},show:{opacity:1,y:0,transition:{duration:.36,ease:[.22,1,.36,1]}}};return(0,D.jsx)(v.div,{onMouseEnter:n,onMouseLeave:r,style:{position:`fixed`,top:e+12,left:s,width:o,zIndex:60},initial:i?!1:{opacity:0,y:-6}
1,animate:{opacity:1,y:0},exit:{opacity:0,y:-6,transition:{duration:.15}},transition:{duration:.22,ease:`easeOut`},children:(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(ye,{left:c,reduce:!!i}),(0,D.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-black/[0.09] bg-white shadow-[0_40px_100px_-30px_rgba(20,15,40,0.42),0_12px_40px_-14px_rgba(20,15,40,0.16)]`,children:(0,D.jsx)(v.div,{variants:l,initial:i?!1:`hidden`,animate:`show`,className:`relative`,children:(0,D.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3`,children:[(0,D.jsxs)(v.div,{variants:u,className:`flex flex-col p-7 md:p-9`,children:[(0,D.jsx)(R,{title:`Start in the cloud`,desc:`We run the full platform. Be sending traces in under a minute.`}),(0,D.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[(0,D.jsx)(`a`,{href:j,className:`btn-secondary !px-5 !py-2.5 !text-[13.5px]`,children:`Sign in`}),(0,D.jsx)(`a`,{href:A,className:`btn-primary !px-5 !py-2.5 !text-[13.5px]`,children:`Sign up`})]}),(0,D.jsx)(`div`,{className:`mt-5`,children:(0,D.jsx)(z,{})})]}),(0,D.jsxs)(v.div,{variants:u,className:`flex flex-col p-7 md:border-l md:border-ink-100 md:p-9`,children:[(0,D.jsx)(R,{title:`Run on your machine`,desc:`The whole stack on your laptop, ready in minutes.`}),(0,D.jsx)(B,{})]}),(0,D.jsxs)(v.div,{variants:u,className:`flex flex-col p-7 md:border-l md:border-ink-100 md:p-9`,children:[(0,D.jsx)(R,{title:`Self-Host with Helm charts`,desc:`Ship to your own cluster, production-ready.`}),(0,D.jsx)(H,{}),(0,D.jsxs)(`a`,{href:k,className:`mt-4 inline-flex items-center gap-1 text-[13px] font-medium text-[#1e3aa6] transition-colors hover:text-[#152a78]`,children:[`Read the self-hosting docs`,(0,D.jsx)(h,{className:`h-3.5 w-3.5`})]})]})]})})})]})})}function ye({left:e,reduce:t}){return(0,D.jsx)(v.div,{"aria-hidden":!0,className:`absolute z-20 h-3.5 w-3.5 border-l border-t bg-white`,style:{left:e,top:-7,transform:`translateX(-50%) rotate(45deg)`,borderColor:`rgba(0,0,0,0.09)`,borderTopLeftRadius:3,boxShadow:`-3px -3px 6px -3px rgba(20,15,40,0.06)`},initial:t?!1:{opacity:0},animate:{opacity:1},transition:{duration:.2,delay:.08}})}function L({text:e,className:t}){let[n,i]=(0,E.useState)(!1);return(0,D.jsx)(`button`,{type:`button`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>{i(!0),window.setTimeout(()=>i(!1),1500)})},"aria-label":`Copy`,className:t,children:n?(0,D.jsx)(r,{className:`h-4 w-4 text-moss-accent`,strokeWidth:2.6}):(0,D.jsx)(o,{className:`h-4 w-4`,strokeWidth:2})})}function R({title:e,desc:t}){return(0,D.jsxs)(`div`,{className:`mb-5`,children:[(0,D.jsx)(`h3`,{className:`text-[19px] font-semibold tracking-[-0.01em] text-ink-900`,children:e}),(0,D.jsx)(`p`,{className:`mt-1.5 text-[13.5px] leading-relaxed text-ink-500`,children:t})]})}function z(){return(0,D.jsx)(`ul`,{className:`space-y-1.5 text-[12.5px]`,children:[[`ISO`,`27001`],[`GDPR`,`Compliant`],[`EU`,`Hosted`]].map(([e,t])=>(0,D.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(r,{className:`h-3.5 w-3.5 text-moss-accent`,strokeWidth:2.5}),(0,D.jsxs)(`span`,{children:[(0,D.jsx)(`span`,{className:`font-semibold text-ink-700`,children:e}),` `,(0,D.jsx)(`span`,{className:`text-ink-400`,children:t})]})]},e))})}function B(){return(0,D.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-white/[0.06] bg-[#0f0e13] px-4 py-3 font-mono text-[12.5px]`,children:[(0,D.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[(0,D.jsx)(`span`,{className:`text-[#8fb0f2]`,children:`$`}),` `,(0,D.jsx)(`span`,{className:`text-[#e8ecf8]`,children:`npx @langwatch/server`})]}),(0,D.jsx)(L,{text:M,className:`shrink-0 text-white/40 transition-colors hover:text-white/85`})]})}var V=`helm repo add langwatch https://langwatch.github.io/langwatch
2helm repo update
3helm pull langwatch/langwatch --untar
4helm install langwatch ./langwatch \\
5  --namespace langwatch --create-namespace \\
6  -f langwatch/examples/values-local.yaml`;function H(){return(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(`pre`,{className:`overflow-x-auto rounded-xl border border-ink-100 bg-ink-50/70 p-4 pr-11 font-mono text-[11px] leading-relaxed text-ink-600`,children:V}),(0,D.jsx)(L,{text:V,className:`absolute right-2.5 top-2.5 rounded-md border border-ink-100 bg-white/85 p-1.5 text-ink-400 transition-colors hover:text-ink-700`})]})}var be=`Simulation-based AI agent testing and evaluation that turns unpredictable agents into reliable production systems.`;function xe(){return(0,D.jsxs)(`a`,{href:`/langy`,className:`mb-[22px] inline-flex items-center gap-1.5 whitespace-nowrap rounded-full bg-brand-500/10 px-2.5 py-1 text-[11.5px] font-medium tracking-[-0.005em] text-brand-700 no-underline transition-colors`,children:[(0,D.jsx)(p,{className:`h-3.5 w-3.5`}),`Introducing Langy`,(0,D.jsx)(h,{className:`h-3.5 w-3.5`})]})}function Se({inverse:e=!1}){return(0,D.jsxs)(`div`,{className:`mt-8 flex flex-wrap items-center gap-3`,children:[(0,D.jsx)(`a`,{href:`/get-a-demo`,"data-nav-dark":e?void 0:!0,className:e?`inline-flex items-center gap-2 rounded-full bg-white px-5 py-3 text-sm font-semibold text-ink-950`:`btn-primary !px-5 !py-3`,children:`Book a demo`}),(0,D.jsx)(N,{inverse:e})]})}function Ce(){return(0,D.jsxs)(`section`,{className:`relative isolate -mt-16 overflow-hidden bg-white`,children:[(0,D.jsxs)(`div`,{className:`relative pt-32 pb-[260px] md:pt-28 md:pb-[430px]`,children:[(0,D.jsx)(b,{protectSide:`left`,fadeBottom:!0}),(0,D.jsx)(`div`,{className:`container-wide relative z-10`,children:(0,D.jsxs)(`div`,{className:`max-w-[680px]`,children:[(0,D.jsx)(xe,{}),(0,D.jsxs)(`h1`,{className:`display text-[38px] text-ink-900 sm:text-[46px] md:text-[56px]`,children:[`When your agents`,(0,D.jsx)(`br`,{}),`get complex`]}),(0,D.jsx)(`p`,{className:`mt-8 max-w-[610px] text-[17px] leading-[1.65] text-[#39445c]`,children:be}),(0,D.jsx)(Se,{})]})})]}),(0,D.jsx)(`div`,{className:`container-wide relative z-10 -mt-[200px] md:-mt-[350px]`,children:(0,D.jsx)(fe,{})})]})}var we=[.22,1,.36,1];
6function Te(){return(0,D.jsx)(`svg`,{viewBox:`0 0 256 256`,className:`h-[18px] w-[18px]`,fill:`currentColor`,"aria-hidden":!0,children:(0,D.jsx)(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40v72a8,8,0,0,0,16,0V40h88V88a8,8,0,0,0,8,8h48V224a8,8,0,0,0,16,0V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM144,144H128a8,8,0,0,0-8,8v56a8,8,0,0,0,8,8h16a36,36,0,0,0,0-72Zm0,56h-8V160h8a20,20,0,0,1,0,40Zm-40-48v56a8,8,0,0,1-16,0V177.38L74.55,196.59a8,8,0,0,1-13.1,0L48,177.38V208a8,8,0,0,1-16,0V152a8,8,0,0,1,14.55-4.59L68,178.05l21.45-30.64A8,8,0,0,1,104,152Z`})})}function U(){return(0,D.jsx)(`svg`,{viewBox:`0 0 256 256`,className:`h-[18px] w-[18px]`,fill:`currentColor`,"aria-hidden":!0,children:(0,D.jsx)(`path`,{d:`M144,92a12,12,0,1,1,12,12A12,12,0,0,1,144,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216ZM56,120H200v-8a72,72,0,0,0-144,0Zm64,95.54V136H56v8A72.08,72.08,0,0,0,120,215.54ZM200,144v-8H136v79.54A72.08,72.08,0,0,0,200,144Z`})})}function Ee(){return(0,D.jsxs)(`svg`,{viewBox:`0 0 24 24`,className:`h-[18px] w-[18px]`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinejoin:`round`,"aria-hidden":!0,children:[(0,D.jsx)(`path`,{d:`M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949z`}),(0,D.jsx)(`path`,{d:`M6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z`,fill:`currentColor`,stroke:`none`})]})}var De=[{icon:(0,D.jsx)(Te,{}),title:`Spec-driven agent building`,detail:`Turn your requirements into agent tests automatically.`},{icon:(0,D.jsx)(Ee,{}),title:`Speed up development`,detail:`Set up a self-improving agent loop.`},{icon:(0,D.jsx)(U,{}),title:`Replicate and fix issues from production`,detail:`Turn a production trace into a simulation and prove the fix.`}];function Oe(){let e=y()??!1,t=t=>e?{initial:!1,animate:{opacity:1,y:0}}:{initial:{opacity:0,y:8},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:`0px 0px 200px 0px`},transition:{duration:.55,ease:we,delay:t}};return(0,D.jsx)(`section`,{id:`why`,className:`relative scroll-mt-0 bg-paper`,children:(0,D.jsx)(`div`,{className:`container-rail pt-16 pb-24 md:pt-28 md:pb-32`,children:(0,D.jsxs)(`div`,{className:`mx-auto max-w-[1120px]`,children:[(0,D.jsxs)(v.h2,{...t(.06),id:`why-heading`,className:`text-[26px] font-semibold leading-[1.14] tracking-[-0.02em] text-ink-950 md:text-[33px]`,children:[(0,D.jsx)(`span`,{className:`text-ink-500`,children:`AI agents are still tested by hand, breaking in production.`}),(0,D.jsx)(`br`,{}),`LangWatch brings`,` `,(0,D.jsx)(`span`,{className:`text-rainbow-shift`,children:`loop engineering`}),` to agent testing and evaluation.`]}),(0,D.jsxs)(`div`,{className:`mt-20 grid gap-12 md:grid-cols-2 md:items-start md:gap-16 md:mt-24`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(v.div,{...t(.09),className:`max-w-[520px] space-y-4 text-[16px] leading-[1.7] text-ink-600`,children:[(0,D.jsx)(`p`,{children:`An agent can take a hundred paths to the same goal, testing them by hand catches only a few.`}),(0,D.jsx)(`p`,{children:`The best teams run agent simulations as continuous testing and evaluation, so reliability climbs every release.`})]}),(0,D.jsx)(`div`,{className:`mt-10 space-y-7`,children:De.map((e,n)=>(0,D.jsxs)(v.div,{...t(.12+n*.06),className:`flex items-start gap-4`,children:[(0,D.jsx)(`span`,{className:`mt-0.5 grid h-9 w-9 shrink-0 place-items-center rounded-xl border border-white/70 bg-white/50 text-brand-700 shadow-[inset_0_1px_1px_rgba(255,255,255,0.9),inset_0_0_0_0.5px_rgba(255,255,255,0.5),0_6px_14px_-6px_rgba(20,20,23,0.18)] backdrop-blur-md`,children:e.icon}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`p`,{className:`text-[16px] font-semibold tracking-tight text-ink-950`,children:e.title}),(0,D.jsx)(`p`,{className:`mt-1 max-w-[460px] text-[14.5px] leading-[1.55] text-ink-500`,children:e.detail})]})]},e.title))})]}),(0,D.jsxs)(v.figure,{...t(.12),children:[(0,D.jsx)(ke,{}),(0,D.jsx)(`figcaption`,{className:`sr-only`,children:`Specs to simulations to agent improvement, repeating as a continuous loop.`})]})]})]})})})}var W=`#d97757`,G=[`M0.93,0.5 C0.93,0.537 0.926,0.576 0.917,0.612 C0.908,0.648 0.897,0.686 0.878,0.718 C0.859,0.75 0.831,0.78 0.802,0.802 C0.773,0.824 0.735,0.837 0.702,0.849 C0.669,0.861 0.635,0.868 0.601,0.876 C0.567,0.884 0.535,0.895 0.5,0.899 C0.465,0.903 0.427,0.908 0.393,0.901 C0.359,0.894 0.323,0.877 0.295,0.856 C0.267,0.835 0.246,0.802 0.226,0.774 C0.206,0.746 0.193,0.716 0.176,0.687 C0.159,0.658 0.139,0.632 0.123,0.601 C0.107,0.57 0.087,0.536 0.079,0.5 C0.071,0.464 0.069,0.423 0.076,0.386 C0.083,0.349 0.1,0.313 0.119,0.28 C0.138,0.247 0.162,0.216 0.189,0.189 C0.216,0.162 0.247,0.135 0.28,0.118 C0.314,0.101 0.353,0.089 0.39,0.088 C0.427,
60.087 0.466,0.098 0.5,0.11 C0.534,0.122 0.563,0.144 0.592,0.158 C0.621,0.172 0.647,0.183 0.677,0.194 C0.707,0.205 0.743,0.21 0.774,0.226 C0.805,0.242 0.841,0.262 0.865,0.289 C0.889,0.316 0.908,0.353 0.919,0.388 C0.93,0.423 0.93,0.463 0.93,0.5Z`,`M0.931,0.5 C0.93,0.538 0.926,0.575 0.916,0.611 C0.906,0.647 0.893,0.685 0.872,0.715 C0.851,0.745 0.822,0.772 0.792,0.792 C0.763,0.813 0.727,0.825 0.695,0.838 C0.663,0.851 0.633,0.862 0.6,0.873 C0.568,0.884 0.535,0.898 0.5,0.903 C0.466,0.908 0.427,0.91 0.393,0.901 C0.36,0.892 0.326,0.871 0.299,0.849 C0.272,0.827 0.252,0.796 0.23,0.77 C0.208,0.744 0.189,0.718 0.168,0.691 C0.147,0.664 0.121,0.638 0.103,0.606 C0.085,0.574 0.067,0.537 0.061,0.5 C0.056,0.463 0.06,0.422 0.07,0.385 C0.08,0.349 0.1,0.313 0.121,0.281 C0.142,0.249 0.166,0.219 0.194,0.194 C0.222,0.169 0.253,0.144 0.287,0.13 C0.321,0.116 0.361,0.111 0.396,0.111 C0.432,0.112 0.468,0.124 0.5,0.133 C0.532,0.142 0.559,0.155 0.59,0.163 C0.621,0.171 0.651,0.172 0.685,0.179 C0.719,0.187 0.759,0.191 0.792,0.208 C0.825,0.225 0.859,0.25 0.881,0.28 C0.903,0.31 0.917,0.349 0.925,0.386 C0.933,0.423 0.933,0.463 0.931,0.5Z`,`M0.927,0.5 C0.925,0.537 0.921,0.575 0.91,0.61 C0.899,0.645 0.883,0.681 0.861,0.709 C0.84,0.737 0.809,0.761 0.781,0.781 C0.753,0.801 0.721,0.815 0.691,0.831 C0.661,0.847 0.633,0.863 0.601,0.876 C0.569,0.889 0.535,0.906 0.5,0.91 C0.465,0.914 0.426,0.911 0.393,0.9 C0.36,0.889 0.329,0.865 0.302,0.844 C0.275,0.823 0.254,0.795 0.229,0.771 C0.205,0.747 0.179,0.726 0.155,0.699 C0.131,0.672 0.101,0.644 0.084,0.611 C0.067,0.578 0.053,0.538 0.051,0.5 C0.049,0.462 0.059,0.421 0.072,0.385 C0.085,0.349 0.106,0.316 0.128,0.285 C0.15,0.254 0.174,0.225 0.202,0.202 C0.23,0.179 0.263,0.158 0.296,0.146 C0.329,0.134 0.367,0.132 0.401,0.132 C0.435,0.132 0.468,0.142 0.5,0.146 C0.532,0.15 0.56,0.152 0.593,0.154 C0.626,0.156 0.662,0.15 0.698,0.156 C0.734,0.162 0.778,0.17 0.81,0.19 C0.842,0.21 0.871,0.242 0.89,0.275 C0.909,0.308 0.918,0.349 0.924,0.386 C0.93,0.424 0.929,0.463 0.927,0.5Z`,`M0.919,0.5 C0.917,0.536 0.913,0.573 0.901,0.607 C0.89,0.641 0.871,0.675 0.85,0.702 C0.829,0.729 0.799,0.751 0.772,0.772 C0.745,0.793 0.718,0.811 0.69,0.83 C0.662,0.849 0.635,0.87 0.603,0.884 C0.571,0.898 0.535,0.914 0.5,0.916 C0.465,0.918 0.426,0.911 0.393,0.898 C0.36,0.886 0.331,0.861 0.303,0.841 C0.275,0.821 0.25,0.799 0.223,0.777 C0.196,0.755 0.165,0.735 0.139,0.708 C0.114,0.681 0.085,0.65 0.07,0.615 C0.055,0.58 0.048,0.538 0.05,0.5 C0.052,0.462 0.067,0.423 0.082,0.388 C0.097,0.353 0.118,0.321 0.14,0.292 C0.162,0.263 0.186,0.235 0.213,0.213 C0.241,0.191 0.273,0.173 0.305,0.162 C0.337,0.151 0.373,0.149 0.405,0.146 C0.438,0.143 0.468,0.147 0.5,0.145 C0.532,0.143 0.563,0.135 0.598,0.133 C0.634,0.131 0.676,0.124 0.713,0.131 C0.751,0.138 0.793,0.153 0.823,0.177 C0.853,0.201 0.876,0.239 0.891,0.274 C0.907,0.309 0.911,0.351 0.916,0.389 C0.921,0.427 0.922,0.464 0.919,0.5Z`,`M0.93,0.5 C0.93,0.537 0.926,0.576 0.917,0.612 C0.908,0.648 0.897,0.686 0.878,0.718 C0.859,0.75 0.831,0.78 0.802,0.802 C0.773,0.824 0.735,0.837 0.702,0.849 C0.669,0.861 0.635,0.868 0.601,0.876 C0.567,0.884 0.535,0.895 0.5,0.899 C0.465,0.903 0.427,0.908 0.393,0.901 C0.359,0.894 0.323,0.877 0.295,0.856 C0.267,0.835 0.246,0.802 0.226,0.774 C0.206,0.746 0.193,0.716 0.176,0.687 C0.159,0.658 0.139,0.632 0.123,0.601 C0.107,0.57 0.087,0.536 0.079,0.5 C0.071,0.464 0.069,0.423 0.076,0.386 C0.083,0.349 0.1,0.313 0.119,0.28 C0.138,0.247 0.162,0.216 0.189,0.189 C0.216,0.162 0.247,0.135 0.28,0.118 C0.314,0.101 0.353,0.089 0.39,0.088 C0.427,0.087 0.466,0.098 0.5,0.11 C0.534,0.122 0.563,0.144 0.592,0.158 C0.621,0.172 0.647,0.183 0.677,0.194 C0.707,0.205 0.743,0.21 0.774,0.226 C0.805,0.242 0.841,0.262 0.865,0.289 C0.889,0.316 0.908,0.353 0.919,0.388 C0.93,0.423 0.93,0.463 0.93,0.5Z`];function ke(){let e=y()??!1;return(0,D.jsxs)(`div`,{className:`relative mx-auto aspect-square w-full max-w-[460px]`,children:[(0,D.jsx)(`svg`,{width:`0`,height:`0`,"aria-hidden":!0,className:`absolute`,children:(0,D.jsx)(`defs`,{children:(0,D.jsx)(`clipPath`,{id:`whyBlobClip`,clipPathUnits:`objectBoundingBox`,children:(0,D.jsx)(`path`,{d:G[0],children:!e&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`animate`,{attributeName:`d`,dur:`30s`,repeatCount:`indefinite`,calcMode:`spline`,keyTimes:`0;0.25;0.5;0.75;1`,keySplines:`0.45 0 0.55 1;0.45 0 0.55 1;0.45 0 0.55 1;0.45 0 0.55 1`,values:G.join(`;`)}),(0,D.jsx)(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 0.5 0.5`,to:`360 0.5 0.5`,dur:`48s`,repeatCount:`indefinite`})]})})})})}),(0,D.jsx)(`div`,{className:`absolute inset-[-12%]`,style:{clipPath:`url(#whyBlobClip)`,WebkitClipPath:`url(#whyBlobClip)`},children:(0,D.jsx)(b,{protectSide:`none`,colors:[`#ffffff`,`#ffe6d2`,`#ffffff`,`#ffffff`],staticOnly:!0})}),(0,D.jsx)(`div`,{className:`pointer-events-none absolute left-1/2 top-1/2 h-[60%] w-[60%] -translate-x-1/2 -translate-y-1/2 roun
6ded-full`,style:{background:`radial-gradient(circle, rgba(255,255,255,0.55), rgba(255,255,255,0) 70%)`}}),(0,D.jsxs)(`svg`,{viewBox:`0 0 400 400`,className:`absolute inset-0 z-[1] h-full w-full`,fill:`none`,"aria-hidden":!0,children:[(0,D.jsx)(`defs`,{children:(0,D.jsx)(`marker`,{id:`whyArrowHead`,viewBox:`0 0 10 10`,refX:`6.5`,refY:`5`,markerWidth:`6`,markerHeight:`6`,orient:`auto`,children:(0,D.jsx)(`path`,{d:`M0,1 L9,5 L0,9`,fill:`none`,stroke:W,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),(0,D.jsxs)(`g`,{stroke:W,strokeWidth:`2.4`,strokeLinecap:`round`,markerEnd:`url(#whyArrowHead)`,children:[(0,D.jsx)(`path`,{d:`M269,80.5 A138,138 0 0 1 338,200`}),(0,D.jsx)(`path`,{d:`M269,319.5 A138,138 0 0 1 131,319.5`}),(0,D.jsx)(`path`,{d:`M62,200 A138,138 0 0 1 131,80.5`})]})]}),(0,D.jsx)(K,{label:`Specs`,left:`50%`,top:`18%`}),(0,D.jsx)(K,{label:`Simulations`,left:`77.75%`,top:`66%`}),(0,D.jsx)(K,{label:(0,D.jsxs)(D.Fragment,{children:[`Agent`,(0,D.jsx)(`br`,{}),`Improvement`]}),left:`22.25%`,top:`66%`})]})}function K({label:e,left:t,top:n}){return(0,D.jsx)(`div`,{className:`absolute z-10 -translate-x-1/2 -translate-y-1/2`,style:{left:t,top:n},children:(0,D.jsxs)(`div`,{className:`relative grid place-items-center rounded-full px-5 py-2.5`,children:[(0,D.jsx)(oe,{}),(0,D.jsx)(`span`,{className:`relative z-10 text-center text-[13.5px] font-semibold leading-[1.15] tracking-tight text-ink-900 md:text-[15px]`,children:e})]})})}var q=[.22,1,.36,1],Ae=`Test the refund agent against frustrated EU customers in DE / FR / NL.`,J=[2400,2200,3e3,2e3,2600],je=4e3,Y=J.length-1,Me=[{icon:u,title:`PM writes the goal`,body:`Plain English. No code, no YAML. The brief is the spec.`,meta:`no code`},{icon:p,title:`Langy drafts the plan`,body:`Picks the simulator, generates the scenarios, writes the JudgeAgent rubric.`,meta:`live`},{icon:ie,title:`Scenario runs in parallel`,body:`Multi-turn conversations against your agent, concurrent across projects.`,meta:`parallel`},{icon:t,title:`JudgeAgent scores it`,body:`Your rubric, audited. Faithfulness, policy adherence, de-escalation.`,meta:`signed`},{icon:g,title:`Regressions become PRs`,body:`Langy drafts the prompt revision. Devs review and ship via Prompt Registry.`,meta:`ready to ship`}],Ne=[`simulator · UserSimulatorAgent`,`32 scenarios · DE / FR / NL`,`rubric · 4 criteria`],X=[{name:`refund · within policy`,turns:6,ok:!0},{name:`refund · outside policy`,turns:8,ok:!0},{name:`angry escalation (DE)`,turns:9,ok:!1},{name:`partial refund · negotiation`,turns:7,ok:!0}];function Pe(e,t){let[n,r]=(0,E.useState)(-1);return(0,E.useEffect)(()=>{if(t){r(Y);return}if(!e)return;let n=!1,i=[],a=(e,t)=>{n||i.push(setTimeout(e,t))},o=()=>{r(0);let e=0;for(let t=1;t<=Y;t++){e+=J[t-1];let n=t;a(()=>r(n),e)}a(o,e+J[Y]+je)};return a(o,500),()=>{n=!0,i.forEach(clearTimeout)}},[e,t]),n}function Fe({play:e,instant:t}){let[n,r]=(0,E.useState)(t?70:0);return(0,E.useEffect)(()=>{if(t)return;if(!e){r(0);return}let n=0,i=setInterval(()=>{n+=2,r(Math.min(n,70)),n>=70&&clearInterval(i)},32);return()=>clearInterval(i)},[e,t]),(0,D.jsxs)(`span`,{className:`text-paper/90`,children:[Ae.slice(0,n),!t&&n<70&&(0,D.jsx)(`span`,{className:`ml-px inline-block h-[13px] w-[7px] translate-y-[2px] animate-pulse bg-brand-300/80`})]})}function Z({visible:e,ghostLabel:t,minH:n,children:r}){return(0,D.jsxs)(`div`,{className:`relative`,style:{minHeight:n},children:[!e&&(0,D.jsxs)(v.div,{initial:!1,animate:{opacity:1},exit:{opacity:0},className:`space-y-2.5`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] uppercase tracking-[0.03em] text-paper/25`,children:[(0,D.jsx)(`span`,{className:`h-1 w-1 rounded-full bg-paper/25`}),(0,D.jsx)(`span`,{children:t}),(0,D.jsx)(`span`,{className:`text-paper/20`,children:`· pending`})]}),(0,D.jsx)(`div`,{className:`h-2 w-2/3 rounded-full bg-white/[0.04]`}),(0,D.jsx)(`div`,{className:`h-2 w-1/3 rounded-full bg-white/[0.04]`})]}),e&&(0,D.jsx)(v.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.45,ease:q},children:r})]})}var Q=[`goal`,`plan`,`run`,`score`,`ship`];function Ie({phase:e,shipped:t}){return t?(0,D.jsx)(`span`,{className:`text-[11px] text-brand-300`,children:`goal → PR · 14 min`}):(0,D.jsx)(`span`,{className:`flex items-center gap-1.5 text-[11px]`,children:Q.map((t,n)=>{let r=e>n;return(0,D.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(`span`,{className:`transition-colors duration-300 ${e===n?`text-brand-300`:r?`text-paper/70`:`text-paper/25`}`,children:t}),n<Q.length-1&&(0,D.jsx)(`span`,{className:`transition-colors duration-300 ${r?`text-paper/50`:`text-paper/20`}`,children:`→`})]},t)})})}function Le({phase:e,instant:t}){let n=e>=0,r=e>=3,i=e>=4;return(0,D.jsxs)(`div`,{className:`overflow-hidden rounded-2xl border border-white/10 bg-white/[0.04] backdrop-blur`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between border-b border-white/10 px-4 py-3`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] font-medium uppercase tracking-[0.03em] text-paper/55`,children:[(0,D.jsx)(ae,{className:`h-3 w-3 text-brand-300`}
6),`langy · live session`]}),(0,D.jsx)(Ie,{phase:e,shipped:i})]}),(0,D.jsxs)(`div`,{className:`flex flex-col gap-4 px-5 py-5`,children:[(0,D.jsxs)(Z,{visible:n,ghostLabel:`pm · goal`,minH:56,children:[(0,D.jsx)(`div`,{className:`text-[10px] uppercase tracking-[0.03em] text-paper/40`,children:`pm · goal`}),(0,D.jsx)(`p`,{className:`mt-1.5 text-[13px] leading-relaxed`,children:(0,D.jsx)(Fe,{play:n,instant:t})})]}),(0,D.jsxs)(Z,{visible:e>=1,ghostLabel:`langy · plan`,minH:62,children:[(0,D.jsx)(`div`,{className:`text-[10px] uppercase tracking-[0.03em] text-paper/40`,children:`langy · plan`}),(0,D.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:Ne.map((t,n)=>(0,D.jsx)(v.span,{initial:!1,animate:e>=1?{opacity:1,scale:1}:{opacity:0,scale:.96},transition:{duration:.35,ease:q,delay:e>=1?n*.18:0},className:`rounded-full border border-brand-300/30 bg-brand-300/10 px-2.5 py-1 text-[11px] text-brand-300`,children:t},t))})]}),(0,D.jsxs)(Z,{visible:e>=2,ghostLabel:`langy · run`,minH:158,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between text-[10px] uppercase tracking-[0.03em] text-paper/40`,children:[(0,D.jsx)(`span`,{children:`scenario · running 32 concurrent`}),(0,D.jsxs)(`span`,{className:`transition-opacity duration-300 ${r?`opacity-0`:`opacity-100`}`,children:[(0,D.jsxs)(`span`,{className:`relative mr-1.5 inline-flex h-1.5 w-1.5`,children:[(0,D.jsx)(`span`,{className:`absolute inset-0 animate-ping rounded-full bg-brand-300/60`}),(0,D.jsx)(`span`,{className:`relative inline-block h-1.5 w-1.5 rounded-full bg-brand-300`})]}),`live`]})]}),(0,D.jsxs)(`div`,{className:`mt-2 space-y-1.5`,children:[X.map((n,i)=>{let a=r||t,o=a&&!n.ok;return(0,D.jsxs)(v.div,{initial:!1,animate:o?{x:[0,-3,3,-2,0]}:{x:0},transition:{duration:.45,ease:`easeOut`},className:`flex items-center gap-3 rounded-md transition-colors duration-300 ${o?`-mx-1.5 px-1.5 py-0.5 bg-rust-accent/10 ring-1 ring-inset ring-rust-accent/30`:``}`,children:[(0,D.jsx)(`span`,{className:`w-[130px] shrink-0 truncate text-[11.5px] text-paper/70 sm:w-[210px]`,children:n.name}),(0,D.jsx)(`div`,{className:`relative h-1 flex-1 overflow-hidden rounded-full bg-white/10`,children:(0,D.jsx)(v.div,{initial:!1,animate:{width:e>=2?`100%`:`0%`},transition:{duration:t?0:1.6+i*.35,ease:`easeInOut`},className:`absolute inset-y-0 left-0 rounded-full ${a?n.ok?`bg-moss-accent`:`bg-rust-accent`:`bg-brand-300/70`}`})}),(0,D.jsx)(`span`,{className:`w-[88px] text-right text-[11px] transition-opacity duration-300 ${a?`opacity-100`:`opacity-0`} ${n.ok?`text-moss-accent`:`text-rust-accent`}`,children:n.ok?`pass`:`regression`})]},n.name)}),(0,D.jsxs)(`div`,{className:`pt-0.5 text-[10.5px] text-paper/35`,children:[`+ 28 more · `,X[0].turns,`–`,X[2].turns,` turns each`]})]})]}),(0,D.jsx)(Z,{visible:r,ghostLabel:`langy · judge`,minH:48,children:(0,D.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-white/10 bg-white/[0.03] px-3.5 py-2.5`,children:[(0,D.jsxs)(`span`,{className:`text-[11.5px] text-paper/70`,children:[`JudgeAgent · `,(0,D.jsx)(`span`,{className:`text-moss-accent`,children:`28 pass`}),` ·`,` `,(0,D.jsx)(`span`,{className:`text-rust-accent`,children:`4 regressions`})]}),(0,D.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.03em] text-paper/40`,children:`rubric audited · signed`})]})}),(0,D.jsx)(Z,{visible:i,ghostLabel:`langy · ship`,minH:66,children:(0,D.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-brand-300/30 bg-brand-300/[0.08] px-3.5 py-3`,children:[(0,D.jsx)(g,{className:`h-4 w-4 shrink-0 text-brand-300`}),(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsx)(`div`,{className:`truncate text-[12px] text-paper`,children:`fix: tighten refund-policy prompt for DE escalations`}),(0,D.jsxs)(`div`,{className:`mt-0.5 text-[10.5px] text-paper/45`,children:[`drafted by langy · 4 failing scenarios attached ·`,` `,(0,D.jsx)(`span`,{className:`text-moss-accent`,children:`+12`}),` `,(0,D.jsx)(`span`,{className:`text-rust-accent`,children:`−4`})]})]}),(0,D.jsx)(`span`,{className:`shrink-0 rounded-full border border-brand-300/40 px-2 py-0.5 text-[10px] text-brand-300`,children:`review`})]})})]}),(0,D.jsxs)(`div`,{className:`flex items-center justify-between border-t border-white/10 px-5 py-3 text-[11.5px] text-paper/55`,children:[(0,D.jsxs)(`span`,{children:[`median PM-to-PR `,(0,D.jsx)(`span`,{className:`text-paper`,children:`14 minutes`})]}),(0,D.jsx)(`a`,{href:`/langy`,className:`text-brand-300 underline-offset-4 transition hover:underline`,children:`watch Langy work →`})]})]})}function Re(){let e=y()??!1,t=(0,E.useRef)(null),n=Pe(me(t,{once:!0,margin:`-120px`}),e),r=t=>
6e?{initial:!1,animate:{opacity:1,y:0}}:{initial:{opacity:0,y:8},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:`-80px`},transition:{duration:.5,ease:q,delay:t}};return(0,D.jsx)(`section`,{id:`langy`,"data-nav-dark":!0,className:`relative scroll-mt-0 overflow-hidden text-paper`,children:(0,D.jsxs)(`div`,{ref:t,className:`container-rail relative z-10 py-24 md:py-32`,children:[(0,D.jsxs)(`div`,{className:`max-w-[720px]`,children:[(0,D.jsx)(v.h2,{...r(.06),className:`display text-[30px] leading-[1.06] text-paper md:text-[44px]`,children:`Our AI tests your AI`}),(0,D.jsx)(v.p,{...r(.12),className:`mt-5 text-[17px] leading-[1.6] text-paper/65 md:text-[18px]`,children:`Langy turns a PM's goal into a full Scenario test plan, then turns the failures into pull requests.`}),(0,D.jsx)(v.p,{...r(.16),className:`mt-4 text-[16px] leading-[1.6] text-paper/55`,children:`PMs own the spec. Devs stay in flow. Nothing slips through.`}),(0,D.jsxs)(v.div,{...r(.2),className:`mt-7 flex flex-wrap items-center gap-3`,children:[(0,D.jsxs)(`a`,{href:`/langy`,className:`inline-flex items-center gap-2 rounded-full bg-paper px-5 py-3 text-[13.5px] font-medium text-ink-900 transition hover:bg-paper-soft`,children:[`See what Langy does`,(0,D.jsx)(c,{className:`h-4 w-4`})]}),(0,D.jsx)(`a`,{href:`/get-a-demo`,className:`inline-flex items-center gap-2 rounded-full border border-white/20 px-5 py-3 text-[13.5px] font-medium text-paper transition hover:bg-white/10`,children:`Book a call`})]})]}),(0,D.jsx)(v.div,{...r(.26),className:`mt-10 grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5`,children:Me.map((t,r)=>{let i=t.icon,a=e||n>=r;return(0,D.jsxs)(`div`,{className:_(`rounded-2xl border p-4 transition-colors duration-400`,!e&&n===r?`border-brand-300/40 bg-white/[0.06]`:`border-white/10`),children:[(0,D.jsx)(`span`,{className:_(`grid h-9 w-9 place-items-center rounded-lg border transition-colors duration-400`,a?`border-brand-300/40 bg-brand-300/10 text-brand-300`:`border-white/10 text-paper/30`),children:(0,D.jsx)(i,{className:`h-[18px] w-[18px]`})}),(0,D.jsx)(`div`,{className:_(`mt-3 text-[13.5px] font-semibold tracking-tight transition-colors duration-400`,a?`text-paper`:`text-paper/40`),children:t.title}),(0,D.jsx)(`div`,{className:_(`mt-1 text-[11.5px] leading-relaxed transition-colors duration-400`,a?`text-paper/55`:`text-paper/25`),children:t.body}),(0,D.jsx)(`div`,{className:_(`mt-2 inline-block rounded-full border px-1.5 py-px text-[9.5px] font-normal transition-colors duration-400`,a?`border-white/15 text-paper/60`:`border-white/10 text-paper/30`),children:t.meta})]},t.title)})}),(0,D.jsx)(v.div,{...r(.32),className:`mt-8`,children:(0,D.jsx)(Le,{phase:n,instant:e})})]})})}var ze=[{icon:n,label:`ISO 27001`,sub:`Certified`},{icon:m,label:`GDPR`,sub:`Compliant`},{icon:re,label:`EU data`,sub:`Residency`},{icon:t,label:`Monitored`,sub:`by Vanta`}],Be=[{icon:ne,label:`RBAC + REST APIs`,detail:`Teams, projects, API keys, scoped at the role level.`},{icon:te,label:`SCIM + SSO`,detail:`Okta / Azure AD / Google. Group → team auto-assignment.`},{icon:a,label:`Cost-center attribution`,detail:`Spend tracked across members, teams, projects.`},{icon:i,label:`Audit log → SIEM`,detail:`Every prompt change, eval edit, key event, signed.`},{icon:d,label:`Custom retention policy`,detail:`Configure retention windows and deletion.`}],Ve=[{icon:ee,title:`Self-hosted`,detail:`Docker, Kubernetes/Helm, or in your VPC`},{icon:m,title:`Hybrid`,detail:`Data plane on your infra, control plane on ours`},{icon:s,title:`Cloud`,detail:`Managed multi-tenant SaaS · EU / US / UK / APAC`}];function He(){return(0,D.jsx)(`section`,{id:`enterprise`,"data-nav-dark":!0,className:`relative scroll-mt-0 overflow-hidden text-paper`,children:(0,D.jsxs)(`div`,{className:`container-rail relative z-10 py-20 md:py-28`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`h2`,{className:`display text-[30px] leading-[1.06] text-paper md:text-[44px]`,children:[`Where it `,(0,D.jsx)(`span`,{className:`italic`,children:`runs`}),`.`,` `,(0,D.jsxs)(`span`,{className:`text-paper/55`,children:[`Who `,(0,D.jsx)(`span`,{className:`italic`,children:`controls`}),` it.`]}),` `,(0,D.jsxs)(`span`,{className:`text-paper/35`,children:[`What `,(0,D.jsx)(`span`,{className:`italic`,children:`certifies`}),` it.`]})]}),(0,D.jsx)(`p`,{className:`mt-7 max-w-[640px] text-[17px] leading-[1.6] text-paper/65 md:text-[18px]`,children:`LangWatch deploys where your data lives, enforces who can touch it, and brings the certifications your security review needs.`})]}),(0,D.jsxs)(`div`,{className:`mt-14 grid grid-cols-1 gap-4 md:grid-cols-3 md:gap-5`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col rounded-2xl border border-white/10 bg-white/[0.03] p-6 backdrop-blur`,children:[(0,D.jsx)(`h3`,{className:`text-[18px] font-semibold tracking-tight text-paper md:text-[19px]`,children:`Cloud, self-hosted, or hybrid.`}),(0,D.jsx)(`ul`,{className:`mt-4 space-y-3.5`,children:Ve.map(e=>{let t=e.icon;return(0,D.jsxs)(`li`,{className:`flex items-start gap-3`,children:[(0,D.jsx)(`span`,{className:`mt-0.5 grid h-7 w-7 shrink-0 place-items-center rounded-lg bg-white/[0.06] text-brand-300`,children:(0,D.jsx)(t,{className:`h-3.5 w-3.5`})}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-[14px] font-semibold text-paper`,children:e.title}),(0,D.jsx)(`div`,{className:`mt-0.5 text-[12.5px] leading-[1.5] text-paper/60`,children:e.detail})]})]},e.title)})}),(0,D.jsx)(`div`,{className:`mt-auto pt-5`,children:(0,D.jsxs)(`a`,{href:`/enterprise`,className:`inline-flex items-center gap-1 text-[12.5px] text-paper/65 transition hover:text-paper`,children:[`Deployment options`,(0,D.jsx)(h,{className:`h-3.5 w-3.5`})]})})]}),(0,D.jsxs)(`div`,{className:`flex flex-col rounded-2xl border border-white/10 bg-white/[0.03] p-6 backdrop-blur`,children:[(0,D.jsx)(`h3`,{className:`text-[18px] font-semibold tracking-tight text-paper md:text-[19px]`,children:`Enterprise security controls`}),(0,D.jsx)(`ul`,{className:`mt-4 space-y-2.5 text-[13px] text-paper/75`,children:Be.map(({icon:e,label:t})=>(0,D.jsxs)(`li`,{className:`flex items-center gap-2.5`,children:[(0,D.jsx)(e,{className:`h-3.5 w-3.5 shrink-0 text-brand-300`}),(0,D.jsx)(`span`,{children:t})]},t))}),(0,D.jsx)(`div`,{className:`mt-auto pt-5`,children:(0,D.jsxs)(`a`,{href:`/get-a-demo`,className:`inline-flex items-center gap-1 text-[12.5px] text-paper/65 transition hover:text-paper`,children:[`Book a call`,(0,D.jsx)(h,{className:`h-3.5 w-3.5`})]})})]}),(0,D.jsxs)(`div`,{className:`flex flex-col rounded-2xl border border-white/10 bg-white/[0.03] p-6 backdrop-blur`,children:[(0,D.jsx)(`h3`,{className:`text-[18px] font-semibold tracking-tight text-paper md:text-[19px]`,children:`Passe
6s your procurement review`}),(0,D.jsx)(`ul`,{className:`mt-4 space-y-2.5`,children:ze.map(({icon:e,label:t,sub:n})=>(0,D.jsxs)(`li`,{className:`flex items-center gap-2.5`,children:[(0,D.jsx)(e,{className:`h-3.5 w-3.5 shrink-0 text-brand-300`,strokeWidth:2}),(0,D.jsx)(`span`,{className:`text-[13px] font-medium text-paper`,children:t}),n&&(0,D.jsx)(`span`,{className:`font-mono text-[10px] uppercase tracking-[0.12em] text-paper/45`,children:n})]},t+n))}),(0,D.jsx)(`div`,{className:`mt-auto pt-5`,children:(0,D.jsxs)(`a`,{href:`/trust-center`,className:`inline-flex items-center gap-1 text-[12.5px] text-paper/65 transition hover:text-paper`,children:[`Full trust center`,(0,D.jsx)(h,{className:`h-3.5 w-3.5`})]})})]})]})]})})}var $=[{key:`vinny`,company:`Vinny`,industry:`Conversational support · UK`,logo:`/logos/vinny.png`,logoH:26,headshot:`/customers/cstories3.webp`,quote:`When a customer has an issue we spin up a simulation and give them really concrete evidence it has been fixed.`,story:`Vinny ships a customer-support agent for high-volume retail. Before LangWatch, regression checks were ad-hoc and slow. Now simulations replay the exact failure case against every new build, so a customer who reported a bug on Monday gets a verifiable fix by Tuesday.`,name:`Rory Buchanan`,role:`Founder & CTO`},{key:`freeday`,company:`Freeday`,industry:`AI labour platform · Netherlands`,logo:`/logos/freeday.webp`,logoH:30,headshot:`/customers/cstories5.webp`,quote:`Testing went from afterthought to starting point. What took half a day takes ten minutes.`,story:`Freeday builds digital workers for back-office teams. Their engineers used to ship and pray; now every prompt change triggers a full scenario sweep before merge. The faster loop means more agents shipped per week, not fewer bugs caught later.`,name:`Gijs Gubbels`,role:`AI Engineer`},{key:`altura`,company:`Altura`,industry:`AI for procurement · Netherlands`,logo:`/logos/altura.svg`,logoH:22,headshot:`/customers/cstories6.webp`,headshotObjectPosition:`center 15%`,quote:`We did a full deep dive of every solution. Moved from Langfuse to LangWatch and love the collaboration features.`,tileQuote:`Moved from Langfuse to LangWatch and love the collaboration features.`,story:`Altura evaluated every observability and eval tool on the market before picking LangWatch. The decision was the collaboration surface: domain experts can annotate traces and define evals in the same place engineers debug them.`,name:`Martijn Schouten`,role:`AI Engineer`},{key:`pagbank`,company:`PagBank`,industry:`Digital banking · Brazil`,logo:`/logos/pagbank.webp`,logoH:30,headshot:`/customers/cstories4.webp`,headshotShift:`14px`,locked:!0,anon:!0,quote:`LangWatch gives us confidence in every AI-driven interaction. Critical when you handle payments at scale.`,story:`PagBank uses LangWatch to monitor and evaluate every AI interaction across millions of customers. Want to know how it works in production at that scale? Book a call with our team and we will walk you through the deployment patterns.`},{key:`hyperfox`,company:`Hyperfox`,industry:`Operational AI · Belgium`,logo:`/logos/hyperfox.svg`,logoH:26,headshot:`/customers/cstories1.webp`,headshotShift:`14px`,quote:`Every increment we ship now, whether a feature or a bug fix, we have much more confidence.`,story:`Hyperfox automates order processing for B2B distributors. Their team uses LangWatch to lock in agent behaviour before each release; every increment ships against the same battery of real-world scenarios, so regressions are caught at PR time.`,name:`Clara de Smet`,role:`Lead AI`},{key:`backbase`,company:`Backbase`,industry:`Engagement banking · Netherlands`,logo:`/logos/backbase.webp`,logoH:20,locked:!0,quote:`LangWatch helps us ship AI features with confidence, faster, safer, no surprises in production.`,story:`Backbase rolls AI assistants into the banking experiences used by the world's largest financial institutions. Curious how the platform plugs into a regulated banking stack? Book a call with our team and we will walk you through it.`,name:`Deepak Pandey`,role:`VP Technology`}];function Ue({className:e=``}){return(0,D.jsxs)(`a`,{href:`/customers`,className:`group relative flex h-full min-h-[260px] sm:min-h-[220px] md:min-
6h-[180px] flex-col justify-end overflow-hidden rounded-2xl p-4 ring-1 ring-inset ring-white/25 backdrop-blur-xl backdrop-saturate-150 transition-all duration-500 hover:rounded-[2px] hover:ring-white/40 md:p-5 ${e}`,style:{backgroundImage:`radial-gradient(130% 130% at 85% 15%, rgba(91,141,239,0.85) 0%, rgba(30,58,138,0.55) 40%, transparent 72%), radial-gradient(115% 115% at 5% 95%, rgba(201,123,58,0.5) 0%, transparent 52%), linear-gradient(150deg, #0c0f1c 0%, #0a0a0c 100%)`},children:[(0,D.jsx)(`div`,{className:`pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_top_right,rgba(255,255,255,0.22),transparent_55%)]`}),(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(`div`,{className:`font-serif text-[19px] leading-[1.1] font-medium text-paper md:text-[21px]`,children:`All customer stories`}),(0,D.jsxs)(`div`,{className:`mt-3 inline-flex items-center gap-1.5 text-[12px] font-medium text-paper/90 transition group-hover:text-paper`,children:[`Read them`,(0,D.jsx)(c,{className:`h-3.5 w-3.5 transition group-hover:translate-x-0.5`})]})]})]})}function We(){let[e,t]=(0,E.useState)(null);return(0,D.jsxs)(`section`,{id:`customers`,className:`relative scroll-mt-0 border-t border-ink-100 bg-paper text-ink-900`,children:[(0,D.jsxs)(`div`,{className:`container-rail relative z-10 py-24 md:py-32`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`h2`,{className:`display text-[30px] leading-[1.06] text-ink-950 md:text-[44px]`,children:[`Trusted by teams shipping`,` `,(0,D.jsx)(`span`,{className:`italic text-rainbow-shift`,children:`mission-critical AI.`})]}),(0,D.jsx)(`p`,{className:`mt-7 text-[17px] leading-[1.7] text-ink-600 md:text-[18.5px]`,children:`CTOs, engineers, AI architects and product leaders shipping AI they can trust in production.`})]}),(0,D.jsx)(`div`,{className:`relative mt-8 md:mt-10`,children:(0,D.jsxs)(`div`,{className:`relative grid grid-cols-1 gap-2 sm:grid-cols-2 md:auto-rows-[250px] md:grid-cols-5 md:gap-2.5`,children:[(0,D.jsx)(T,{t:$[0],index:0,className:`md:col-span-2 md:row-span-2`,featured:!0,onOpen:()=>t($[0])}),(0,D.jsx)(T,{t:$[1],index:1,onOpen:()=>t($[1])}),(0,D.jsx)(T,{t:$[2],index:2,onOpen:()=>t($[2])}),(0,D.jsx)(T,{t:$[3],index:3,onOpen:()=>t($[3])}),(0,D.jsx)(T,{t:$[4],index:4,onOpen:()=>t($[4])}),(0,D.jsx)(T,{t:$[5],index:5,onOpen:()=>t($[5])}),(0,D.jsx)(Ue,{})]})})]}),e&&(0,D.jsx)(C,{tile:e,onClose:()=>t(null)})]})}function Ge(){return(0,D.jsx)(`div`,{className:`site-variant site-variant-2 relative min-h-screen bg-paper text-ink-900`,children:(0,D.jsxs)(`div`,{className:`relative z-10`,children:[(0,D.jsx)(se,{}),(0,D.jsx)(_e,{}),(0,D.jsxs)(`main`,{children:[(0,D.jsx)(Ce,{}),(0,D.jsx)(`section`,{className:`bg-paper pt-14 pb-16 md:pt-16 md:pb-20`,children:(0,D.jsx)(`div`,{className:`container-page`,children:(0,D.jsx)(he,{})})}),(0,D.jsx)(Oe,{}),(0,D.jsx)(S,{}),(0,D.jsxs)(`div`,{className:`relative overflow-hidden bg-ink-950`,children:[(0,D.jsx)(x,{mood:`dark`,fill:!0,opacity:.6,speed:.1}),(0,D.jsx)(Re,{})]}),(0,D.jsxs)(`div`,{className:`relative overflow-hidden border-t border-white/10 bg-ink-950`,children:[(0,D.jsx)(x,{mood:`dark`,fill:!0,opacity:.42,speed:.08,rotation:-42}),(0,D.jsx)(He,{})]}),(0,D.jsx)(We,{}),(0,D.jsx)(de,{})]}),(0,D.jsx)(le,{})]})})}export{Ge as HomePage};
7//# sourceMappingURL=HomePage-oEZ6sJ8F.js.map

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.