PageSourceSearch

https://www.kaelio.com/

html kaelio.com collected 2026-10-03 23:48:18 UTC 270,927 bytes, 11 lines download raw bytes

1<!DOCTYPE html><html data-dpl-id="dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" lang="en" class="scroll-smooth outfit_cbfa4884-module__hWmOPq__variable inter_fe8b9d92-module__LINzvG__variable geist_mono_8d43a2aa-module__8Li5zG__variable caveat_330870cd-module__KowJeq__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/1b99372b3eaef0c8-s.p.0gx2haw2tmll8.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a85fe84266768609-s.p.05b418i5bs~lg.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" imageSrcSet="/_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x"/><link rel="stylesheet" href="/_next/static/chunks/1515cmvlx-kna.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/052~gzj6ktdua.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/02twwa6.2bk0m.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/>
1<script src="/_next/static/chunks/05fdodtlmhn~u.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0sk3m_8b87y5f.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0c230qfcmip4d.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/08_antvgvw0fr.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/turbopack-0h11zr2gkzl_3.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0~v76_1j1u71m.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0m89tw9k~n8va.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<script src="/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" async=""></script>
1<link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-TVGZ75R2ZJ" as="script"/><meta name="next-size-adjust" content=""/><title>ktx: the open-source context layer for data agents</title><meta name="description" content="ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally."/><link rel="manifest" href="/manifest.webmanifest"/><meta name="keywords" content="AI data platform,AI data agent,AI analytics agent,agentic analytics,self-serve analytics,data team,analytics engineering,metric governance,data catalog,AI analytics,warehouse analytics,dbt analytics,Snowflake analytics,BigQuery analytics,Tableau self-serve,Looker self-serve,trusted analytics,proactive data delivery,business intelligence AI,data stack AI,metric consistency"/><meta name="creator" content="Kaelio"/><meta name="publisher" content="Kaelio"/><meta name="robots" content="index, follow"/><meta name="googlebot" content="index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"/><meta name="theme-color" content="#FFFFFF"/><link rel="canonical" href="https://www.kaelio.com"/><meta property="og:title" content="ktx: the open-source context layer for data agents"/><meta property="og:description" content="ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally."/><meta property="og:url" content="https://www.kaelio.com"/><meta property="og:site_name" content="Kaelio"/><meta property="og:image" content="https://www.kaelio.com/opengraph-image?f8726fa05e83206f"/><meta property="og:image:type" content="image/png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="ktx by Kaelio: the open-source context layer for data agents"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="ktx: the open-source context layer for data agents"/><meta name="twitter:description" content="ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally."/><meta name="twitter:image" content="https://www.kaelio.com/twitter-image?f8726fa05e83206f"/><meta name="twitter:image:alt" content="ktx by Kaelio: the open-source context layer for data agents"/><meta name="twitter:image:type" content="image/png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/favicon.ico?favicon.0llcj8u2rde2p.ico?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" sizes="48x48" type="image/x-icon"/><link rel="icon" href="/icon.svg"/><link rel="apple-touch-icon" href="/icon.svg"/>
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.kaelio.com/#website","name":"Kaelio","url":"https://www.kaelio.com","publisher":{"@id":"https://www.kaelio.com/#organization"},"speakable":{"@type":"SpeakableSpecification","cssSelector":["h1","h2","[data-speakable]"]}},{"@type":"Organization","@id":"https://www.kaelio.com/#organization","name":"Kaelio","url":"https://www.kaelio.com","logo":"https://www.kaelio.com/brand/kaelio-logo.png","description":"Kaelio auto-builds a governed context layer from your data stack so AI data agents deliver trusted, sourced answers to every team.","contactPoint":{"@type":"ContactPoint","email":"[email protected]","contactType":"customer service"},"sameAs":["https://x.com/KaelioAI","https://www.linkedin.com/company/kaelio-ai/","https://www.ycombinator.com/companies/kaelio","https://docs.kaelio.com"]}]}</script>
1<script src="/_next/static/chunks/03~yq9q893hmn.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" noModule=""></script>
1</head><body class="bg-cream text-ink-700 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div class="bg-night-950 text-night-200 min-h-screen">
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","@id":"https://www.kaelio.com/#software","name":"ktx","url":"https://www.kaelio.com","description":"ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally.","applicationCategory":"DeveloperApplication","operatingSystem":"macOS, Linux, Windows","featureList":["Self-improving wiki from your docs","Maps your data stack and detects joinable columns","Semantic layer with auto join resolution","Context written as YAML and Markdown in git","MCP server and CLI surface","Works with Claude Code, Claude Desktop, Codex, Cursor, OpenCode, and custom agents","Bring your own LLM keys","Apache 2.0 licensed"],"offers":[{"@type":"Offer","name":"ktx (open source)","price":"0","priceCurrency":"USD","availability":"https://schema.org/InStock","url":"https://www.kaelio.com"}],"publisher":{"@id":"https://www.kaelio.com/#organization"}}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","@id":"https://www.kaelio.com/#faq","url":"https://www.kaelio.com/#faq","inLanguage":"en-US","mainEntityOfPage":"https://www.kaelio.com","mainEntity":[{"@type":"Question","name":"What is ktx?","acceptedAnswer":{"@type":"Answer","text":"ktx is an open-source context layer for data agents that makes them much more accurate at querying data warehouses. It gives agents the business context, approved metric definitions, joinable columns, warehouse metadata, and query history they do not get from direct warehouse access. It also includes a query engine, so agents can query through ktx instead of writing SQL from scratch."}},{"@type":"Question","name":"Is ktx free?","acceptedAnswer":{"@type":"Answer","text":"Yes. ktx is open source under the Apache 2.0 license. There are no usage limits. You run it yourself with your own LLM API keys."}},{"@type":"Question","name":"How do I install and set up ktx?","acceptedAnswer":{"@type":"Answer","text":"Run npm install -g @kaelio/ktx, then run ktx setup from your project directory. You can also ask Claude Code, Codex, Cursor, or another coding agent to install and configure ktx for you by giving it the prompt from the ktx quickstart. Setup creates a ktx project, connects your warehouse and context sources, builds context, and can install agent integrations. ktx requires Node.js 22 or newer."}},{"@type":"Question","name":"What does ktx do that raw MCP access does not?","acceptedA
1nswer":{"@type":"Answer","text":"A direct warehouse MCP connector usually gives an agent access to tables, columns, and SQL execution. ktx gives the agent a query engine plus reviewable metric definitions, a mapped join graph that resolves chasm and fan traps, a wiki of business context, and the source evidence behind every definition."}},{"@type":"Question","name":"How does ktx make agent-generated SQL more reliable?","acceptedAnswer":{"@type":"Answer","text":"ktx gives agents approved context before they write or run SQL. Agents can search the wiki, find semantic-layer entities, compile governed metric queries, and run read-only SQL through configured connections. This reduces repeated schema exploration, incorrect joins, and invented metric logic."}},{"@type":"Question","name":"Does ktx send my data anywhere?","acceptedAnswer":{"@type":"Answer","text":"ktx runs locally. Your warehouse data stays in your warehouse, and local state and secrets stay in the git-ignored .ktx directory. Your LLM provider sees whatever context or query content your agent sends to it, the same as any other agent connected to your data."}},{"@type":"Question","name":"Where does ktx store context?","acceptedA
1nswer":{"@type":"Answer","text":"ktx stores shareable context in plain files: ktx.yaml, semantic-layer YAML, and Markdown wiki pages. Those files can be reviewed in git. Local runtime state, credentials, caches, and secrets live under .ktx and should stay out of git."}},{"@type":"Question","name":"How is ktx different from semantic layers like Cube, Malloy, or dbt MetricFlow?","acceptedAnswer":{"@type":"Answer","text":"ktx includes its own semantic layer, but it is built to be flexible and agent-native: agents can search, read, patch, and validate context through files, CLI, and MCP. Compared with standalone semantic-layer tools, ktx adds business context, source evidence, warehouse metadata, query history, and a reviewable wiki around the semantic model."}},{"@type":"Question","name":"Does ktx replace dbt, Looker, Metabase, or my BI tool?","acceptedAnswer":{"@type":"Answer","text":"No. ktx complements the tools you already use. It can ingest dbt, MetricFlow, LookML, Looker, Metabase, Notion, warehouse metadata, and query history, then expose that context to agents. Your existing transformations, dashboards, and BI workflows stay in place."}}
1,{"@type":"Question","name":"Does ktx replace dbt?","acceptedAnswer":{"@type":"Answer","text":"No. ktx consumes dbt instead of replacing it. If you use dbt, ktx can ingest your models, metric definitions, and documentation into its context layer so agents can use that governed logic directly. If you don't use dbt, ktx can still build context from your warehouse schemas, BI tools, documentation, and query history."}},{"@type":"Question","name":"What is the difference between ktx and ktx Cloud?","acceptedAnswer":{"@type":"Answer","text":"ktx is the open-source engine. You run it yourself, locally, with your own LLM keys. ktx Cloud is the hosted version. Same engine, plus hosted runtime, multi-user workspace, review and approval workflows, SSO, continuous ingest, observability, and included LLM credits."}},{"@type":"Question","name":"Which agent clients does ktx work with?","acceptedAnswer":{"@type":"Answer","text":"ktx works with Claude Code, Claude Desktop, Codex, Cursor, OpenCode, generic .agents clients, and any custom MCP-compatible agent your team builds. ktx exposes an MCP server and a CLI, so any agent that speaks MCP can use it."}},{"@type":"Question","name":"Which warehouses and BI tools does ktx work with?","acceptedA
1nswer":{"@type":"Answer","text":"Warehouses: PostgreSQL, Snowflake, BigQuery, ClickHouse, MySQL, SQL Server, SQLite, DuckDB, Amazon Athena, MongoDB, and many more. Modeling and BI: dbt, MetricFlow, LookML, Looker, Metabase, Sigma, and many more. Documentation: Notion, Google Drive, and many more."}},{"@type":"Question","name":"Can my team review and change the context ktx creates?","acceptedAnswer":{"@type":"Answer","text":"Yes. ktx is built around reviewable context files. Agents can propose updates to semantic-layer YAML or wiki Markdown, but your team can inspect, validate, and approve those changes through normal code review before they become trusted context."}},{"@type":"Question","name":"How do I contribute to ktx?","acceptedAnswer":{"@type":"Answer","text":"ktx is open source. Issues, pull requests, and discussions are welcome on the GitHub repository."}}]}</script>
1<nav class="fixed top-0 w-full z-50 backdrop-blur-xl transition-[background-color,box-shadow,border-color] duration-300" style="background-color:transparent;box-shadow:none;border-bottom:1px solid transparent"><div class="relative border-b border-stone-200 bg-white"><div class="relative mx-auto flex h-14 max-w-[1200px] items-center justify-center px-12 sm:px-16"><a href="https://spider2-sql.github.io/" target="_blank" rel="noopener noreferrer" data-track-cta="spider2_ranking_banner" data-track-location="announcement_banner" class="group flex min-w-0 max-w-full flex-col items-center justify-center rounded-sm px-2 text-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#B98B2F] focus-visible:ring-offset-2 focus-visible:ring-offset-white"><span class="block max-w-full truncate font-sans text-[11px] font-semibold leading-[15px] tracking-[-0.01em] text-night-100 min-[360px]:text-[12px] sm:text-[13px]">#1 for turning data questions into SQL</span><span class="block font-sans text-[9px] font-medium leading-[14px] tracking-[0.045em] text-night-400 transition-colors duration-200 group-hover:text-night-200 motion-reduce:transition-none sm:text-[10px]">Spider 2.0-Lite benchmark <span aria-hidden="true">→</span></span></a><button type="button" aria-label="Dismiss Spider 2.0-Lite ranking announcement" data-track-cta="dismiss_spider2_ranking_banner" data-track-location="announcement_banner" class="absolute right-1 top-1/2 inline-flex h-11 w-11 -translate-y-1/2 items-center justify-center rounded-full text-night-400 transition-colors duration-200 hover:bg-stone-100 hover:text-night-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-night-100 focus-visible:ring-offset-2 focus-visible:ring-offset-white motion-reduce:transition-none sm:right-2"><svg aria-hidden="true" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 6l12 12M18 6 6 18"></path></svg></button></div></div><div class="max-w-[1200px] mx-auto px-4 sm:px-6 relative flex items-center justify-between h-[60px] sm:h-[64px]"><div class="flex items-center gap-7 xl:gap-10"><a class="flex items-center shrink-0" href="/"><img alt="Kaelio - AI data platform" width="110" height="30" decoding="async" data-nimg="1" class="h-6 sm:h-[26px] w-auto" style="color:transparent" srcSet="/_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></a><div class="hidden lg:flex items-center gap-6 xl:gap-8"><div class="relative"><button class="text-[14px] font-medium text-night-400 hover:text-night-100 transition-colors font-sans flex items-center gap-1" data-track-nav="products_menu">Products<svg class="w-3.5 h-3.5 transition-transform duration-200 " fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button><div class="absolute top-full -left-7 xl:-left-10 pt-2 transition-all duration-200 opacity-0 -translate-y-1 pointer-events-none"><div class="bg-white rounded-lg border border-stone-200 shadow-lg shadow-black/[0.04] p-4 w-[720px] grid grid-cols-3 gap-4"><div class="space-y-2"><a class="block group" data-track-nav="product_ktx" href="/"><span class="flex items-center gap-1.5 text-[14px] font-semibold text-night-100 font-sans group-hover:text-night-50 transition-colors"><img alt="" aria-hidden="true" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4" style="color:transparent" src="/brand/ktx-mascot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/>ktx</span><span class="block text-[12px] text-night-500 mt-0.5 leading-relaxed">The open-source context layer for data agents</span></a><div class="border-t border-stone-100 pt-2 space-y-0.5"><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_features" href="/#features">Features</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_how_it_works" href="/#how-it-works">How it works</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_integrations" href="/#integrations">Integrations</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_faq" href="/#faq">FAQ</a></div></div><div class="space-y-2"><a class="block group" data-track-nav="product_ktx_cloud" href="/products/ktx-cloud"><span class="flex items-center gap-1.5 text-[14px] font-semibold text-night-100 font-sans group-hover:text-night-50 transition-colors">ktx Cloud</span><span class="block text-[12px] text-night-500 mt-0.5 leading-relaxed">
1Hosted context infrastructure for data teams</span></a><div class="border-t border-stone-100 pt-2 space-y-0.5"><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_cloud_features" href="/products/ktx-cloud#features">Features</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_cloud_ktx_engine" href="/products/ktx-cloud#ktx-engine">ktx Engine</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_cloud_integrations" href="/products/ktx-cloud#integrations">Integrations</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_ktx_cloud_faq" href="/products/ktx-cloud#faq">FAQ</a></div></div><div class="space-y-2"><a class="block group" data-track-nav="product_data_agent" href="/products/data-agents"><span class="flex items-center gap-1.5 text-[14px] font-semibold text-night-100 font-sans group-hover:text-night-50 transition-colors">Data Agent</span><span class="block text-[12px] text-night-500 mt-0.5 leading-relaxed">A managed agent grounded in your context layer</span></a><div class="border-t border-stone-100 pt-2 space-y-0.5"><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_data_agent_features" href="/products/data-agents#features">Features</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_data_agent_how_it_works" href="/products/data-agents#how-it-works">How it works</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_data_agent_use_cases" href="/products/data-agents#use-cases">Use cases</a><a class="block text-[12px] text-night-400 hover:text-night-100 py-1 px-1 rounded transition-colors font-sans" data-track-nav="product_data_agent_faq" href="/products/data-agents#faq">FAQ</a></div></div></div></div></div><a data-track-nav="pricing" class="text-[14px] font-medium text-night-400 hover:text-night-100 transition-colors font-sans" href="/pricing">Pricing</a><a data-track-nav="services" class="text-[14px] font-medium text-night-400 hover:text-night-100 transition-colors font-sans" href="/services">Services</a><a data-track-nav="blog" class="text-[14px] font-medium text-night-400 hover:text-night-100 transition-colors font-sans" href="/blog">Blog</a><a href="https://docs.kaelio.com" target="_blank" rel="noopener noreferrer" data-track-nav="documentation" class="text-[14px] font-medium text-night-400 hover:text-night-100 transition-colors font-sans">Docs</a><a data-track-nav="about" class="text-[14px] font-medium text-night-400 hover:text-night-100 transition-colors font-sans" href="/about">About</a></div></div><div class="hidden lg:flex items-center shrink-0 gap-4 xl:gap-5"><a href="https://github.com/Kaelio/ktx" target="_blank" rel="noopener noreferrer" aria-label="Star ktx on GitHub" class="group inline-flex items-center text-night-400 transition-colors hover:text-night-100 xl:gap-1.5" data-track-cta="github" data-track-location="navbar"><svg class="h-5 w-5 shrink-0 xl:h-[17px] xl:w-[17px]" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.111.82-.261.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg><span class="hidden items-center gap-2 xl:inline-flex"><span class="inline-flex items-center gap-1"><svg class="h-3 w-3 shrink-0 text-night-500 transition-[transform,color] duration-300 ease-out group-hover:-rotate-[14deg] group-hover:scale-110 group-hover:text-coral-dark motion-reduce:transition-none motion-reduce:group-hover:rotate-0 motion-reduce:group-hover:scale-100" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2.6l2.9 5.88 6.49.95-4.7 4.57 1.11 6.46L12 17.4l-5.8 3.06 1.11-6.46-4.7-4.57 6.49-.95z"></path></svg><span aria-hidden="true" class="h-[11px] w-7 animate-pulse rounded-full bg-night-600/60"></span></span></span></a><span aria-hidden="true" class="hidden xl:block h-5 w-px bg-night-600"></span><a data-track-cta="try_free" data-track-location="navbar" class="text-[14px] font-semibold text-night-200 hover:text-night-100 transition-colors font-sans" href="/get-started">Get Started</a><a data-track-cta="book_demo" data-track-location="navbar" class="bg-night-50 hover:bg-night-100 text-white text-[14px] font-semibold px-5 py-2 rounded-md transition-colors hover:scale-[1.02] active:scale-[0.98] font-sans" href="/book-demo">Book a Demo</a></div><button data-track-nav="mobile_menu" class="lg:hidden inline-flex items-center justify-center rounded-full p-2.5 text-night-200 transition-colors hover:bg-white/70" aria-label="Toggle menu" aria-expanded="false"><svg class="w-5 h-5 text-night-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
1<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></div><div class="lg:hidden border-t border-stone-200 bg-[#FAF9F6] px-4 sm:px-6 transition-[opacity,max-height] duration-200 opacity-0 max-h-0 overflow-hidden pointer-events-none"><div class="space-y-2 py-3"><div class="rounded-2xl border border-stone-200 bg-white/70 px-4"><button data-track-nav="products_menu_mobile" class="flex items-center justify-between w-full text-[14px] font-medium text-night-300 py-3 font-sans">Products<svg class="w-3.5 h-3.5 transition-transform duration-200 " fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-[max-height] duration-200 max-h-0"><div class="space-y-3 pb-4"><div class="rounded-xl border border-stone-200 bg-white px-3 py-3"><a class="flex items-center gap-1.5 text-[14px] font-semibold text-night-300 font-sans" data-track-nav="product_ktx_mobile" href="/"><img alt="" aria-hidden="true" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4" style="color:transparent" src="/brand/ktx-mascot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/>ktx</a><div class="mt-2 space-y-1"><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_features_mobile" href="/#features">Features</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_how_it_works_mobile" href="/#how-it-works">How it works</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_integrations_mobile" href="/#integrations">Integrations</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_faq_mobile" href="/#faq">FAQ</a></div></div><div class="rounded-xl border border-stone-200 bg-white px-3 py-3"><a class="flex items-center gap-1.5 text-[14px] font-semibold text-night-300 font-sans" data-track-nav="product_ktx_cloud_mobile" href="/products/ktx-cloud">ktx Cloud</a><div class="mt-2 space-y-1"><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_cloud_features_mobile" href="/products/ktx-cloud#features">Features</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_cloud_ktx_engine_mobile" href="/products/ktx-cloud#ktx-engine">ktx Engine</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_cloud_integrations_mobile" href="/products/ktx-cloud#integrations">Integrations</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_ktx_cloud_faq_mobile" href="/products/ktx-cloud#faq">FAQ</a></div></div><div class="rounded-xl border border-stone-200 bg-white px-3 py-3"><a class="flex items-center gap-1.5 text-[14px] font-semibold text-night-300 font-sans" data-track-nav="product_data_agent_mobile" href="/products/data-agents">Data Agent</a><div class="mt-2 space-y-1"><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_data_agent_features_mobile" href="/products/data-agents#features">Features</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_data_agent_how_it_works_mobile" href="/products/data-agents#how-it-works">How it works</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_data_agent_use_cases_mobile" href="/products/data-agents#use-cases">Use cases</a><a class="block text-[13px] text-night-500 py-0.5 font-sans" data-track-nav="product_data_agent_faq_mobile" href="/products/data-agents#faq">FAQ</a></div></div></div></div></div><a data-track-nav="pricing_mobile" class="block rounded-2xl border border-stone-200 bg-white/70 px-4 py-3 text-[14px] font-medium text-night-300 font-sans" href="/pricing">Pricing</a><a data-track-nav="services_mobile" class="block rounded-2xl border border-stone-200 bg-white/70 px-4 py-3 text-[14px] font-medium text-night-300 font-sans" href="/services">Services</a><a data-track-nav="blog_mobile" class="block rounded-2xl border border-stone-200 bg-white/70 px-4 py-3 text-[14px] font-medium text-night-300 font-sans" href="/blog">Blog</a><a href="https://docs.kaelio.com" target="_blank" rel="noopener noreferrer" data-track-nav="documentation_mobile" class="block rounded-2xl border border-stone-200 bg-white/70 px-4 py-3 text-[14px] font-medium text-night-300 font-sans">Docs</a><a data-track-nav="about_mobile" class="block rounded-2xl border border-stone-200 bg-white/70 px-4 py-3 text-[14px] font-medium text-night-300 font-sans" href="/about">About</a></div><div class="border-t border-stone-200 py-4 space-y-2"><a href="https://github.com/Kaelio/ktx" target="_blank" rel="noopener noreferrer" data-track-cta="github" data-track-location="navbar_mobile" class="flex items-center justify-center gap-2 w-full rounded-xl border border-stone-200 bg-white px-5 py-3 text-center text-[14px] font-semibold text-night-200 font-sans"><svg class="h-4 w-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.111.82-.261.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg>GitHub<span class="inline-flex items-center gap-1"><svg class="h-3 w-3 shrink-0 text-night-500 transition-[transform,color] duration-300 ease-out group-hover:-rotate-[14deg] group-hover:scale-110 group-hover:text-coral-dark motion-reduce:transition-none motion-reduce:group-hover:rotate-0 motion-reduce:group-hover:scale-100" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2.6l2.9 5.88 6.49.95-4.7 4.57 1.11 6.46L12 17.4l-5.8 3.06 1.11-6.46-4.7-4.57 6.49-.95z"></path></svg><span aria-hidden="true" class="h-[11px] w-7 animate-pulse rounded-full bg-night-600/60"></span></span></a><a data-track-cta="try_free" data-track-location="navbar_mobile" class="block w-full rounded-xl border border-stone-200 bg-white px-5 py-3 text-center text-[14px] font-semibold text-night-200 font-sans" href="/get-started">Get Started</a><a data-track-cta="book_demo" data-track-location="navbar_mobile" class="block w-full rounded-xl bg-night-50 hover:bg-night-100 text-white text-[14px] font-semibold px-5 py-3 text-center font-sans" href="/book-demo">Book a Demo</a></div></div></nav><section id="hero" class="relative overflow-hidden bg-[#FAF9F6] pt-24 pb-10 sm:pt-28 sm:pb-12 lg:pt-36 lg:pb-20"><div class="pointer-events-none absolute top-[-96px] left-1/2 h-[260px] w-[360px] -translate-x-1/2 roun
1ded-full opacity-[0.08] blur-[100px] sm:left-1/3 sm:h-[400px] sm:w-[700px] sm:translate-x-0 sm:blur-[120px]" style="background:radial-gradient(ellipse,#78716C 0%,transparent 70%)"></div><div class="pointer-events-none absolute right-[-90px] top-[250px] h-[240px] w-[240px] rounded-full opacity-[0.05] blur-[80px] sm:right-[-150px] sm:top-[200px] sm:h-[400px] sm:w-[400px] sm:blur-[100px]" style="background:radial-gradient(ellipse,#57534E 0%,transparent 70%)"></div><div class="relative max-w-[1200px] mx-auto px-4 sm:px-6"><div class="grid min-w-0 items-center gap-8 sm:gap-10 lg:grid-cols-[1fr_1.15fr] lg:gap-16"><div class="rv min-w-0"><div class="mb-4 inline-flex w-fit items-center gap-2 rounded-full border border-stone-200 bg-white pl-3 pr-2 py-1.5 sm:pl-3.5"><span class="text-[11px] font-semibold text-night-500">Backed by</span><img alt="Y Combinator" loading="lazy" width="120" height="24" decoding="async" data-nimg="1" class="h-[14px] w-auto opacity-80" style="color:transparent" src="/logos/yc-expanded.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><h1 class="mb-5 font-display text-[clamp(1.9rem,10vw,3.75rem)] leading-[1.02] tracking-tight text-night-50 sm:ml-[-0.04em] sm:leading-[1.08]"><span class="sm:whitespace-nowrap">The open-source</span> <br/><span class="sm:whitespace-nowrap"><span class="text-glow">context layer</span> for</span> <br/>data agents.</h1><p data-speakable="true" class="mb-7 max-w-full pr-1 text-[15px] leading-relaxed text-night-300 sm:mb-8 sm:max-w-[34rem] sm:pr-0 sm:text-[17px]"><strong>ktx</strong> auto-builds a context layer from your data stack and compiles accurate SQL. Your team reviews it. Agents query it. Interactions continuously improve it.</p><div class="flex flex-wrap gap-3"><a data-track-cta="get_started" data-track-location="hero" class="group bg-night-50 hover:bg-night-100 text-white font-semibold px-7 py-3 rounded-sm transition-[background-color,box-shadow,transform] shadow-md hover:shadow-lg text-[15px]" href="/get-started">Get started<span class="inline-block ml-1.5 transition-transform group-hover:translate-x-0.5">→</span></a><a href="https://github.com/Kaelio/ktx" target="_blank" rel="noopener noreferrer" data-track-cta="view_github" data-track-location="hero" class="inline-flex items-center gap-2 border border-night-600 hover:border-night-500 text-night-200 font-semibold px-7 py-3 rounded-sm transition-[background-color,box-shadow,transform] text-[15px] hover:bg-white"><svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.111.82-.261.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg>View on GitHub</a></div><div class="mt-5"><a href="https://spider2-sql.github.io/" target="_blank" rel="noopener noreferrer" data-track-cta="spider2_ranking_hero_badge" data-track-location="hero" class="group inline-flex min-h-14 max-w-full items-center gap-2.5 rounded-lg border border-[#40555E] bg-[#172B32] px-3 py-2 text-left shadow-[0_8px_18px_-14px_rgba(16,34,41,0.9)] transition-[border-color,background-color,box-shadow,transform] duration-200 hover:-translate-y-px hover:border-[#D8B85C] hover:bg-[#1B3139] hover:shadow-[0_11px_22px_-14px_rgba(16,34,41,0.95)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#B98B2F] focus-visible:ring-offset-2 focus-visible:ring-offset-[#FAF9F6] motion-reduce:transform-none motion-reduce:transition-none"><svg aria-hidden="true" class="h-9 w-9 shrink-0 drop-shadow-[0_2px_4px_rgba(0,0,0,0.32)]" viewBox="0 0 48 52" fill="none"><path d="M12 27 7 49l10-5 7 8 2-24Z" fill="#C2897A"></path><path d="m36 27 5 22-10-5-7 8-2-24Z" fill="#A86F62"></path><path d="M24 39c10.493 0 19-8.507 19-19S34.493 1 24 1 5 9.507 5 20s8.507 19 19 19Z" fill="#D4AB4F" stroke="#F2D88B" stroke-width="2"></path>
1<path d="M24 34c7.732 0 14-6.268 14-14S31.732 6 24 6s-14 6.268-14 14 6.268 14 14 14Z" fill="#E5C369" stroke="#B98B2F"></path><path d="M20.2 15.4 24 12.8h2.1v14.4h-3.3V17l-2.6 1.6v-3.2Z" fill="#604918"></path></svg><span class="min-w-0 pr-1"><span class="block font-display text-[12px] font-semibold leading-4 tracking-[-0.01em] text-white sm:text-[13px]">#1 for turning data questions into SQL</span><span class="block font-sans text-[9px] font-medium leading-4 tracking-[0.045em] text-[#A8B7BC] transition-colors duration-200 group-hover:text-[#C6D0D3] motion-reduce:transition-none sm:text-[10px]">Spider 2.0-Lite benchmark <span aria-hidden="true">→</span></span></span></a></div><button type="button" data-track-cta="copy_install_command" data-track-location="hero" class="group mt-3 flex items-center gap-3 rounded-md border border-stone-300 bg-white/90 px-4 py-2.5 text-left transition-colors hover:bg-white" aria-label="Copy install command"><span class="font-mono text-[13px] text-night-200"><span class="text-night-400 select-none">$</span> <!-- -->npm install -g @kaelio/ktx</span><span class="ml-auto text-[12px] font-semibold text-night-500 group-hover:text-night-200">Copy</span></button></div><div class="rv min-w-0" style="transition-delay:200ms"><div class="jsx-37b7d6232ddaf87f relative rounded-2xl border border-stone-200/80 bg-gradient-to-b from-white/80 to-stone-50/60 shadow-[0_12px_40px_-12px_rgba(27,49,57,0.10)] backdrop-blur p-4 sm:p-5"><div class="jsx-37b7d6232ddaf87f"><div class="jsx-37b7d6232ddaf87f text-[9px] font-semibold text-night-500 uppercase tracking-[.14em] mb-2">Your data stack</div><div class="jsx-37b7d6232ddaf87f flex gap-1.5"><div class="flex-1 flex flex-col items-center gap-1 rounded-lg border px-1.5 py-2"><img alt="Snowflake" loading="lazy" width="14" height="14" decoding="async" data-nimg="1" class="h-3.5 w-3.5 shrink-0" style="color:transparent" src="/icons/snowflake.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate hidden sm:inline">Snowflake</span></div><div class="flex-1 flex flex-col items-center gap-1 rounded-lg border px-1.5 py-2"><img alt="dbt" loading="lazy" width="14" height="14" decoding="async" data-nimg="1" class="h-3.5 w-3.5 shrink-0" style="color:transparent" src="/icons/dbt.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate hidden sm:inline">dbt</span></div><div class="flex-1 flex flex-col items-center gap-1 rounded-lg border px-1.5 py-2"><img alt="LookML" loading="lazy" width="14" height="14" decoding="async" data-nimg="1" class="h-3.5 w-3.5 shrink-0" style="color:transparent" src="/icons/looker.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate hidden sm:inline">LookML</span></div><div class="flex-1 flex flex-col items-center gap-1 rounded-lg border px-1.5 py-2"><img alt="Looker" loading="lazy" width="14" height="14" decoding="async" data-nimg="1" class="h-3.5 w-3.5 shrink-0" style="color:transparent" src="/icons/looker.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate hidden sm:inline">Looker</span></div><div class="flex-1 flex flex-col items-center gap-1 rounded-lg border px-1.5 py-2"><img alt="Notion" loading="lazy" width="14" height="14" decoding="async" data-nimg="1" class="h-3.5 w-3.5 shrink-0" style="color:transparent" src="/icons/notion.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate hidden sm:inline">Notion</span></div></div></div><div class="jsx-37b7d6232ddaf87f relative h-8"><svg width="100%" height="32" viewBox="0 0 500 32" preserveAspectRatio="none" class="jsx-37b7d6232ddaf87f absolute inset-0 w-full h-full"><g class="jsx-37b7d6232ddaf87f"><circle r="3.5" fill="#10B981" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.95;0.95;0;0" keyTimes="0;0.2;0.65;0.85;
11" dur="1.2s" begin="0s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0s" repeatCount="indefinite" path="M50,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle><circle r="3" fill="#34D399" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.8;0.8;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.6s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.6s" repeatCount="indefinite" path="M50,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle></g><g class="jsx-37b7d6232ddaf87f"><circle r="3.5" fill="#10B981" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.95;0.95;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.18s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.18s" repeatCount="indefinite" path="M150,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle><circle r="3" fill="#34D399" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.8;0.8;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.78s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.78s" repeatCount="indefinite" path="M150,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle></g><g class="jsx-37b7d6232ddaf87f"><circle r="3.5" fill="#10B981" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.95;0.95;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.36s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.36s" repeatCount="indefinite" path="M250,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle><circle r="3" fill="#34D399" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.8;0.8;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.96s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.96s" repeatCount="indefinite" path="M250,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle></g><g class="jsx-37b7d6232ddaf87f"><circle r="3.5" fill="#10B981" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.95;0.95;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.54s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.54s" repeatCount="indefinite" path="M350,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle><circle r="3" fill="#34D399" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.8;0.8;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="1.1400000000000001s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="1.1400000000000001s" repeatCount="indefinite" path="M350,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle></g><g class="jsx-37b7d6232ddaf87f"><circle r="3.5" fill="#10B981" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.95;0.95;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="0.72s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="0.72s" repeatCount="indefinite" path="M450,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle><circle r="3" fill="#34D399" opacity="0" class="jsx-37b7d6232ddaf87f"><animate attributeName="opacity" values="0;0.8;0.8;0;0" keyTimes="0;0.2;0.65;0.85;1" dur="1.2s" begin="1.3199999999999998s" repeatCount="indefinite" class="jsx-37b7d6232ddaf87f"></animate><animateMotion dur="1.2s" begin="1.3199999999999998s" repeatCount="indefinite" path="M450,-4 V36" class="jsx-37b7d6232ddaf87f"></animateMotion></circle></g></svg></div><div class="relative rounded-xl border overflow-hidden"><div class="jsx-37b7d6232ddaf87f relative bg-night-50 px-3.5 py-3 z-10"><div class="jsx-37b7d6232ddaf87f flex items-center gap-2 mb-2.5"><img alt="" aria-hidden="true" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="h-[18px] w-[18px]" style="color:transparent" src="/brand/ktx-mascot-dark.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f font-display text-[13px] font-semibold text-white">ktx</span></div><div class="jsx-37b7d6232ddaf87f grid grid-cols-2 gap-2"><div class="rounded-lg border border-white/10 bg-white/[0.06] p-2.5"><div class="jsx-37b7d6232ddaf87f text-[9px] font-semibold text-white/50 uppercase tracking-[.12em] mb-1.5">Context layer</div><div class="jsx-37b7d6232ddaf87f space-y-1"><div class="flex items-center gap-1.5"><span class="jsx-37b7d6232ddaf87f h-1 w-1 rounded-full bg-emerald-400/60"></span><span class="jsx-37b7d6232ddaf87f text-[10px] text-white/60">business definitions</span></div><div class="flex items-center gap-1.5"><span class="jsx-37b7d6232ddaf87f h-1 w-1 rounded-full bg-emerald-400/60"></span><span class="jsx-37b7d6232ddaf87f text-[10px] text-white/60">metric definitions</span></div><div class="flex items-center gap-1.5"><span class="jsx-37b7d6232ddaf87f h-1 w-1 rounded-full bg-emerald-400/60"></span><span class="jsx-37b7d6232ddaf87f text-[10px] text-white/60">join graph</span></div></div></div><div class="rounded-lg border border-white/10 bg-white/[0.06] p-2.5"><div class="jsx-37b7d6232ddaf87f text-[9px] font-semibold text-white/50 uppercase tracking-[.12em] mb-1.5">Query engine</div><div class="jsx-37b7d6232ddaf87f space-y-1"><div class="flex items-center gap-1.5"><span class="jsx-37b7d6232ddaf87f h-1 w-1 rounded-full bg-blue-400/60"></span><span class="jsx-37b7d6232ddaf87f text-[10px] text-white/60">resolves grain</span></div><div class="flex items-center gap-1.5"><span class="jsx-37b7d6232ddaf87f h-1 w-1 rounded-full bg-blue-400/60"></span><span class="jsx-37b7d6232ddaf87f text-[10px] text-white/60">safe joins</span></div><div class="flex items-center gap-1.5"><span class="jsx-37b7d6232ddaf87f h-1 w-1 rounded-full bg-blue-400/60"></span><span class="jsx-37b7d6232ddaf87f text-[10px] text-white/60">compiles SQL</span></div></div></div></div></div></div><div class="flex justify-center items-center gap-5 my-0.5 h-9"><div class="flex items-center gap-1.5"><svg width="16" height="32" viewBox="0 0 16 32" class="overflow-visible"><line x1="8" y1="2" x2="8" y2="26" stroke="#D6D3D1" stroke-opacity="0.5" stroke-width="2"></line><path d="M3 22 L8 28 L13 22" fill="none" stroke="#D6D3D1" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" opacity="0.7"></path></svg></div><div class="flex items-center gap-1.5"><svg width="16" height="32" viewBox="0 0 16 32" class="overflow-visible"><line x1="8" y1="30" x2="8" y2="6" stroke="#D6D3D1" stroke-opacity="0.5" stroke-width="2"></line>
1<path d="M3 10 L8 4 L13 10" fill="none" stroke="#D6D3D1" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" opacity="0.7"></path></svg></div></div><div class="rounded-lg border p-3 h-[172px] flex flex-col"><div class="jsx-37b7d6232ddaf87f flex min-h-5 items-center gap-2 mb-2"><span class="jsx-37b7d6232ddaf87f text-[9px] font-semibold text-night-500 uppercase tracking-[.12em]">Your agent</span></div><div class="jsx-37b7d6232ddaf87f relative flex-1"><div class="absolute inset-0 grid grid-cols-3 grid-rows-2 gap-1.5" style="opacity:0"><div class="jsx-37b7d6232ddaf87f flex items-center gap-1.5 rounded-md border border-stone-200 bg-stone-50/70 px-2"><img alt="Claude Code" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4 shrink-0 object-contain" style="color:transparent" src="/icons/agents/claude.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate">Claude Code</span></div><div class="jsx-37b7d6232ddaf87f flex items-center gap-1.5 rounded-md border border-stone-200 bg-stone-50/70 px-2"><img alt="Codex" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4 shrink-0 object-contain" style="color:transparent" src="/icons/agents/codex.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate">Codex</span></div><div class="jsx-37b7d6232ddaf87f flex items-center gap-1.5 rounded-md border border-stone-200 bg-stone-50/70 px-2"><img alt="Cursor" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4 shrink-0 object-contain" style="color:transparent" src="/icons/agents/cursor.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate">Cursor</span></div><div class="jsx-37b7d6232ddaf87f flex items-center gap-1.5 rounded-md border border-stone-200 bg-stone-50/70 px-2"><img alt="LangChain" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4 shrink-0 object-contain" style="color:transparent" src="/icons/agents/langchain.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate">LangChain</span></div><div class="jsx-37b7d6232ddaf87f flex items-center gap-1.5 rounded-md border border-stone-200 bg-stone-50/70 px-2"><img alt="Vercel AI SDK" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4 shrink-0 object-contain" style="color:transparent" src="/icons/agents/vercel.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate">Vercel AI SDK</span></div><div class="jsx-37b7d6232ddaf87f flex items-center gap-1.5 rounded-md border border-stone-200 bg-stone-50/70 px-2"><img alt="Custom" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="h-4 w-4 shrink-0 object-contain" style="color:transparent" src="/icons/agents/custom.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="jsx-37b7d6232ddaf87f text-[10px] font-medium text-night-300 truncate">Custom</span></div></div></div></div></div></div></div></div></section><section id="logo-bar" class="overflow-hidden border-t border-stone-200 bg-[#FAF9F6] py-10 sm:py-12"><div class="max-w-[1200px] mx-auto px-4 sm:px-6"><p class="mb-6 text-center text-[11px] font-semibold uppercase tracking-wider text-night-500 sm:mb-8 sm:text-[12px]">Trusted by data teams at scaling companies</p></div><div class="relative"><div class="pointer-events-none absolute left-0 top-0 bottom-0 z-10 w-14 bg-gradient-to-r from-[#FAF9F6] to-transparent sm:w-24"></div><div class="pointer-events-none absolute right-0 top-0 bottom-0 z-10 w-14 bg-gradient-to-l from-[#FAF9F6] to-transparent sm:w-24"></div><div class="flex w-max logo-marquee"><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Mercy" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-8 md:h-9 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.25)" src="/logos/mercy.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Gladia" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/gladia.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Poppins" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="BeSimple" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-12 md:h-14 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.2)" srcSet="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Alt" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Falt.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Handshake" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" srcSet="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Raft" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-11 md:h-12 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.35)" srcSet="/_next/image?url=%2Flogos%2Fraft.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Vapi" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/vapi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Junction" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-3 md:h-4 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/junction.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Maximus" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-2.5 md:h-3 translate-y-
1px w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/maximus.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Mercy" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-8 md:h-9 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.25)" src="/logos/mercy.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Gladia" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/gladia.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Poppins" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="BeSimple" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-12 md:h-14 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.2)" srcSet="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Alt" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Falt.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Handshake" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" srcSet="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Raft" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-11 md:h-12 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.35)" srcSet="/_next/image?url=%2Flogos%2Fraft.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Vapi" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/vapi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Junction" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-3 md:h-4 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/junction.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Maximus" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-2.5 md:h-3 translate-y-
1px w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/maximus.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Mercy" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-8 md:h-9 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.25)" src="/logos/mercy.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Gladia" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/gladia.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Poppins" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="BeSimple" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-12 md:h-14 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.2)" srcSet="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Alt" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Falt.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Handshake" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" srcSet="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Raft" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-11 md:h-12 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.35)" srcSet="/_next/image?url=%2Flogos%2Fraft.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Vapi" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/vapi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Junction" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-3 md:h-4 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/junction.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Maximus" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-2.5 md:h-3 translate-y-
1px w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/maximus.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Mercy" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-8 md:h-9 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.25)" src="/logos/mercy.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Gladia" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/gladia.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Poppins" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fpoppins.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="BeSimple" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-12 md:h-14 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.2)" srcSet="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fbesimple.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Alt" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" srcSet="/_next/image?url=%2Flogos%2Falt.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Falt.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Handshake" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" srcSet="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fhandshake.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Raft" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-11 md:h-12 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.35)" srcSet="/_next/image?url=%2Flogos%2Fraft.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Flogos%2Fraft.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Vapi" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-4 md:h-5 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1)" src="/logos/vapi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Junction" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-3 md:h-4 w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/junction.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12"><img alt="Maximus" loading="lazy" width="120" height="40" decoding="async" data-nimg="1" class="h-2.5 md:h-3 translate-y-
1px w-auto max-w-[120px] object-contain" style="color:transparent;opacity:0.7;filter:grayscale(1) brightness(0.4)" src="/logos/maximus.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div></div></div></section><section id="problem-promise" class="overflow-hidden bg-white py-14 sm:py-16 lg:py-20"><div class="mx-auto w-full max-w-[1200px] px-4 sm:px-6"><div class="rv "><div class="text-center"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3">Why data agents fail</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50 mb-4"><span class="block">Raw data access</span><span class="block">is not enough.</span></h2><p class="text-[16px] sm:text-[17px] leading-relaxed text-night-400 mx-auto max-w-[38rem]"><strong>ktx</strong> gives agents the business context, metric definitions, and approved logic they need to answer consistently.</p></div></div><div class="rv min-w-0" style="transition-delay:120ms"><div class="mx-auto mt-10 max-w-[760px] sm:mt-12 lg:mt-14"><div class="hidden sm:block" aria-hidden="true"><svg aria-hidden="true" viewBox="0 0 760 48" preserveAspectRatio="none" class="block h-12 w-full"><circle cx="380" cy="5" r="3" class="fill-stone-400"></circle><path d="M 380 9 C 380 30, 186 22, 186 48" fill="none" stroke="currentColor" stroke-width="1" class="text-stone-300"></path><path d="M 380 9 C 380 30, 574 22, 574 48" fill="none" stroke="currentColor" stroke-width="1" class="text-stone-300"></path></svg></div><div class="grid gap-4 sm:grid-cols-2"><div class="relative flex h-full min-w-0 flex-col overflow-hidden rounded-lg border bg-white p-5 sm:p-6 border-rose-200/70 shadow-[0_18px_45px_-12px_rgba(190,18,60,0.16)]"><div aria-hidden="true" class="pointer-events-none absolute -right-20 -top-20 h-44 w-44 rounded-full bg-rose-200/45 blur-3xl"></div><span class="relative mb-6 w-fit rounded-full border px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[.08em] border-rose-200 bg-rose-50 text-rose-700">Without ktx</span><div class="relative"><p class="text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80">agent receives question</p><div class="flex justify-center" aria-hidden="true"><div class="my-1.5 h-5 w-px bg-rose-300/70"></div></div><div class="flex min-h-[64px] items-center gap-3 rounded-md border px-3.5 py-3 font-mono text-[13px] font-semibold leading-[1.3] border-rose-200/70 bg-rose-50/60 text-rose-900"><span aria-hidden="true" class="inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full ring-1 bg-rose-100 ring-rose-200/80"><svg aria-hidden="true" viewBox="0 0 12 12" class="h-3 w-3 shrink-0 text-rose-500 h-3.5 w-3.5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M3 3l6 6M9 3l-6 6"></path></svg></span><span>agent guesses from table names</span></div><div class="flex justify-center" aria-hidden="true"><div class="my-1.5 h-5 w-px bg-rose-300/70"></div></div><p class="text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80">warehouse returns rows</p></div><div class="relative mt-auto pt-8"><div class="h-px w-full bg-rose-200/70" aria-hidden="true"></div><p class="mt-4 text-[10px] font-semibold uppercase tracking-[.14em] text-rose-600">Result</p><p class="mt-1.5 font-display text-[24px] font-semibold leading-[1.08] tracking-tight sm:text-[26px] text-rose-900"><span class="block">Wrong answer.</span></p><p class="mt-0.5 font-display text-[18px] font-normal leading-[1.2] tracking-tight sm:text-[20px] text-rose-700/70"><span class="block">Burns tokens.</span></p></div></div><div class="relative flex h-full min-w-0 flex-col overflow-hidden rounded-lg border bg-white p-5 sm:p-6 border-stone-200 shadow-[0_16px_45px_rgba(32,38,35,0.05)]"><span class="relative mb-6 w-fit rounded-full border px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[.08em] border-emerald-200 bg-emerald-50/80 text-emerald-800">With ktx</span><div class="relative"><p class="text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80">agent receives question</p><div class="flex justify-center" aria-hidden="true"><div class="my-1.5 h-5 w-px bg-stone-300"></div></div><div class="flex min-h-[64px] items-center gap-3 rounded-md border px-3.5 py-3 font-mono text-[13px] font-semibold leading-[1.3] border-emerald-200/70 bg-emerald-50/40 text-emerald-900"><span aria-hidden="true" class="inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full ring-1 bg-emerald-100 ring-emerald-200/80"><svg aria-hidden="true" viewBox="0 0 12 12" class="h-3 w-3 shrink-0 text-emerald-500 h-3.5 w-3.5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 6.5l2.5 2.5L10 3"></path></svg></span><span>agent uses approved context</span></div><div class="flex justify-center" aria-hidden="true"><div class="my-1.5 h-5 w-px bg-stone-300"></div></div><p class="text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80">warehouse returns rows</p></div><div class="relative mt-auto pt-8"><div class="h-px w-full bg-stone-200" aria-hidden="true"></div><p class="mt-4 text-[10px] font-semibold uppercase tracking-[.14em] text-night-500">Result</p><p class="mt-1.5 font-display text-[24px] font-semibold leading-[1.08] tracking-tight sm:text-[26px] text-night-50"><span class="block">
1Trusted answer.</span></p><p class="mt-0.5 font-display text-[18px] font-normal leading-[1.2] tracking-tight sm:text-[20px] text-night-400"><span class="block">Same logic every time.</span></p></div></div></div></div></div></div></section><section id="features" class="overflow-hidden bg-[#F9F7F4] py-16 sm:py-20 lg:py-24"><div class="mx-auto w-full max-w-[1200px] min-w-0 px-4 sm:px-6"><div class="rv "><div class="text-center"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3">Governed agent context</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50 mb-4"><span class="block">The missing context layer</span><span class="block">for data agents.</span></h2><p class="text-[16px] sm:text-[17px] leading-relaxed text-night-400 mx-auto max-w-[54rem]"><span class="block"><strong>ktx</strong> gives data agents business context and approved metric definitions,</span><span class="block">plus the relationships they need to answer accurately.</span></p></div></div><div class="mt-9 grid items-stretch gap-4 sm:grid-cols-2 lg:grid-cols-3"><div class="rv h-full min-w-0" style="transition-delay:0ms"><div class="flex h-full min-h-[268px] min-w-0 flex-col overflow-hidden rounded-lg border border-stone-200 bg-white p-5 shadow-[0_10px_30px_rgba(17,24,39,0.03)]"><div class="mb-4 flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-night-50 font-mono text-[12px] font-semibold text-white">01</div><h3 class="min-h-[34px] font-display text-[20px] font-semibold leading-tight tracking-tight text-night-50">Business knowledge</h3><p class="mt-3 min-h-[58px] text-[14px] leading-relaxed text-night-400">Agents see definitions, caveats, policies, and team language before they answer.</p><div class="pt-4"><div class="grid h-[86px] w-full min-w-0 grid-cols-2 content-start justify-items-center gap-2.5 rounded-md border border-stone-200 bg-stone-50/70 p-2.5"><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">definitions</span><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">policies</span><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">examples</span><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">owners</span></div></div></div></div><div class="rv h-full min-w-0" style="transition-delay:70ms"><div class="flex h-full min-h-[268px] min-w-0 flex-col overflow-hidden rounded-lg border border-stone-200 bg-white p-5 shadow-[0_10px_30px_rgba(17,24,39,0.03)]"><div class="mb-4 flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-night-50 font-mono text-[12px] font-semibold text-white">02</div><h3 class="min-h-[34px] font-display text-[20px] font-semibold leading-tight tracking-tight text-night-50">Agent query engine</h3><p class="mt-3 min-h-[58px] text-[14px] leading-relaxed text-night-400">Agents ask what to measure; <strong>ktx</strong> plans grain, joins, filters, and governed SQL.</p><div class="pt-4"><div class="grid h-[86px] w-full min-w-0 grid-cols-2 content-start justify-items-center gap-2.5 rounded-md border border-stone-200 bg-stone-50/70 p-2.5"><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">ask</span><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">plan</span><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">compile</span><span class="flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500">SQL</span></div></div></div></div><div class="rv h-full min-w-0" style="transition-delay:140ms"><div class="flex h-full min-h-[268px] min-w-0 flex-col overflow-hidden rounded-lg border border-stone-200 bg-white p-5 shadow-[0_10px_30px_rgba(17,24,39,0.03)]"><div class="mb-4 flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-night-50 font-mono text-[12px] font-semibold text-white">03</div><h3 class="min-h-[34px] font-display text-[20px] font-semibold leading-tight tracking-tight text-night-50">MCP-compatible agents</h3><p class="mt-3 min-h-[58px] text-[14px] leading-relaxed text-night-400">Expose the same approved context to Claude Code, Codex, Cursor, and custom MCP agents.</p><div class="pt-4"><div class="grid h-[86px] w-full min-w-0 grid-cols-2 content-start justify-items-center gap-2.5 rounded-md border border-stone-200 bg-stone-50/70 p-2.5"><div class="flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white"><img alt="Claude" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="h-4 w-4 object-contain" style="color:transparent" src="/icons/agents/claude.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white"><img alt="Codex" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="h-4 w-4 object-contain" style="color:transparent" src="/icons/agents/codex.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white"><img alt="Cursor" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="h-4 w-4 object-contain" style="color:transparent" src="/icons/agents/cursor.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div><div class="flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white"><img alt="Custom code" loading="lazy" width="18" height="18" decoding="async" data-nimg="1" class="h-4 w-4 object-contain" style="color:transparent" src="/icons/agents/custom.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></div></div></div></div></div></div></div></section><section id="how-it-works" class="overflow-hidden bg-[#0F1F25] py-16 sm:py-20 lg:py-24"><div class="mx-auto grid w-full max-w-[1200px] min-w-0 items-center gap-10 px-4 sm:px-6 lg:grid-cols-[0.82fr_1.18fr] lg:gap-14"><div class="rv min-w-0"><div class="text-left"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-white/50 mb-3">How ktx works</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-white mb-4"><strong>ktx</strong> reconciles your stack into context agents can query.</h2><p class="text-[16px] sm:text-[17px] leading-relaxed text-white/65 max-w-[34rem]"><strong>ktx</strong> turns source evidence into reviewable context files, then serves them to agents through CLI and MCP.</p></div><div class="mt-8 space-y-3"><div class="rounded-lg border border-white/10 bg-white/[0.06] px-4 py-4 shadow-[0_18px_50px_-32px_rgba(0,0,0,0.55)]"><div class="mb-2 flex items-center gap-2.5"><span class="flex h-6 w-6 items-center justify-center rounded-full bg-cyan-200 font-mono text-[11px] font-semibold text-night-50">1</span>
1<p class="text-[11px] font-semibold uppercase tracking-[.1em] text-white/45">Build loop</p></div><h3 class="font-display text-[18px] font-semibold leading-tight text-white">Ingest and reconcile source evidence</h3><p class="mt-2 text-[13px] leading-relaxed text-white/60"><strong>ktx</strong> reads your warehouse, BI layer, modeling code, query history, and docs, then turns new evidence into proposed context updates.</p></div><div class="rounded-lg border border-white/10 bg-white/[0.06] px-4 py-4 shadow-[0_18px_50px_-32px_rgba(0,0,0,0.55)]"><div class="mb-2 flex items-center gap-2.5"><span class="flex h-6 w-6 items-center justify-center rounded-full bg-cyan-200 font-mono text-[11px] font-semibold text-night-50">2</span><p class="text-[11px] font-semibold uppercase tracking-[.1em] text-white/45">Runtime loop</p></div><h3 class="font-display text-[18px] font-semibold leading-tight text-white">Serve agents at runtime</h3><p class="mt-2 text-[13px] leading-relaxed text-white/60">Agents use the CLI or MCP server to search the wiki, find approved semantic entities, compile queries, and run read-only SQL.</p></div><div class="rounded-lg border border-white/10 bg-white/[0.06] px-4 py-4 shadow-[0_18px_50px_-32px_rgba(0,0,0,0.55)]"><div class="mb-2 flex items-center gap-2.5"><span class="flex h-6 w-6 items-center justify-center rounded-full bg-cyan-200 font-mono text-[11px] font-semibold text-night-50">3</span><p class="text-[11px] font-semibold uppercase tracking-[.1em] text-white/45">Review loop</p></div><h3 class="font-display text-[18px] font-semibold leading-tight text-white">Keep changes reviewable</h3><p class="mt-2 text-[13px] leading-relaxed text-white/60">Every durable update is a YAML or Markdown diff. Your team can inspect it, adjust it, and merge it through git.</p></div></div></div><div class="rv min-w-0" style="transition-delay:120ms"><div aria-label="ktx product mechanics animation" class="relative w-full max-w-full min-w-0 overflow-hidden rounded-xl border border-white/20 bg-white p-4 shadow-[0_30px_90px_-45px_rgba(0,0,0,0.55)] sm:p-5"><div class="relative"><div class="grid grid-cols-2 gap-2 sm:grid-cols-4"><div class="min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-blue-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm"><p class="font-display text-[14px] font-semibold leading-tight text-night-50">Databases</p><p class="mt-1.5 break-words text-[11px] leading-5 text-night-500">Schemas, columns, relationships, and query history.</p></div><div class="min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-orange-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm"><p class="font-display text-[14px] font-semibold leading-tight text-night-50">BI tools</p><p class="mt-1.5 break-words text-[11px] leading-5 text-night-500">Dashboards, explores, usage, and trusted examples.</p></div><div class="min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-amber-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm"><p class="font-display text-[14px] font-semibold leading-tight text-night-50">Modeling code</p><p class="mt-1.5 break-words text-[11px] leading-5 text-night-500">dbt, LookML, MetricFlow, joins, and existing metrics.</p></div><div class="min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-emerald-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm"><p class="font-display text-[14px] font-semibold leading-tight text-night-50">Docs and notes</p><p class="mt-1.5 break-words text-[11px] leading-5 text-night-500">Policies, caveats, analyst notes, and team definitions.</p></div></div><div class="relative h-20 sm:h-24" aria-hidden="true"><svg viewBox="0 0 760 96" preserveAspectRatio="none" class="absolute inset-0 h-full w-full overflow-visible"><path d="M95,4 C95,36 328,44 380,92" fill="none" stroke="#94A3B8" stroke-dasharray="5 7" stroke-linecap="round" stroke-width="1.6" opacity="0.5"></path><path d="M285,4 C285,38 354,48 380,92" fill="none" stroke="#94A3B8" stroke-dasharray="5 7" stroke-linecap="round" stroke-width="1.6" opacity="0.5"></path><path d="M475,4 C475,38 406,48 380,92" fill="none" stroke="#94A3B8" stroke-dasharray="5 7" stroke-linecap="round" stroke-width="1.6" opacity="0.5"></path><path d="M665,4 C665,36 432,44 380,92" fill="none" stroke="#94A3B8" stroke-dasharray="5 7" stroke-linecap="round" stroke-width="1.6" opacity="0.5"></path><g class="ktx-flow-dot"><circle r="5.5" fill="#3B82F6" opacity="0.16">
1<animateMotion dur="4.8s" begin="0s" repeatCount="indefinite" path="M95,4 C95,36 328,44 380,92"></animateMotion></circle><circle r="2.5" fill="#3B82F6" opacity="0.88"><animateMotion dur="4.8s" begin="0s" repeatCount="indefinite" path="M95,4 C95,36 328,44 380,92"></animateMotion></circle></g><g class="ktx-flow-dot"><circle r="5.5" fill="#F97316" opacity="0.16"><animateMotion dur="4.8s" begin="0.45s" repeatCount="indefinite" path="M285,4 C285,38 354,48 380,92"></animateMotion></circle><circle r="2.5" fill="#F97316" opacity="0.88"><animateMotion dur="4.8s" begin="0.45s" repeatCount="indefinite" path="M285,4 C285,38 354,48 380,92"></animateMotion></circle></g><g class="ktx-flow-dot"><circle r="5.5" fill="#F59E0B" opacity="0.16"><animateMotion dur="4.8s" begin="0.9s" repeatCount="indefinite" path="M475,4 C475,38 406,48 380,92"></animateMotion></circle><circle r="2.5" fill="#F59E0B" opacity="0.88"><animateMotion dur="4.8s" begin="0.9s" repeatCount="indefinite" path="M475,4 C475,38 406,48 380,92"></animateMotion></circle></g><g class="ktx-flow-dot"><circle r="5.5" fill="#10B981" opacity="0.16"><animateMotion dur="4.8s" begin="1.35s" repeatCount="indefinite" path="M665,4 C665,36 432,44 380,92"></animateMotion></circle><circle r="2.5" fill="#10B981" opacity="0.88"><animateMotion dur="4.8s" begin="1.35s" repeatCount="indefinite" path="M665,4 C665,36 432,44 380,92"></animateMotion></circle></g></svg></div><div class="mx-auto max-w-[430px] overflow-hidden rounded-xl border border-night-700 bg-night-50 shadow-[0_16px_40px_-22px_rgba(15,31,37,0.55)]"><div class="flex items-center justify-between gap-3 border-b border-white/10 px-4 py-3"><div><p class="text-[10px] font-semibold uppercase tracking-[.12em] text-white/45">ktx</p><p class="mt-1 font-display text-[18px] font-semibold leading-tight text-white">Context builder</p></div><span class="rounded-md border border-cyan-300/20 bg-cyan-300/10 px-2 py-1 font-mono text-[10px] text-cyan-100">local + git</span></div><div class="grid gap-2 p-3 sm:grid-cols-2"><div class="flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50">1</span><span class="text-[11px] font-medium text-white/72">source connectors</span></div><div class="flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50">2</span><span class="text-[11px] font-medium text-white/72">context builder</span></div><div class="flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50">3</span><span class="text-[11px] font-medium text-white/72">reconciliation</span></div><div class="flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50">4</span><span class="text-[11px] font-medium text-white/72">validation</span></div></div></div><div class="relative h-16 sm:h-20" aria-hidden="true"><svg viewBox="0 0 760 80" preserveAspectRatio="none" class="absolute inset-0 h-full w-full overflow-visible"><path d="M380,4 C330,28 210,36 190,76" fill="none" stroke="#94A3B8" stroke-dasharray="5 7" stroke-linecap="round" stroke-width="1.6" opacity="0.55"></path><path d="M380,4 C430,28 550,36 570,76" fill="none" stroke="#94A3B8" stroke-dasharray="5 7" stroke-linecap="round" stroke-width="1.6" opacity="0.55"></path><g class="ktx-flow-dot"><circle r="5.5" fill="#10B981" opacity="0.16"><animateMotion dur="3.6s" begin="0s" repeatCount="indefinite" path="M380,4 C330,28 210,36 190,76"></animateMotion></circle><circle r="2.5" fill="#10B981" opacity="0.88"><animateMotion dur="3.6s" begin="0s" repeatCount="indefinite" path="M380,4 C330,28 210,36 190,76"></animateMotion></circle></g><g class="ktx-flow-dot"><circle r="5.5" fill="#3B82F6" opacity="0.16">
1<animateMotion dur="3.6s" begin="0.45s" repeatCount="indefinite" path="M380,4 C430,28 550,36 570,76"></animateMotion></circle><circle r="2.5" fill="#3B82F6" opacity="0.88"><animateMotion dur="3.6s" begin="0.45s" repeatCount="indefinite" path="M380,4 C430,28 550,36 570,76"></animateMotion></circle></g></svg></div><div class="grid gap-3 sm:grid-cols-2"><div class="min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-4 py-3"><p class="font-mono text-[12px] font-semibold text-emerald-600">wiki/*.md</p><h3 class="mt-1 font-display text-[17px] font-semibold leading-tight text-night-50">Business context</h3><p class="mt-2 text-[12px] leading-5 text-night-500">Readable definitions, caveats, policies, provenance, and source notes that agents can search before answering.</p></div><div class="min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-4 py-3"><p class="font-mono text-[12px] font-semibold text-blue-600">semantic-layer/*.yaml</p><h3 class="mt-1 font-display text-[17px] font-semibold leading-tight text-night-50">Executable semantics</h3><p class="mt-2 text-[12px] leading-5 text-night-500">Measures, dimensions, joins, filters, and segments that <strong>ktx</strong> can validate and compile into SQL.</p></div></div><div class="mt-4 rounded-xl border border-stone-200 bg-white px-4 py-4"><div class="flex flex-wrap items-center justify-between gap-3"><div><p class="text-[10px] font-semibold uppercase tracking-[.12em] text-night-500">Agent runtime</p><h3 class="mt-1 font-display text-[18px] font-semibold leading-tight text-night-50">Context stays active.</h3></div></div><div class="mt-4 grid gap-2 sm:grid-cols-3"><div class="min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-3 py-3"><div class="mb-2 flex items-center gap-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-blue-600 font-mono text-[10px] font-semibold text-white">1</span><p class="font-mono text-[10px] font-semibold text-blue-700">agent request</p></div><h4 class="font-display text-[14px] font-semibold leading-tight text-night-50">Agent asks <strong>ktx</strong></h4><p class="mt-1.5 text-[11px] leading-5 text-night-500">The agent sends <strong>ktx</strong> the business question plus the metrics it needs.</p></div><div class="min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-3 py-3"><div class="mb-2 flex items-center gap-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-blue-600 font-mono text-[10px] font-semibold text-white">2</span><p class="font-mono text-[10px] font-semibold text-blue-700">context lookup</p></div><h4 class="font-display text-[14px] font-semibold leading-tight text-night-50"><strong>ktx</strong> searches and plans</h4><p class="mt-1.5 text-[11px] leading-5 text-night-500"><strong>ktx</strong> reads the wiki and metric definitions, resolves grain, joins, filters, and entities.</p></div><div class="min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-3 py-3"><div class="mb-2 flex items-center gap-2"><span class="flex h-5 w-5 items-center justify-center rounded-full bg-blue-600 font-mono text-[10px] font-semibold text-white">3</span><p class="font-mono text-[10px] font-semibold text-blue-700">validated SQL</p></div><h4 class="font-display text-[14px] font-semibold leading-tight text-night-50">Warehouse returns rows</h4><p class="mt-1.5 text-[11px] leading-5 text-night-500"><strong>ktx</strong> compiles a read-only query, executes it, and sends rows to the agent.</p></div></div></div></div><style>
2        .ktx-flow-dot {
3          filter: drop-shadow(0 0 7px currentColor);
4        }
5
6        @media (prefers-reduced-motion: reduce) {
7          .ktx-flow-dot {
8            display: none;
9          }
10        }
11      </style></div></div></div></section><section id="cloud" class="bg-stone-50 py-20 sm:py-24 lg:py-28"><div class="max-w-[1200px] mx-auto px-4 sm:px-6"><div class="rv "><div class="text-center"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3">Built for data teams</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50 mb-4"><span class="block">Bring ktx to the</span><span class="block">whole company.</span></h2><p class="text-[16px] sm:text-[17px] leading-relaxed text-night-400 mx-auto max-w-[38rem]"><span class="block">Scale <strong>ktx</strong> into a governed company-wide context layer</span><span class="block">
11without running the infrastructure yourself.</span></p></div></div><div class="rv "><div class="mt-12 grid items-stretch gap-5 sm:grid-cols-2"><div class="flex h-full flex-col rounded-xl border p-7 border-[#1B3139]/10 bg-white shadow-[0_18px_60px_rgba(27,49,57,0.08)]"><div class="mb-5 flex items-center gap-2.5"><img alt="" aria-hidden="true" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="h-6 w-6" style="color:transparent" src="/brand/ktx-mascot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><h3 class="font-display text-[18px] font-semibold text-night-50">ktx (open source)</h3></div><ul class="space-y-2.5"><li class="flex items-start gap-2.5 text-[14px] text-night-400"><svg class="mt-0.5 h-4 w-4 shrink-0 text-night-100" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Open-source ktx engine</li><li class="flex items-start gap-2.5 text-[14px] text-night-400"><svg class="mt-0.5 h-4 w-4 shrink-0 text-night-100" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Wiki and semantic layer as files</li><li class="flex items-start gap-2.5 text-[14px] text-night-400"><svg class="mt-0.5 h-4 w-4 shrink-0 text-night-100" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>MCP and CLI surface</li><li class="flex items-start gap-2.5 text-[14px] text-night-400"><svg class="mt-0.5 h-4 w-4 shrink-0 text-night-100" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Bring your own LLM keys</li><li class="flex items-start gap-2.5 text-[14px] text-night-400"><svg class="mt-0.5 h-4 w-4 shrink-0 text-night-100" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Apache 2.0 license</li><li class="flex items-start gap-2.5 text-[14px] text-night-400"><svg class="mt-0.5 h-4 w-4 shrink-0 text-night-100" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Run on your own infrastructure</li></ul></div><div class="relative flex h-full flex-col overflow-hidden rounded-xl border p-7 shadow-lg shadow-black/[0.2] border-[#1B3139] bg-[#1B3139] shadow-[0_24px_70px_rgba(27,49,57,0.24)]"><div class="pointer-events-none absolute inset-x-0 top-0 h-1.5" style="background:linear-gradient(90deg, #FF8A4C 0%, #F5F1EA 48%, #7EB7A7 100%)"></div><div class="relative"><div class="mb-4 flex flex-wrap items-center justify-between gap-3"><h3 class="font-display text-[20px] font-semibold text-white">ktx Cloud</h3><span class="inline-flex h-6 shrink-0 items-center rounded-full px-2.5 text-[10px] font-semibold uppercase tracking-[.06em] bg-white text-night-50">Recommended for teams</span></div><ul class="space-y-2.5"><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Everything in ktx</li><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Hosted ktx runtime, no self-install</li><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Multi-user workspace</li><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>Review and approval workflows</li><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>SSO and SCIM</li><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>LLM credits included</li><li class="flex items-start gap-2.5 text-[14px] text-white/75"><svg class="mt-0.5 h-4 w-4 shrink-0 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>SOC 2 and HIPAA compliance</li></ul></div></div></div></div><div class="rv "><div class="mt-10 flex flex-wrap items-center justify-center gap-4"><a data-track-cta="book_demo_cloud_bridge" data-track-location="cloud_bridge" class="font-semibold px-7 py-3 rounded-sm transition-colors text-[15px] shadow-md bg-night-50 hover:bg-night-100 text-white" href="/book-demo">Book a demo<span class="inline-block ml-1.5">→</span></a><a data-track-cta="see_ktx_cloud" data-track-location="cloud_bridge" class="text-[14px] font-semibold underline underline-offset-4 transition-colors text-night-400 hover:text-night-50" href="/products/ktx-cloud">See ktx Cloud →</a></div></div></div></section><section id="integrations" class="bg-[#1B3139] py-12 sm:py-14 lg:py-20 overflow-hidden"><div class="max-w-[1200px] mx-auto px-4 sm:px-6"><div class="mb-10 sm:mb-12"><div class="text-center"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-white/50 mb-3">Integrations</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-white mb-4">Integrates with your <br class="hidden sm:block"/>entire data stack</h2><p class="text-[16px] sm:text-[17px] leading-relaxed text-white/65 mx-auto max-w-[38rem]">Connect your warehouse, semantic layer, BI, docs, and business tools,<!-- --> <br class="hidden sm:block"/>with 900+ more connectors rolling out soon.</p></div></div><div class="hub-rows"><div class="hub-marquee"><div class="hub-track "><div class="hub-tile"><img alt="Snowflake" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/snowflake.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Snowflake</span></div><div class="hub-tile"><img alt="BigQuery" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/bigquery.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">BigQuery</span></div><div class="hub-tile"><img alt="Looker" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/looker.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Looker</span></div><div class="hub-tile"><img alt="Power BI" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/power-bi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Power BI</span></div><div class="hub-tile"><img alt="Databricks" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/databricks.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Databricks</span></div><div class="hub-tile">
11<img alt="Redshift" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/redshift.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Redshift</span></div><div class="hub-tile"><img alt="PostgreSQL" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/postgresql.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostgreSQL</span></div><div class="hub-tile"><img alt="ClickHouse" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/clickhouse.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">ClickHouse</span></div><div class="hub-tile"><img alt="dbt" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/dbt.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">dbt</span></div><div class="hub-tile"><img alt="Snowflake" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/snowflake.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Snowflake</span></div><div class="hub-tile"><img alt="BigQuery" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/bigquery.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">BigQuery</span></div><div class="hub-tile"><img alt="Looker" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/looker.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Looker</span></div><div class="hub-tile"><img alt="Power BI" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/power-bi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Power BI</span></div><div class="hub-tile"><img alt="Databricks" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/databricks.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Databricks</span></div><div class="hub-tile"><img alt="Redshift" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/redshift.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Redshift</span></div><div class="hub-tile"><img alt="PostgreSQL" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/postgresql.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostgreSQL</span></div><div class="hub-tile"><img alt="ClickHouse" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/clickhouse.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">ClickHouse</span></div><div class="hub-tile"><img alt="dbt" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/dbt.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">dbt</span></div><div class="hub-tile"><img alt="Snowflake" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/snowflake.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Snowflake</span></div><div class="hub-tile"><img alt="BigQuery" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/bigquery.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">BigQuery</span></div><div class="hub-tile"><img alt="Looker" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/looker.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Looker</span></div><div class="hub-tile"><img alt="Power BI" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/power-bi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Power BI</span></div><div class="hub-tile"><img alt="Databricks" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/databricks.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Databricks</span></div><div class="hub-tile">
11<img alt="Redshift" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/redshift.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Redshift</span></div><div class="hub-tile"><img alt="PostgreSQL" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/postgresql.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostgreSQL</span></div><div class="hub-tile"><img alt="ClickHouse" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/clickhouse.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">ClickHouse</span></div><div class="hub-tile"><img alt="dbt" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/dbt.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">dbt</span></div><div class="hub-tile"><img alt="Snowflake" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/snowflake.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Snowflake</span></div><div class="hub-tile"><img alt="BigQuery" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/bigquery.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">BigQuery</span></div><div class="hub-tile"><img alt="Looker" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/looker.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Looker</span></div><div class="hub-tile"><img alt="Power BI" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/power-bi.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Power BI</span></div><div class="hub-tile"><img alt="Databricks" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/databricks.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Databricks</span></div><div class="hub-tile"><img alt="Redshift" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/redshift.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Redshift</span></div><div class="hub-tile"><img alt="PostgreSQL" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/postgresql.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostgreSQL</span></div><div class="hub-tile"><img alt="ClickHouse" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/clickhouse.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">ClickHouse</span></div><div class="hub-tile"><img alt="dbt" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/dbt.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">dbt</span></div></div></div><div class="hub-marquee"><div class="hub-track hub-track-rev"><div class="hub-tile"><img alt="Fivetran" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/fivetran.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Fivetran</span></div><div class="hub-tile"><img alt="Airflow" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/airflow.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Airflow</span></div><div class="hub-tile"><img alt="Tableau" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/tableau.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Tableau</span></div><div class="hub-tile"><img alt="Sigma" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=32&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Sigma</span></div><div class="hub-tile"><img alt="Metabase" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/metabase.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Metabase</span></div><div class="hub-tile"><img alt="Segment" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/segment.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Segment</span></div><div class="hub-tile"><img alt="Amplitude" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/amplitude.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Amplitude</span></div><div class="hub-tile"><img alt="Mixpanel" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/mixpanel.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Mixpanel</span></div><div class="hub-tile"><img alt="PostHog" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/posthog.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostHog</span></div><div class="hub-tile"><img alt="Fivetran" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/fivetran.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Fivetran</span></div><div class="hub-tile"><img alt="Airflow" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/airflow.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Airflow</span></div><div class="hub-tile"><img alt="Tableau" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/tableau.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Tableau</span></div><div class="hub-tile"><img alt="Sigma" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=32&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Sigma</span></div><div class="hub-tile"><img alt="Metabase" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/metabase.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Metabase</span></div><div class="hub-tile"><img alt="Segment" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/segment.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Segment</span></div><div class="hub-tile"><img alt="Amplitude" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/amplitude.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Amplitude</span></div><div class="hub-tile"><img alt="Mixpanel" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/mixpanel.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Mixpanel</span></div><div class="hub-tile"><img alt="PostHog" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/posthog.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostHog</span></div><div class="hub-tile"><img alt="Fivetran" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/fivetran.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Fivetran</span></div><div class="hub-tile"><img alt="Airflow" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/airflow.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Airflow</span></div><div class="hub-tile"><img alt="Tableau" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/tableau.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Tableau</span></div><div class="hub-tile"><img alt="Sigma" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=32&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Sigma</span></div><div class="hub-tile"><img alt="Metabase" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/metabase.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Metabase</span></div><div class="hub-tile"><img alt="Segment" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/segment.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Segment</span></div><div class="hub-tile"><img alt="Amplitude" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/amplitude.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Amplitude</span></div><div class="hub-tile"><img alt="Mixpanel" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/mixpanel.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Mixpanel</span></div><div class="hub-tile"><img alt="PostHog" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/posthog.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostHog</span></div><div class="hub-tile"><img alt="Fivetran" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/fivetran.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Fivetran</span></div><div class="hub-tile"><img alt="Airflow" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/airflow.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Airflow</span></div><div class="hub-tile"><img alt="Tableau" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/tableau.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Tableau</span></div><div class="hub-tile"><img alt="Sigma" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=32&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Ficons%2Fsigma.png&amp;w=64&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Sigma</span></div><div class="hub-tile"><img alt="Metabase" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/metabase.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Metabase</span></div><div class="hub-tile"><img alt="Segment" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/segment.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Segment</span></div><div class="hub-tile"><img alt="Amplitude" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/amplitude.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Amplitude</span></div><div class="hub-tile"><img alt="Mixpanel" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/mixpanel.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Mixpanel</span></div><div class="hub-tile"><img alt="PostHog" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/posthog.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">PostHog</span></div></div></div><div class="hub-marquee"><div class="hub-track "><div class="hub-tile"><img alt="Slack" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/slack.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Slack</span></div><div class="hub-tile"><img alt="Jira" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/jira.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Jira</span></div><div class="hub-tile"><img alt="GitHub" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/github.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">GitHub</span></div><div class="hub-tile"><img alt="Notion" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/notion.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Notion</span></div><div class="hub-tile"><img alt="Salesforce" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/salesforce.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">
11Salesforce</span></div><div class="hub-tile"><img alt="HubSpot" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/hubspot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">HubSpot</span></div><div class="hub-tile"><img alt="Stripe" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/stripe.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Stripe</span></div><div class="hub-tile"><img alt="Zendesk" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/zendesk.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Zendesk</span></div><div class="hub-tile"><img alt="Intercom" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/intercom.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Intercom</span></div><div class="hub-tile"><img alt="Slack" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/slack.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Slack</span></div><div class="hub-tile"><img alt="Jira" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/jira.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Jira</span></div><div class="hub-tile"><img alt="GitHub" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/github.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">GitHub</span></div><div class="hub-tile"><img alt="Notion" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/notion.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Notion</span></div><div class="hub-tile"><img alt="Salesforce" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/salesforce.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Salesforce</span></div><div class="hub-tile"><img alt="HubSpot" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/hubspot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">HubSpot</span></div><div class="hub-tile"><img alt="Stripe" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/stripe.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Stripe</span></div><div class="hub-tile"><img alt="Zendesk" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/zendesk.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Zendesk</span></div><div class="hub-tile"><img alt="Intercom" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/intercom.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Intercom</span></div><div class="hub-tile"><img alt="Slack" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/slack.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Slack</span></div><div class="hub-tile"><img alt="Jira" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/jira.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Jira</span></div><div class="hub-tile"><img alt="GitHub" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/github.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">GitHub</span></div><div class="hub-tile"><img alt="Notion" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/notion.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Notion</span></div><div class="hub-tile"><img alt="Salesforce" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/salesforce.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">
11Salesforce</span></div><div class="hub-tile"><img alt="HubSpot" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/hubspot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">HubSpot</span></div><div class="hub-tile"><img alt="Stripe" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/stripe.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Stripe</span></div><div class="hub-tile"><img alt="Zendesk" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/zendesk.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Zendesk</span></div><div class="hub-tile"><img alt="Intercom" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/intercom.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Intercom</span></div><div class="hub-tile"><img alt="Slack" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/slack.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Slack</span></div><div class="hub-tile"><img alt="Jira" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/jira.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Jira</span></div><div class="hub-tile"><img alt="GitHub" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/github.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">GitHub</span></div><div class="hub-tile"><img alt="Notion" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/notion.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Notion</span></div><div class="hub-tile"><img alt="Salesforce" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/salesforce.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Salesforce</span></div><div class="hub-tile"><img alt="HubSpot" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/hubspot.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">HubSpot</span></div><div class="hub-tile"><img alt="Stripe" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/stripe.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Stripe</span></div><div class="hub-tile"><img alt="Zendesk" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/zendesk.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Zendesk</span></div><div class="hub-tile"><img alt="Intercom" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" style="color:transparent" src="/icons/intercom.svg?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/><span class="hub-tile-label">Intercom</span></div></div></div></div></div></section><section id="faq" class="py-12 sm:py-14 lg:py-20"><div class="max-w-[760px] mx-auto px-4 sm:px-6"><div class="rv mb-10 sm:mb-12"><div class="text-center"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3">FAQ</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50">Common questions</h2></div></div><div class="rv "><div class="divide-y divide-stone-200 border-t border-b border-stone-200"><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">What is ktx?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> is an open-source context layer for data agents that makes them much more accurate at querying data warehouses. It gives agents the business context, approved metric definitions, joinable columns, warehouse metadata, and query history they do not get from direct warehouse access. It also includes a query engine, so agents can query through <strong>ktx</strong> instead of writing SQL from scratch.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Is ktx free?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span>Yes. <strong>ktx</strong> is open source under the Apache 2.0 license. There are no usage limits. You run it yourself with your own 
11LLM API keys.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">How do I install and set up ktx?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span>Run npm install -g @kaelio/ktx, then run ktx setup from your project directory. You can also ask Claude Code, Codex, Cursor, or another coding agent to install and configure <strong>ktx</strong> for you by giving it the prompt from the </span><a href="https://docs.kaelio.com/ktx/docs/getting-started/quickstart" target="_blank" rel="noopener noreferrer" class="underline decoration-stone-300 hover:decoration-brand hover:text-night-100 transition-colors">ktx quickstart</a><span>. Setup creates a <strong>ktx</strong> project, connects your warehouse and context sources, builds context, and can install agent integrations. <strong>ktx</strong> requires Node.js 22 or newer.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">What does ktx do that raw MCP access does not?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span>A direct warehouse MCP connector usually gives an agent access to tables, columns, and SQL execution. <strong>ktx</strong> gives the agent a query engine plus reviewable metric definitions, a mapped join graph that resolves chasm and fan traps, a wiki of business context, and the source evidence behind every definition.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">How does ktx make agent-generated SQL more reliable?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> gives agents approved context before they write or run SQL. Agents can search the wiki, find semantic-layer entities, compile governed metric queries, and run read-only SQL through configured connections. This reduces repeated schema exploration, incorrect joins, and invented metric logic.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Does ktx send my data anywhere?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> runs locally. Your warehouse data stays in your warehouse, and local state and secrets stay in the git-ignored .ktx directory. Your LLM provider sees whatever context or query content your agent sends to it, the same as any other agent connected to your data.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Where does ktx store context?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> stores shareable context in plain files: ktx.yaml, semantic-layer YAML, and Markdown wiki pages. Those files can be reviewed in git. Local runtime state, credentials, caches, and secrets live under .ktx and should stay out of git.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">How is ktx different from semantic layers like Cube, Malloy, or dbt MetricFlow?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> includes its own semantic layer, but it is built to be flexible and agent-native: agents can search, read, patch, and validate context through files, CLI, and MCP. Compared with standalone semantic-layer tools, <strong>ktx</strong> adds business context, source evidence, warehouse metadata, query history, and a reviewable wiki around the semantic model.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Does ktx replace dbt, Looker, Metabase, or my BI tool?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span>No. <strong>ktx</strong> complements the tools you already use. It can ingest dbt, MetricFlow, LookML, Looker, Metabase, Notion, warehouse metadata, and query history, then expose that c
11ontext to agents. Your existing transformations, dashboards, and BI workflows stay in place.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Does ktx replace dbt?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span>No. <strong>ktx</strong> consumes dbt instead of replacing it. If you use dbt, <strong>ktx</strong> can ingest your models, metric definitions, and documentation into its context layer so agents can use that governed logic directly. If you don&#x27;t use dbt, <strong>ktx</strong> can still build context from your warehouse schemas, BI tools, documentation, and query history.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">What is the difference between ktx and ktx Cloud?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> is the open-source engine. You run it yourself, locally, with your own LLM keys. <strong>ktx Cloud</strong> is the hosted version. Same engine, plus hosted runtime, multi-user workspace, review and approval workflows, SSO, continuous ingest, observability, and included LLM credits.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Which agent clients does ktx work with?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> works with Claude Code, Claude Desktop, Codex, Cursor, OpenCode, generic .agents clients, and any custom MCP-compatible agent your team builds. <strong>ktx</strong> exposes an MCP server and a CLI, so any agent that speaks MCP can use it.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Which warehouses and BI tools does ktx work with?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5">Warehouses: PostgreSQL, Snowflake, BigQuery, ClickHouse, MySQL, SQL Server, SQLite, DuckDB, Amazon Athena, MongoDB, and many more. Modeling and BI: dbt, MetricFlow, LookML, Looker, Metabase, Sigma, and many more. Documentation: Notion, Google Drive, and many more.</p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">Can my team review and change the context ktx creates?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span>Yes. <strong>ktx</strong> is built around reviewable context files. Agents can propose updates to semantic-layer YAML or wiki Markdown, but your team can inspect, validate, and approve those changes through normal code review before they become trusted context.</span></p></div></div><div><button class="flex w-full items-center justify-between gap-4 py-5 text-left cursor-pointer" aria-expanded="false"><span class="text-[14px] font-semibold leading-snug text-night-50 sm:text-[15px]">How do I contribute to ktx?</span><svg class="w-5 h-5 text-night-500 shrink-0 transition-transform duration-300 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></button><div class="overflow-hidden transition-all duration-300" style="max-height:0px;opacity:0"><p data-speakable="true" class="text-[14px] text-night-300 leading-relaxed pb-5"><span><strong>ktx</strong> is open source. Issues, pull requests, and discussions are welcome on the GitHub repository.</span></p></div></div></div></div></div></section><section id="cta" class="relative overflow-hidden bg-[#1B3139] py-14 sm:py-16 lg:py-24"><div class="absolute inset-0 pointer-events-none" style="background:radial-gradient(ellipse at center,rgba(27,49,57,.3) 0%,transparent 70%)"></div><div class="relative mx-auto max-w-[680px] px-4 text-center sm:px-6"><div class="rv "><div class="text-center mb-8"><p class="text-[11px] font-semibold uppercase tracking-[.08em] text-white/50 mb-3">Get Started</p><h2 class="font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-white mb-4">Give your data agents the context layer <br class="hidden sm:block"/>they deserve.</h2><p class="text-[16px] sm:text-[17px] leading-relaxed text-white/65 mx-auto max-w-[38rem]">Auto-built. Governed by your team. Ready for any agent.</p></div><div class="mb-4 flex flex-col items-stretch justify-center gap-3 sm:flex-row sm:flex-wrap sm:items-center"><a href="/book-demo" data-track-cta="book_demo" data-track-location="cta_section" class="group block w-full rounded-lg bg-white px-8 py-4 text-center text-[16px] font-semibold text-[#1B3139] shadow-md transition-[background-color,box-shadow,transform] hover:bg-white/90 hover:shadow-lg sm:w-auto 
11sm:px-10">Book a Demo<span class="inline-block ml-1.5 transition-transform group-hover:translate-x-0.5">→</span></a><a href="/get-started" data-track-cta="try_free" data-track-location="cta_section" class="block w-full rounded-lg border border-white/20 px-8 py-4 text-center text-[16px] font-semibold text-white/80 transition-[background-color,box-shadow,transform] hover:border-white/40 hover:bg-white/5 sm:w-auto sm:px-10">Try Free</a></div><div class="flex flex-col items-center justify-center gap-3 text-[12px] text-white/50 sm:flex-row sm:flex-wrap sm:gap-6"><div class="flex items-center gap-1.5"><svg class="w-4 h-4 text-emerald-600" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path></svg>SOC 2 Compliant</div><div class="flex items-center gap-1.5"><svg class="w-4 h-4 text-emerald-600" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg>256-bit Encryption</div><div class="flex items-center gap-1.5"><svg class="w-4 h-4 text-emerald-600" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path></svg>HIPAA</div></div></div></div></section><footer class="bg-[#1B3139] border-t border-white/10 py-12 sm:py-14"><div class="max-w-[1200px] mx-auto px-4 sm:px-6"><div class="mb-10 grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-[1fr_auto_auto_auto_auto] md:gap-16"><div><a class="block mb-3" href="/"><img alt="Kaelio - AI data platform" loading="lazy" width="100" height="28" decoding="async" data-nimg="1" class="h-5 w-auto brightness-0 invert opacity-90" style="color:transparent" srcSet="/_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=128&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 1x, /_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD 2x" src="/_next/image?url=%2Fbrand%2Fkaelio-logo.png&amp;w=256&amp;q=75&amp;dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD"/></a><p class="text-[13px] text-white/50 mb-4"><span class="block">The open-source context layer</span><span class="block">for reliable data agents.</span></p><div class="flex items-center gap-3"><a href="https://x.com/KaelioAI" target="_blank" rel="noopener noreferrer" data-track-footer="social_x" class="text-white/40 hover:text-white/80 transition-colors" aria-label="Follow Kaelio on X"><svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></a><a href="https://www.linkedin.com/company/kaelio-ai/" target="_blank" rel="noopener noreferrer" data-track-footer="social_linkedin" class="text-white/40 hover:text-white/80 transition-colors" aria-label="Follow Kaelio on LinkedIn"><svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg></a><a href="https://github.com/Kaelio/ktx" target="_blank" rel="noopener noreferrer" data-track-footer="social_github" class="text-white/40 hover:text-white/80 transition-colors" aria-label="ktx on GitHub"><svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.111.82-.261.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></a></div></div><div><h4 class="text-[13px] font-semibold text-white mb-4">Products</h4><div class="space-y-2"><a data-track-footer="ktx" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/">ktx</a><a data-track-footer="ktx_cloud" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/products/ktx-cloud">ktx Cloud</a>
11<a data-track-footer="data_agent" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/products/data-agents">Data Agent</a><a data-track-footer="services" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/services">Services</a><a data-track-footer="pricing" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/pricing">Pricing</a></div></div><div><h4 class="text-[13px] font-semibold text-white mb-4">Company</h4><div class="space-y-2"><a data-track-footer="about" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/about">About</a><a data-track-footer="blog" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/blog">Blog</a><a href="https://docs.kaelio.com" target="_blank" rel="noopener noreferrer" data-track-footer="documentation" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors">Documentation</a></div></div><div><h4 class="text-[13px] font-semibold text-white mb-4">Blog</h4><div class="space-y-2"><a data-track-footer="blog_context_layer" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/blog/what-is-a-context-layer-foundation-ai-data-agents-need">What Is a Context Layer?</a><a data-track-footer="blog_context_vs_semantic" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/blog/context-layer-vs-semantic-layer-why-you-need-both-for-ai">Context Layer vs. Semantic Layer</a><a data-track-footer="blog_semantic_hallucinations" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/blog/why-semantic-layers-alone-wont-stop-ai-hallucinations">Why Semantic Layers Won&#x27;t Stop Hallucinations</a><a data-track-footer="blog_build_context_layer" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/blog/how-to-build-a-context-layer-in-minutes-not-months">Build a Context Layer in Minutes</a></div></div><div><h4 class="text-[13px] font-semibold text-white mb-4">Legal</h4><div class="space-y-2"><a data-track-footer="privacy" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/privacy">Privacy</a><a data-track-footer="terms" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/terms">Terms</a><a data-track-footer="cookies" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors" href="/cookies">Cookies</a><a href="https://compliance.kaelio.com/overview" target="_blank" rel="noopener noreferrer" data-track-footer="security" class="block text-[13px] text-white/50 hover:text-white/80 transition-colors">Security</a></div></div></div><div class="flex flex-col gap-2 border-t border-white/10 pt-8 text-[13px] text-white/40 sm:flex-row sm:items-center sm:justify-between"><p>© 2026 Kaelio, Inc. All rights reserved.</p><span class="text-white/40">HIPAA · SOC 2 Compliant</span></div></div></footer></div><!--$--><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$-->
11<script src="/_next/static/chunks/02twwa6.2bk0m.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD" id="_R_" async=""></script>
11<script>(self.__next_f=self.__next_f||[]).push([0])</script>
11<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[19191,[\"/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n3:I[1708,[\"/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n4:I[63709,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0~v76_1j1u71m.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0m89tw9k~n8va.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n5:I[45678,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n6:I[48847,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"\"]\n7:I[83754,[\"/_
11next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"Image\"]\n16:I[99879,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\",1]\n:HL[\"/_next/static/chunks/1515cmvlx-kna.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"style\"]\n:HL[\"/_next/static/chunks/052~gzj6ktdua.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"style\"]\n:HL[\"/_next/static/media/1b99372b3eaef0c8-s.p.0gx2haw2tmll8.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/a85fe84266768609-s.p.05b418i5bs~lg.woff2?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
11<script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1515cmvlx-kna.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/052~gzj6ktdua.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"scroll-smooth outfit_cbfa4884-module__hWmOPq__variable inter_fe8b9d92-module__LINzvG__variable geist_mono_8d43a2aa-module__8Li5zG__variable caveat_330870cd-module__KowJeq__variable\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@graph\\\":[{\\\"@type\\\":\\\"WebSite\\\",\\\"@id\\\":\\\"https://www.kaelio.com/#website\\\",\\\"name\\\":\\\"Kaelio\\\",\\\"url\\\":\\\"https://www.kaelio.com\\\",\\\"publisher\\\":{\\\"@id\\\":\\\"https://www.kaelio.com/#organization\\\"},\\\"speakable\\\":{\\\"@type\\\":\\\"SpeakableSpecification\\\",\\\"cssSelector\\\":[\\\"h1\\\",\\\"h2\\\",\\\"[data-speakable]\\\"]}},{\\\"@type\\\":\\\"Organization\\\",\\\"@id\\\":\\\"https://www.kaelio.com/#organization\\\",\\\"name\\\":\\\"Kaelio\\\",\\\"url\\\":\\\"https://www.kaelio.com\\\",\\\"logo\\\":\\\"https://www.kaelio.com/brand/kaelio-logo.png\\\",\\\"description\\\":\\\"Kaelio auto-builds a governed context layer from your data stack so AI data agents deliver trusted, sourced answers to every team.\\\",\\\"contactPoint\\\":{\\\"@type\\\":\\\"ContactPoint\\\",\\\"email\\\":\\\"[email protected]\\\",\\\"contactType\\\":\\\"customer service\\\"},\\\"sameAs\\\":[\\\"https://x.com/KaelioAI\\\",\\\"https://www.linkedin.com/company/kaelio-ai/\\\",\\\"https://www.ycombinator.com/companies/kaelio\\\",\\\"https://docs.kaelio.com\\\"]}]}\"}}]}],[\"$\",\"body\",null,{\"className\":\"bg-cream text-ink-700 font-sans antialiased\",\"children\":[[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"flex flex-col min-h-screen\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{}],[\"$\",\"section\",null,{\"className\":\"flex-1 flex items-center justify-center pt-28 pb-20 lg:pt-36 lg:pb-28\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-[480px] mx-auto px-6 text-center\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold tracking-[.08em] uppercase text-ink-400 mb-3\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"font-display text-[clamp(2rem,4.5vw,3rem)] text-ink-950 tracking-tight mb-4\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"text-[15px] text-ink-600 leading-relaxed mb-8\",\"children\":\"The page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"$L6\",null,{\"href\":\"/\",\"className\":\"inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-ink-950 text-white text-[14px] font-medium hover:bg-ink-800 transition-colors\",\"children\":\"Back to home\"}]]}]}],[\"$\",\"footer\",null,{\"className\":\"bg-[#1B3139] border-t border-white/10 py-12 sm:py-14\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-[1200px] mx-auto px-4 sm:px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-10 grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-[1fr_auto_auto_auto_auto] md:gap-16\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"className\":\"block mb-3\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/brand/kaelio-logo.png\",\"alt\":\"Kaelio - AI data platform\",\"width\":100,\"height\"
11:28,\"className\":\"h-5 w-auto brightness-0 invert opacity-90\"}]}],[\"$\",\"p\",null,{\"className\":\"text-[13px] text-white/50 mb-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"The open-source context layer\"}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"for reliable data agents.\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://x.com/KaelioAI\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"social_x\",\"className\":\"text-white/40 hover:text-white/80 transition-colors\",\"aria-label\":\"Follow Kaelio on X\",\"children\":\"$L8\"}],\"$L9\",\"$La\"]}]]}],\"$Lb\",\"$Lc\",\"$Ld\",\"$Le\"]}],\"$Lf\"]}]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],\"$L10\",\"$L11\",\"$L12\",\"$L13\"]}]]}]]}],{\"children\":[\"$L14\",{},null,false,null]},null,false,null],\"$L15\",false]],\"m\":\"$undefined\",\"G\":[\"$16\",[\"$L17\",\"$L18\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script>
11<script>self.__next_f.push([1,"19:\"$Sreact.suspense\"\n1a:I[86402,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n1b:I[28237,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"\"]\n2e:I[46468,[\"/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"ViewportBoundary\"]\n30:I[46468,[\"/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"MetadataBoundary\"]\n8:[\"$\",\"svg\",null,{\"className\":\"w-5 h-5\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"}]}]\n9:[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/kaelio-ai/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"social_linkedin\",\"className\":\"text-white/40 hover:text-white/80 transition-colors\",\"aria-label\":\"Follow Kaelio on LinkedIn\",\"children\":[\"$\",\"svg\",null,{\"className\":\"w-5 h-5\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"}]}]}]\na:[\"$\",\"a\",null,{\"href\":\"https://github.com/Kaelio/ktx\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"social_github\",\"className\":\"text-white/40 hover:text-white/80 transition-colors\",\"aria-label\":\"ktx on GitHub\",\"children\":[\"$\",\"svg\",null,{\"className\":\"w-5 h-5\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.111.82-.261.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"}]}]}]\nb:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Products\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"data-track-footer\":\"ktx\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"ktx\"}],[\"$\",\"$L6\",null,{\"href\":\"/products/ktx-cloud\",\"data-track-footer\":\"ktx_cloud\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"ktx Cloud\"}],[\"$\",\"$L6\",null,{\"href\":\"/products/data-agents\",\"data-track-footer\":\"data_agent\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Data Agent\"}],[\"$\",\"$L6\",null,{\"href\":\"/services\",\"data-track-footer\":\"services\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Services\"}],[\"$\",\"$L6\",null,{\"href\":\"/pricing\",\"data-track-footer\":\"pricing\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Pricing\"}]]}]]}]\nc:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Company\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$"])</script>
11<script>self.__next_f.push([1,"\",\"$L6\",null,{\"href\":\"/about\",\"data-track-footer\":\"about\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"About\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog\",\"data-track-footer\":\"blog\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Blog\"}],[\"$\",\"a\",null,{\"href\":\"https://docs.kaelio.com\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"documentation\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Documentation\"}]]}]]}]\nd:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Blog\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/blog/what-is-a-context-layer-foundation-ai-data-agents-need\",\"data-track-footer\":\"blog_context_layer\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"What Is a Context Layer?\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog/context-layer-vs-semantic-layer-why-you-need-both-for-ai\",\"data-track-footer\":\"blog_context_vs_semantic\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Context Layer vs. Semantic Layer\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog/why-semantic-layers-alone-wont-stop-ai-hallucinations\",\"data-track-footer\":\"blog_semantic_hallucinations\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Why Semantic Layers Won't Stop Hallucinations\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog/how-to-build-a-context-layer-in-minutes-not-months\",\"data-track-footer\":\"blog_build_context_layer\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Build a Context Layer in Minutes\"}]]}]]}]\ne:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Legal\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/privacy\",\"data-track-footer\":\"privacy\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Privacy\"}],[\"$\",\"$L6\",null,{\"href\":\"/terms\",\"data-track-footer\":\"terms\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Terms\"}],[\"$\",\"$L6\",null,{\"href\":\"/cookies\",\"data-track-footer\":\"cookies\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Cookies\"}],[\"$\",\"a\",null,{\"href\":\"https://compliance.kaelio.com/overview\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"security\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Security\"}]]}]]}]\nf:[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 border-t border-white/10 pt-8 text-[13px] text-white/40 sm:flex-row sm:items-center sm:justify-between\",\"children\":[[\"$\",\"p\",null,{\"children\":\"© 2026 Kaelio, Inc. All rights reserved.\"}],[\"$\",\"span\",null,{\"className\":\"text-white/40\",\"children\":\"HIPAA · SOC 2 Compliant\"}]]}]\n10:[\"$\",\"$19\",null,{\"fallback\":null,\"children\":[\"$\",\"$L1a\",null,{}]}]\n11:[\"$\",\"$L1b\",null,{\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-TVGZ75R2ZJ\",\"strategy\":\"afterInteractive\"}]\n12:[\"$\",\"$L1b\",null,{\"id\":\"google-analytics\",\"strategy\":\"afterInteractive\",\"children\":\"\\n    window.dataLayer = window.dataLayer || [];\\n    function gtag(){dataLayer.push(arguments);}\\n    gtag('js', new Date());\\n    gtag('config', 'G-TVGZ75R2ZJ', {\\n      send_page_view: false,\\n      cookie_flags: 'SameSite=None;Secure',\\n      allow_google_signals: true,\\n      allow_ad_personalization_signals: true\\n    });\\n  \"}]\n13:[\"$\",\"$L1b\",null,{\"id\":\"relixir-script-loader\",\"src\":\"https://embed.relixir.ai/relixir.js\",\"data-org-id\":\"181b0d2a-f5c8-4b99-9ee1-28bca245b1e9\",\"strategy\":\"lazyOnload\"}]\n1c:T419,{\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplication\",\"@id\":\"https://www.kaelio.com/#softw
11are\",\"name\":\"ktx\",\"url\":\"https://www.kaelio.com\",\"description\":\"ktx teaches agents how to query your warehouse ac"])</script>
11<script>self.__next_f.push([1,"curately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally.\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"macOS, Linux, Windows\",\"featureList\":[\"Self-improving wiki from your docs\",\"Maps your data stack and detects joinable columns\",\"Semantic layer with auto join resolution\",\"Context written as YAML and Markdown in git\",\"MCP server and CLI surface\",\"Works with Claude Code, Claude Desktop, Codex, Cursor, OpenCode, and custom agents\",\"Bring your own LLM keys\",\"Apache 2.0 licensed\"],\"offers\":[{\"@type\":\"Offer\",\"name\":\"ktx (open source)\",\"price\":\"0\",\"priceCurrency\":\"USD\",\"availability\":\"https://schema.org/InStock\",\"url\":\"https://www.kaelio.com\"}],\"publisher\":{\"@id\":\"https://www.kaelio.com/#organization\"}}1d:T1751,"])</script>
11<script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"@id\":\"https://www.kaelio.com/#faq\",\"url\":\"https://www.kaelio.com/#faq\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":\"https://www.kaelio.com\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is ktx?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"ktx is an open-source context layer for data agents that makes them much more accurate at querying data warehouses. It gives agents the business context, approved metric definitions, joinable columns, warehouse metadata, and query history they do not get from direct warehouse access. It also includes a query engine, so agents can query through ktx instead of writing SQL from scratch.\"}},{\"@type\":\"Question\",\"name\":\"Is ktx free?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. ktx is open source under the Apache 2.0 license. There are no usage limits. You run it yourself with your own LLM API keys.\"}},{\"@type\":\"Question\",\"name\":\"How do I install and set up ktx?\",\"acceptedA
11nswer\":{\"@type\":\"Answer\",\"text\":\"Run npm install -g @kaelio/ktx, then run ktx setup from your project directory. You can also ask Claude Code, Codex, Cursor, or another coding agent to install and configure ktx for you by giving it the prompt from the ktx quickstart. Setup creates a ktx project, connects your warehouse and context sources, builds context, and can install agent integrations. ktx requires Node.js 22 or newer.\"}},{\"@type\":\"Question\",\"name\":\"What does ktx do that raw MCP access does not?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A direct warehouse MCP connector usually gives an agent access to tables, columns, and SQL execution. ktx gives the agent a query engine plus reviewable metric definitions, a mapped join graph that resolves chasm and fan traps, a wiki of business context, and the source evidence behind every definition.\"}},{\"@type\":\"Question\",\"name\":\"How does ktx make agent-generated SQL more reliable?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"ktx gives agents approved context before they write or run SQL. Agents can search the wiki, find semantic-layer entities, compile governed metric queries, and run read-only SQL through configured connections. This reduces repeated schema exploration, incorrect joins, and invented metric logic.\"}},{\"@type\":\"Question\",\"name\":\"Does ktx send my data anywhere?\",\"acceptedA
11nswer\":{\"@type\":\"Answer\",\"text\":\"ktx runs locally. Your warehouse data stays in your warehouse, and local state and secrets stay in the git-ignored .ktx directory. Your LLM provider sees whatever context or query content your agent sends to it, the same as any other agent connected to your data.\"}},{\"@type\":\"Question\",\"name\":\"Where does ktx store context?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"ktx stores shareable context in plain files: ktx.yaml, semantic-layer YAML, and Markdown wiki pages. Those files can be reviewed in git. Local runtime state, credentials, caches, and secrets live under .ktx and should stay out of git.\"}},{\"@type\":\"Question\",\"name\":\"How is ktx different from semantic layers like Cube, Malloy, or dbt MetricFlow?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"ktx includes its own semantic layer, but it is built to be flexible and agent-native: agents can search, read, patch, and validate context through files, CLI, and MCP. Compared with standalone semantic-layer tools, ktx adds business context, source evidence, warehouse metadata, query history, and a reviewable wiki around the semantic model.\"}},{\"@type\":\"Question\",\"name\":\"Does ktx replace dbt, Looker, Metabase, or my BI tool?\",\"acceptedA
11nswer\":{\"@type\":\"Answer\",\"text\":\"No. ktx complements the tools you already use. It can ingest dbt, MetricFlow, LookML, Looker, Metabase, Notion, warehouse metadata, and query history, then expose that context to agents. Your existing transformations, dashboards, and BI workflows stay in place.\"}},{\"@type\":\"Question\",\"name\":\"Does ktx replace dbt?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. ktx consumes dbt instead of replacing it. If you use dbt, ktx can ingest your models, metric definitions, and documentation into its context layer so agents can use that governed logic directly. If you don't use dbt, ktx can still build context from your warehouse schemas, BI tools, documentation, and query history.\"}},{\"@type\":\"Question\",\"name\":\"What is the difference between ktx and ktx Cloud?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"ktx is the open-source engine. You run it yourself, locally, with your own LLM keys. ktx Cloud is the hosted version. Same engine, plus hosted runtime, multi-user workspace, review and approval workflows, SSO, continuous ingest, observability, and included LLM credits.\"}},{\"@type\":\"Question\",\"name\":\"Which agent clients does ktx work with?\",\"acceptedA
11nswer\":{\"@type\":\"Answer\",\"text\":\"ktx works with Claude Code, Claude Desktop, Codex, Cursor, OpenCode, generic .agents clients, and any custom MCP-compatible agent your team builds. ktx exposes an MCP server and a CLI, so any agent that speaks MCP can use it.\"}},{\"@type\":\"Question\",\"name\":\"Which warehouses and BI tools does ktx work with?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Warehouses: PostgreSQL, Snowflake, BigQuery, ClickHouse, MySQL, SQL Server, SQLite, DuckDB, Amazon Athena, MongoDB, and many more. Modeling and BI: dbt, MetricFlow, LookML, Looker, Metabase, Sigma, and many more. Documentation: Notion, Google Drive, and many more.\"}},{\"@type\":\"Question\",\"name\":\"Can my team review and change the context ktx creates?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. ktx is built around reviewable context files. Agents can propose updates to semantic-layer YAML or wiki Markdown, but your team can inspect, validate, and approve those changes through normal code review before they become trusted context.\"}},{\"@type\":\"Question\",\"name\":\"How do I contribute to ktx?\",\"acceptedA
11nswer\":{\"@type\":\"Answer\",\"text\":\"ktx is open source. Issues, pull requests, and discussions are welcome on the GitHub repository.\"}}]}"])</script>
11<script>self.__next_f.push([1,"14:[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"bg-night-950 text-night-200 min-h-screen\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1c\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1d\"}}],\"$L1e\",\"$L1f\",\"$L20\",\"$L21\",\"$L22\",\"$L23\",\"$L24\",\"$L25\",\"$L26\",\"$L27\",\"$L28\",\"$L29\"]}],[\"$L2a\",\"$L2b\",\"$L2c\"],\"$L2d\"]}]\n15:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L2e\",null,{\"children\":\"$L2f\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L30\",null,{\"children\":[\"$\",\"$19\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L31\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n17:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1515cmvlx-kna.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n18:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/052~gzj6ktdua.css?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script>
11<script>self.__next_f.push([1,"32:I[14776,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n33:I[81249,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n3f:I[93529,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n4a:I[833,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n4b:I[23614,[\"/_next/static/chunks/0v.u41a810l4q.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"default\"]\n52:I[46468,[\"/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"OutletBoundary\"]\n1e:[\"$\",\"$L32\",null,{\"page\":\"ktx_home\"}]\n1f:[\"$\",\"$L5\",null,{}]\n20:[\"$\",\"$L33\",null,{}]\n"])</script>
11<script>self.__next_f.push([1,"21:[\"$\",\"section\",null,{\"id\":\"logo-bar\",\"className\":\"overflow-hidden border-t border-stone-200 bg-[#FAF9F6] py-10 sm:py-12\",\"children\":[[\"$\",\"div\",null,{\"className\":\"max-w-[1200px] mx-auto px-4 sm:px-6\",\"children\":[\"$\",\"p\",null,{\"className\":\"mb-6 text-center text-[11px] font-semibold uppercase tracking-wider text-night-500 sm:mb-8 sm:text-[12px]\",\"children\":\"Trusted by data teams at scaling companies\"}]}],[\"$\",\"div\",null,{\"className\":\"relative\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute left-0 top-0 bottom-0 z-10 w-14 bg-gradient-to-r from-[#FAF9F6] to-transparent sm:w-24\"}],[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute right-0 top-0 bottom-0 z-10 w-14 bg-gradient-to-l from-[#FAF9F6] to-transparent sm:w-24\"}],[\"$\",\"div\",null,{\"className\":\"flex w-max logo-marquee\",\"children\":[[[\"$\",\"div\",\"a-Mercy\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/mercy.svg\",\"alt\":\"Mercy\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.25)\"},\"className\":\"h-8 md:h-9 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Gladia\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/gladia.svg\",\"alt\":\"Gladia\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Poppins\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/poppins.png\",\"alt\":\"Poppins\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-BeSimple\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/besimple.png\",\"alt\":\"BeSimple\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.2)\"},\"className\":\"h-12 md:h-14 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Alt\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/alt.png\",\"alt\":\"Alt\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Handshake\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/handshake.png\",\"alt\":\"Handshake\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Raft\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/raft.png\",\"alt\":\"Raft\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.35)\"},\"className\":\"h-11 md:h-12 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Vapi\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/vapi.svg\",\"alt\":\"Vapi\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Junction\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/junction.svg\",\"alt\":\"Junction\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-3 md:h-4 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"a-Maximus\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/maximus.svg\",\"alt\":\"Maximus\",\"width\":120,\"height\"
11:40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-2.5 md:h-3 translate-y-px w-auto max-w-[120px] object-contain\"}]}]],[[\"$\",\"div\",\"b-Mercy\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/mercy.svg\",\"alt\":\"Mercy\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.25)\"},\"className\":\"h-8 md:h-9 w-auto max-w-[120px] object-contain\"}]}],\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\"],\"$L3d\",\"$L3e\"]}]]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"22:[\"$\",\"section\",null,{\"id\":\"problem-promise\",\"className\":\"overflow-hidden bg-white py-14 sm:py-16 lg:py-20\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-[1200px] px-4 sm:px-6\",\"children\":[[\"$\",\"$L3f\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"text-center\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3\",\"children\":\"Why data agents fail\"}],[\"$\",\"h2\",null,{\"className\":\"font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50 mb-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"Raw data access\"}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"is not enough.\"}]]}],[\"$\",\"p\",null,{\"className\":\"text-[16px] sm:text-[17px] leading-relaxed text-night-400 mx-auto max-w-[38rem]\",\"children\":[[\"$\",\"strong\",null,{\"children\":\"ktx\"}],\" gives agents the business context, metric definitions, and approved logic they need to answer consistently.\"]}]]}]}],[\"$\",\"$L3f\",null,{\"className\":\"min-w-0\",\"style\":{\"transitionDelay\":\"120ms\"},\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto mt-10 max-w-[760px] sm:mt-12 lg:mt-14\",\"children\":[[\"$\",\"div\",null,{\"className\":\"hidden sm:block\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"svg\",null,{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 760 48\",\"preserveAspectRatio\":\"none\",\"className\":\"block h-12 w-full\",\"children\":[[\"$\",\"circle\",null,{\"cx\":\"380\",\"cy\":\"5\",\"r\":\"3\",\"className\":\"fill-stone-400\"}],[\"$\",\"path\",null,{\"d\":\"M 380 9 C 380 30, 186 22, 186 48\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1\",\"className\":\"text-stone-300\"}],[\"$\",\"path\",null,{\"d\":\"M 380 9 C 380 30, 574 22, 574 48\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1\",\"className\":\"text-stone-300\"}]]}]}],[\"$\",\"div\",null,{\"className\":\"grid gap-4 sm:grid-cols-2\",\"children\":[[\"$\",\"div\",\"Without ktx\",{\"className\":\"relative flex h-full min-w-0 flex-col overflow-hidden rounded-lg border bg-white p-5 sm:p-6 border-rose-200/70 shadow-[0_18px_45px_-12px_rgba(190,18,60,0.16)]\",\"children\":[[\"$\",\"div\",null,{\"aria-hidden\":\"true\",\"className\":\"pointer-events-none absolute -right-20 -top-20 h-44 w-44 rounded-full bg-rose-200/45 blur-3xl\"}],[\"$\",\"span\",null,{\"className\":\"relative mb-6 w-fit rounded-full border px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[.08em] border-rose-200 bg-rose-50 text-rose-700\",\"children\":\"Without ktx\"}],[\"$\",\"div\",null,{\"className\":\"relative\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80\",\"children\":\"agent receives question\"}],[\"$\",\"div\",null,{\"className\":\"flex justify-center\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"div\",null,{\"className\":\"my-1.5 h-5 w-px bg-rose-300/70\"}]}],[\"$\",\"div\",null,{\"className\":\"flex min-h-[64px] items-center gap-3 rounded-md border px-3.5 py-3 font-mono text-[13px] font-semibold leading-[1.3] border-rose-200/70 bg-rose-50/60 text-rose-900\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full ring-1 bg-rose-100 ring-rose-200/80\",\"children\":[\"$\",\"svg\",null,{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 12 12\",\"className\":\"h-3 w-3 shrink-0 text-rose-500 h-3.5 w-3.5\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2.2,\"strokeLinecap\":\"round\",\"children\":[\"$\",\"path\",null,{\"d\":\"M3 3l6 6M9 3l-6 6\"}]}]}],[\"$\",\"span\",null,{\"children\":\"agent guesses from table names\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex justify-center\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"div\",null,{\"className\":\"my-1.5 h-5 w-px bg-rose-300/70\"}]}],[\"$\",\"p\",null,{\"className\":\"text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80\",\"children\":\"warehouse returns rows\"}]]}],[\"$\",\"div\",null,{\"className\":\"relative mt-auto pt-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"h-px w-full bg-rose-200/70\",\"aria-hidden\":\"true\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-[10px] font-semibold uppercase tracking-[.14em] text-rose-600\",\"children\":\"Result\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 font-display text-[24px] font-semibold leading-[1.08] tracking-tight sm:text-[26px] text-rose-900\",\"children\":\"$L40\"}],\"$L41\"]}]]}],\"$L42\"]}]]}]}]]}]}]\n"])</script>
11<script>self.__next_f.push([1,"23:[\"$\",\"section\",null,{\"id\":\"features\",\"className\":\"overflow-hidden bg-[#F9F7F4] py-16 sm:py-20 lg:py-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-[1200px] min-w-0 px-4 sm:px-6\",\"children\":[[\"$\",\"$L3f\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"text-center\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3\",\"children\":\"Governed agent context\"}],[\"$\",\"h2\",null,{\"className\":\"font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50 mb-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"The missing context layer\"}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"for data agents.\"}]]}],[\"$\",\"p\",null,{\"className\":\"text-[16px] sm:text-[17px] leading-relaxed text-night-400 mx-auto max-w-[54rem]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":[[\"$\",\"strong\",null,{\"children\":\"ktx\"}],\" gives data agents business context and approved metric definitions,\"]}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"plus the relationships they need to answer accurately.\"}]]}]]}]}],[\"$\",\"div\",null,{\"className\":\"mt-9 grid items-stretch gap-4 sm:grid-cols-2 lg:grid-cols-3\",\"children\":[[\"$\",\"$L3f\",\"Business knowledge\",{\"className\":\"h-full min-w-0\",\"style\":{\"transitionDelay\":\"0ms\"},\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full min-h-[268px] min-w-0 flex-col overflow-hidden rounded-lg border border-stone-200 bg-white p-5 shadow-[0_10px_30px_rgba(17,24,39,0.03)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-4 flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-night-50 font-mono text-[12px] font-semibold text-white\",\"children\":\"01\"}],[\"$\",\"h3\",null,{\"className\":\"min-h-[34px] font-display text-[20px] font-semibold leading-tight tracking-tight text-night-50\",\"children\":\"Business knowledge\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 min-h-[58px] text-[14px] leading-relaxed text-night-400\",\"children\":\"Agents see definitions, caveats, policies, and team language before they answer.\"}],[\"$\",\"div\",null,{\"className\":\"pt-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid h-[86px] w-full min-w-0 grid-cols-2 content-start justify-items-center gap-2.5 rounded-md border border-stone-200 bg-stone-50/70 p-2.5\",\"children\":[[\"$\",\"span\",\"definitions\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"definitions\"}],[\"$\",\"span\",\"policies\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"policies\"}],[\"$\",\"span\",\"examples\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"examples\"}],[\"$\",\"span\",\"owners\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"owners\"}]]}]}]]}]}],[\"$\",\"$L3f\",\"Agent query engine\",{\"className\":\"h-full min-w-0\",\"style\":{\"transitionDelay\":\"70ms\"},\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full min-h-[268px] min-w-0 flex-col overflow-hidden rounded-lg border border-stone-200 bg-white p-5 shadow-[0_10px_30px_rgba(17,24,39,0.03)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-4 flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-night-50 font-mono text-[12px] font-semibold text-white\",\"children\":\"02\"}],[\"$\",\"h3\",null,{\"className\":\"min-h-[34px] font-display text-[20px] font-semibold leading-tight tracking-tight text-night-50\",\"children\":\"Agent query engine\"}],\"$L43\",\"$L44\"]}
11]}],\"$L45\"]}]]}]}]\n"])</script>
11<script>self.__next_f.push([1,"24:[\"$\",\"section\",null,{\"id\":\"how-it-works\",\"className\":\"overflow-hidden bg-[#0F1F25] py-16 sm:py-20 lg:py-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto grid w-full max-w-[1200px] min-w-0 items-center gap-10 px-4 sm:px-6 lg:grid-cols-[0.82fr_1.18fr] lg:gap-14\",\"children\":[[\"$\",\"$L3f\",null,{\"className\":\"min-w-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-left\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.08em] text-white/50 mb-3\",\"children\":\"How ktx works\"}],[\"$\",\"h2\",null,{\"className\":\"font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-white mb-4\",\"children\":[[\"$\",\"strong\",null,{\"children\":\"ktx\"}],\" reconciles your stack into context agents can query.\"]}],[\"$\",\"p\",null,{\"className\":\"text-[16px] sm:text-[17px] leading-relaxed text-white/65 max-w-[34rem]\",\"children\":[[\"$\",\"strong\",null,{\"children\":\"ktx\"}],\" turns source evidence into reviewable context files, then serves them to agents through CLI and MCP.\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-8 space-y-3\",\"children\":[[\"$\",\"div\",\"Ingest and reconcile source evidence\",{\"className\":\"rounded-lg border border-white/10 bg-white/[0.06] px-4 py-4 shadow-[0_18px_50px_-32px_rgba(0,0,0,0.55)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center gap-2.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-6 w-6 items-center justify-center rounded-full bg-cyan-200 font-mono text-[11px] font-semibold text-night-50\",\"children\":1}],[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.1em] text-white/45\",\"children\":\"Build loop\"}]]}],[\"$\",\"h3\",null,{\"className\":\"font-display text-[18px] font-semibold leading-tight text-white\",\"children\":\"Ingest and reconcile source evidence\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[13px] leading-relaxed text-white/60\",\"children\":[\"\",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\" reads your warehouse, BI layer, modeling code, query history, and docs, then turns new evidence into proposed context updates.\"]}]]}],[\"$\",\"div\",\"Serve agents at runtime\",{\"className\":\"rounded-lg border border-white/10 bg-white/[0.06] px-4 py-4 shadow-[0_18px_50px_-32px_rgba(0,0,0,0.55)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center gap-2.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-6 w-6 items-center justify-center rounded-full bg-cyan-200 font-mono text-[11px] font-semibold text-night-50\",\"children\":2}],[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.1em] text-white/45\",\"children\":\"Runtime loop\"}]]}],[\"$\",\"h3\",null,{\"className\":\"font-display text-[18px] font-semibold leading-tight text-white\",\"children\":\"Serve agents at runtime\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[13px] leading-relaxed text-white/60\",\"children\":\"Agents use the CLI or MCP server to search the wiki, find approved semantic entities, compile queries, and run read-only SQL.\"}]]}],[\"$\",\"div\",\"Keep changes reviewable\",{\"className\":\"rounded-lg border border-white/10 bg-white/[0.06] px-4 py-4 shadow-[0_18px_50px_-32px_rgba(0,0,0,0.55)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center gap-2.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-6 w-6 items-center justify-center rounded-full bg-cyan-200 font-mono text-[11px] font-semibold text-night-50\",\"children\":3}],[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.1em] text-white/45\",\"children\":\"Review loop\"}]]}],[\"$\",\"h3\",null,{\"className\":\"font-display text-[18px] font-semibold leading-tight text-white\",\"children\":\"Keep changes reviewable\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[13px] leading-relaxed text-white/60\",\"children\":\"Every durable update is a YAML or Markdown diff. Your team can inspect it, adjust it, and merge it through git.\"}]]}]]}]]}],[\"$\",\"$L3f\",null,{\"className\":\"min-w-0\",\"style\":{\"transitionDelay\":\"120ms\"},\"children\":\"$L46\"}]]}]}]\n"])</script>
11<script>self.__next_f.push([1,"25:[\"$\",\"section\",null,{\"id\":\"cloud\",\"className\":\"bg-stone-50 py-20 sm:py-24 lg:py-28\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-[1200px] mx-auto px-4 sm:px-6\",\"children\":[[\"$\",\"$L3f\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"text-center\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.08em] text-night-500 mb-3\",\"children\":\"Built for data teams\"}],[\"$\",\"h2\",null,{\"className\":\"font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-night-50 mb-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"Bring ktx to the\"}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"whole company.\"}]]}],[\"$\",\"p\",null,{\"className\":\"text-[16px] sm:text-[17px] leading-relaxed text-night-400 mx-auto max-w-[38rem]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":[\"Scale \",[\"$\",\"strong\",null,{\"children\":\"ktx\"}],\" into a governed company-wide context layer\"]}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"without running the infrastructure yourself.\"}]]}]]}]}],[\"$\",\"$L3f\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"mt-12 grid items-stretch gap-5 sm:grid-cols-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex h-full flex-col rounded-xl border p-7 border-[#1B3139]/10 bg-white shadow-[0_18px_60px_rgba(27,49,57,0.08)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-5 flex items-center gap-2.5\",\"children\":[[\"$\",\"$L7\",null,{\"src\":\"/brand/ktx-mascot.svg\",\"alt\":\"\",\"aria-hidden\":\"true\",\"width\":24,\"height\":24,\"className\":\"h-6 w-6\"}],[\"$\",\"h3\",null,{\"className\":\"font-display text-[18px] font-semibold text-night-50\",\"children\":\"ktx (open source)\"}]]}],[\"$\",\"ul\",null,{\"className\":\"space-y-2.5\",\"children\":[[\"$\",\"li\",\"Open-source ktx engine\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-night-400\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-night-100\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Open-source ktx engine\"]}],[\"$\",\"li\",\"Wiki and semantic layer as files\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-night-400\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-night-100\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Wiki and semantic layer as files\"]}],[\"$\",\"li\",\"MCP and CLI surface\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-night-400\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-night-100\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"MCP and CLI surface\"]}],[\"$\",\"li\",\"Bring your own LLM keys\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-night-400\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-night-100\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Bring your own LLM keys\"]}],[\"$\",\"li\",\"Apache 2.0 license\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-night-400\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-night-100\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Apache 2.0 license\"]}
11],[\"$\",\"li\",\"Run on your own infrastructure\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-night-400\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-night-100\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Run on your own infrastructure\"]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"relative flex h-full flex-col overflow-hidden rounded-xl border p-7 shadow-lg shadow-black/[0.2] border-[#1B3139] bg-[#1B3139] shadow-[0_24px_70px_rgba(27,49,57,0.24)]\",\"children\":[\"$L47\",\"$L48\"]}]]}]}],\"$L49\"]}]}]\n"])</script>
11<script>self.__next_f.push([1,"26:[\"$\",\"$L4a\",null,{}]\n"])</script>
11<script>self.__next_f.push([1,"27:[\"$\",\"$L4b\",null,{\"faqs\":[{\"question\":\"What is ktx?\",\"answer\":\"**ktx** is an open-source context layer for data agents that makes them much more accurate at querying data warehouses. It gives agents the business context, approved metric definitions, joinable columns, warehouse metadata, and query history they do not get from direct warehouse access. It also includes a query engine, so agents can query through **ktx** instead of writing SQL from scratch.\"},{\"question\":\"Is ktx free?\",\"answer\":\"Yes. **ktx** is open source under the Apache 2.0 license. There are no usage limits. You run it yourself with your own LLM API keys.\"},{\"question\":\"How do I install and set up ktx?\",\"answer\":\"Run npm install -g @kaelio/ktx, then run ktx setup from your project directory. You can also ask Claude Code, Codex, Cursor, or another coding agent to install and configure **ktx** for you by giving it the prompt from the ktx quickstart. Setup creates a **ktx** project, connects your warehouse and context sources, builds context, and can install agent integrations. **ktx** requires Node.js 22 or newer.\",\"answerLinks\":[{\"label\":\"ktx quickstart\",\"href\":\"https://docs.kaelio.com/ktx/docs/getting-started/quickstart\"}]},{\"question\":\"What does ktx do that raw MCP access does not?\",\"answer\":\"A direct warehouse MCP connector usually gives an agent access to tables, columns, and SQL execution. **ktx** gives the agent a query engine plus reviewable metric definitions, a mapped join graph that resolves chasm and fan traps, a wiki of business context, and the source evidence behind every definition.\"},{\"question\":\"How does ktx make agent-generated SQL more reliable?\",\"answer\":\"**ktx** gives agents approved context before they write or run SQL. Agents can search the wiki, find semantic-layer entities, compile governed metric queries, and run read-only SQL through configured connections. This reduces repeated schema exploration, incorrect joins, and invented metric logic.\"},{\"question\":\"Does ktx send my data anywhere?\",\"answer\":\"**ktx** runs locally. Your warehouse data stays in your warehouse, and local state and secrets stay in the git-ignored .ktx directory. Your LLM provider sees whatever context or query content your agent sends to it, the same as any other agent connected to your data.\"},{\"question\":\"Where does ktx store context?\",\"answer\":\"**ktx** stores shareable context in plain files: ktx.yaml, semantic-layer YAML, and Markdown wiki pages. Those files can be reviewed in git. Local runtime state, credentials, caches, and secrets live under .ktx and should stay out of git.\"},{\"question\":\"How is ktx different from semantic layers like Cube, Malloy, or dbt MetricFlow?\",\"answer\":\"**ktx** includes its own semantic layer, but it is built to be flexible and agent-native: agents can search, read, patch, and validate context through files, CLI, and MCP. Compared with standalone semantic-layer tools, **ktx** adds business context, source evidence, warehouse metadata, query history, and a reviewable wiki around the semantic model.\"},{\"question\":\"Does ktx replace dbt, Looker, Metabase, or my BI tool?\",\"answer\":\"No. **ktx** complements the tools you already use. It can ingest dbt, MetricFlow, LookML, Looker, Metabase, Notion, warehouse metadata, and query history, then expose that context to agents. Your existing transformations, dashboards, and BI workflows stay in place.\"},{\"question\":\"Does ktx replace dbt?\",\"answer\":\"No. **ktx** consumes dbt instead of replacing it. If you use dbt, **ktx** can ingest your models, metric definitions, and documentation into its context layer so agents can use that governed logic directly. If you don't use dbt, **ktx** can still build context from your warehouse schemas, BI tools, documentation, and query history.\"},{\"question\":\"What is the difference between ktx and ktx Cloud?\",\"answer\":\"**ktx** is the open-source engine. You run it yourself, locally, with your own LLM keys. **ktx Cloud** is the hosted ver
11sion. Same engine, plus hosted runtime, multi-user workspace, review and approval workflows, SSO, continuous ingest, observability, and included LLM credits.\"},{\"question\":\"Which agent clients does ktx work with?\",\"answer\":\"**ktx** works with Claude Code, Claude Desktop, Codex, Cursor, OpenCode, generic .agents clients, and any custom MCP-compatible agent your team builds. **ktx** exposes an MCP server and a CLI, so any agent that speaks MCP can use it.\"},{\"question\":\"Which warehouses and BI tools does ktx work with?\",\"answer\":\"Warehouses: PostgreSQL, Snowflake, BigQuery, ClickHouse, MySQL, SQL Server, SQLite, DuckDB, Amazon Athena, MongoDB, and many more. Modeling and BI: dbt, MetricFlow, LookML, Looker, Metabase, Sigma, and many more. Documentation: Notion, Google Drive, and many more.\"},{\"question\":\"Can my team review and change the context ktx creates?\",\"answer\":\"Yes. **ktx** is built around reviewable context files. Agents can propose updates to semantic-layer YAML or wiki Markdown, but your team can inspect, validate, and approve those changes through normal code review before they become trusted context.\"},{\"question\":\"How do I contribute to ktx?\",\"answer\":\"**ktx** is open source. Issues, pull requests, and discussions are welcome on the GitHub repository.\"}]}]\n"])</script>
11<script>self.__next_f.push([1,"28:[\"$\",\"section\",null,{\"id\":\"cta\",\"className\":\"relative overflow-hidden bg-[#1B3139] py-14 sm:py-16 lg:py-24\",\"children\":[[\"$\",\"div\",null,{\"className\":\"absolute inset-0 pointer-events-none\",\"style\":{\"background\":\"radial-gradient(ellipse at center,rgba(27,49,57,.3) 0%,transparent 70%)\"}}],[\"$\",\"div\",null,{\"className\":\"relative mx-auto max-w-[680px] px-4 text-center sm:px-6\",\"children\":[\"$\",\"$L3f\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"text-center mb-8\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[11px] font-semibold uppercase tracking-[.08em] text-white/50 mb-3\",\"children\":\"Get Started\"}],[\"$\",\"h2\",null,{\"className\":\"font-display text-[clamp(1.875rem,4.5vw,2.75rem)] leading-[1.08] tracking-tight text-balance text-white mb-4\",\"children\":[\"Give your data agents the context layer \",[\"$\",\"br\",null,{\"className\":\"hidden sm:block\"}],\"they deserve.\"]}],[\"$\",\"p\",null,{\"className\":\"text-[16px] sm:text-[17px] leading-relaxed text-white/65 mx-auto max-w-[38rem]\",\"children\":\"Auto-built. Governed by your team. Ready for any agent.\"}]]}],[\"$\",\"div\",null,{\"className\":\"mb-4 flex flex-col items-stretch justify-center gap-3 sm:flex-row sm:flex-wrap sm:items-center\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/book-demo\",\"data-track-cta\":\"book_demo\",\"data-track-location\":\"cta_section\",\"className\":\"group block w-full rounded-lg bg-white px-8 py-4 text-center text-[16px] font-semibold text-[#1B3139] shadow-md transition-[background-color,box-shadow,transform] hover:bg-white/90 hover:shadow-lg sm:w-auto sm:px-10\",\"children\":[\"Book a Demo\",[\"$\",\"span\",null,{\"className\":\"inline-block ml-1.5 transition-transform group-hover:translate-x-0.5\",\"children\":\"→\"}]]}],[\"$\",\"a\",null,{\"href\":\"/get-started\",\"data-track-cta\":\"try_free\",\"data-track-location\":\"cta_section\",\"className\":\"block w-full rounded-lg border border-white/20 px-8 py-4 text-center text-[16px] font-semibold text-white/80 transition-[background-color,box-shadow,transform] hover:border-white/40 hover:bg-white/5 sm:w-auto sm:px-10\",\"children\":\"Try Free\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center justify-center gap-3 text-[12px] text-white/50 sm:flex-row sm:flex-wrap sm:gap-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"w-4 h-4 text-emerald-600\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":2,\"d\":\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"}]}],\"SOC 2 Compliant\"]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"w-4 h-4 text-emerald-600\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":2,\"d\":\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\"}]}],\"256-bit Encryption\"]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"w-4 h-4 text-emerald-600\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":2,\"d\":\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"}]}],\"HIPAA\"]}]]}]]}]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"29:[\"$\",\"footer\",null,{\"className\":\"bg-[#1B3139] border-t border-white/10 py-12 sm:py-14\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-[1200px] mx-auto px-4 sm:px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-10 grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-[1fr_auto_auto_auto_auto] md:gap-16\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"className\":\"block mb-3\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/brand/kaelio-logo.png\",\"alt\":\"Kaelio - AI data platform\",\"width\":100,\"height\":28,\"className\":\"h-5 w-auto brightness-0 invert opacity-90\"}]}],[\"$\",\"p\",null,{\"className\":\"text-[13px] text-white/50 mb-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"The open-source context layer\"}],[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"for reliable data agents.\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://x.com/KaelioAI\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"social_x\",\"className\":\"text-white/40 hover:text-white/80 transition-colors\",\"aria-label\":\"Follow Kaelio on X\",\"children\":[\"$\",\"svg\",null,{\"className\":\"w-5 h-5\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/kaelio-ai/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"social_linkedin\",\"className\":\"text-white/40 hover:text-white/80 transition-colors\",\"aria-label\":\"Follow Kaelio on LinkedIn\",\"children\":[\"$\",\"svg\",null,{\"className\":\"w-5 h-5\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/Kaelio/ktx\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"social_github\",\"className\":\"text-white/40 hover:text-white/80 transition-colors\",\"aria-label\":\"ktx on GitHub\",\"children\":[\"$\",\"svg\",null,{\"className\":\"w-5 h-5\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.111.82-.261.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"}]}]}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Products\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"data-track-footer\":\"ktx\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"ktx\"}],[\"$\",\"$L6\",null,{\"href\":\"/products/ktx-cloud\",\"data-track-footer\":\"ktx_cloud\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"ktx Cloud\"}],[\"$\",\"$L6\",null,{\"href\":\"/products/data-agents\",\"data-track-footer\":\"data_agent\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Data Agent\"}],\"$L4c\",\"$L4d\"]}]]}],\"$L4e\",\"$L4f\",\"$L50\"]}],\"$L51\"]}]}]\n"])</script>
11<script>self.__next_f.push([1,"2a:[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0s29txsooyf-w.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"async\":true,\"nonce\":\"$undefined\"}]\n2b:[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/10rtv4s8duum6.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"async\":true,\"nonce\":\"$undefined\"}]\n2c:[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0q_a6r_3lvyr9.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"async\":true,\"nonce\":\"$undefined\"}]\n2d:[\"$\",\"$L52\",null,{\"children\":[\"$\",\"$19\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@53\"}]}]\n"])</script>
11<script>self.__next_f.push([1,"34:[\"$\",\"div\",\"b-Gladia\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/gladia.svg\",\"alt\":\"Gladia\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 w-auto max-w-[120px] object-contain\"}]}]\n35:[\"$\",\"div\",\"b-Poppins\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/poppins.png\",\"alt\":\"Poppins\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain\"}]}]\n36:[\"$\",\"div\",\"b-BeSimple\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/besimple.png\",\"alt\":\"BeSimple\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.2)\"},\"className\":\"h-12 md:h-14 w-auto max-w-[120px] object-contain\"}]}]\n37:[\"$\",\"div\",\"b-Alt\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/alt.png\",\"alt\":\"Alt\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}]\n38:[\"$\",\"div\",\"b-Handshake\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/handshake.png\",\"alt\":\"Handshake\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}]\n39:[\"$\",\"div\",\"b-Raft\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/raft.png\",\"alt\":\"Raft\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.35)\"},\"className\":\"h-11 md:h-12 w-auto max-w-[120px] object-contain\"}]}]\n3a:[\"$\",\"div\",\"b-Vapi\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/vapi.svg\",\"alt\":\"Vapi\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}]\n3b:[\"$\",\"div\",\"b-Junction\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/junction.svg\",\"alt\":\"Junction\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-3 md:h-4 w-auto max-w-[120px] object-contain\"}]}]\n3c:[\"$\",\"div\",\"b-Maximus\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/maximus.svg\",\"alt\":\"Maximus\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-2.5 md:h-3 translate-y-px w-auto max-w-[120px] object-contain\"}]}]\n"])</script>
11<script>self.__next_f.push([1,"3d:[[\"$\",\"div\",\"c-Mercy\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/mercy.svg\",\"alt\":\"Mercy\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.25)\"},\"className\":\"h-8 md:h-9 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Gladia\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/gladia.svg\",\"alt\":\"Gladia\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Poppins\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/poppins.png\",\"alt\":\"Poppins\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-BeSimple\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/besimple.png\",\"alt\":\"BeSimple\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.2)\"},\"className\":\"h-12 md:h-14 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Alt\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/alt.png\",\"alt\":\"Alt\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Handshake\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/handshake.png\",\"alt\":\"Handshake\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Raft\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/raft.png\",\"alt\":\"Raft\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.35)\"},\"className\":\"h-11 md:h-12 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Vapi\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/vapi.svg\",\"alt\":\"Vapi\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Junction\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/junction.svg\",\"alt\":\"Junction\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-3 md:h-4 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"c-Maximus\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/maximus.svg\",\"alt\":\"Maximus\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-2.5 md:h-3 translate-y-px w-auto max-w-[120px] object-contain\"}]}]]\n"])</script>
11<script>self.__next_f.push([1,"3e:[[\"$\",\"div\",\"d-Mercy\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/mercy.svg\",\"alt\":\"Mercy\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.25)\"},\"className\":\"h-8 md:h-9 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Gladia\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/gladia.svg\",\"alt\":\"Gladia\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Poppins\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/poppins.png\",\"alt\":\"Poppins\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-5 md:h-6 -translate-y-0.5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-BeSimple\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/besimple.png\",\"alt\":\"BeSimple\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.2)\"},\"className\":\"h-12 md:h-14 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Alt\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/alt.png\",\"alt\":\"Alt\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Handshake\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/handshake.png\",\"alt\":\"Handshake\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Raft\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/raft.png\",\"alt\":\"Raft\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.35)\"},\"className\":\"h-11 md:h-12 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Vapi\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/vapi.svg\",\"alt\":\"Vapi\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1)\"},\"className\":\"h-4 md:h-5 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Junction\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/junction.svg\",\"alt\":\"Junction\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-3 md:h-4 w-auto max-w-[120px] object-contain\"}]}],[\"$\",\"div\",\"d-Maximus\",{\"className\":\"flex items-center justify-center shrink-0 px-5 sm:px-8 md:px-12\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/logos/maximus.svg\",\"alt\":\"Maximus\",\"width\":120,\"height\":40,\"style\":{\"opacity\":0.7,\"filter\":\"grayscale(1) brightness(0.4)\"},\"className\":\"h-2.5 md:h-3 translate-y-px w-auto max-w-[120px] object-contain\"}]}]]\n"])</script>
11<script>self.__next_f.push([1,"40:[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"Wrong answer.\"}]\n41:[\"$\",\"p\",null,{\"className\":\"mt-0.5 font-display text-[18px] font-normal leading-[1.2] tracking-tight sm:text-[20px] text-rose-700/70\",\"children\":[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"Burns tokens.\"}]}]\n"])</script>
11<script>self.__next_f.push([1,"42:[\"$\",\"div\",\"With ktx\",{\"className\":\"relative flex h-full min-w-0 flex-col overflow-hidden rounded-lg border bg-white p-5 sm:p-6 border-stone-200 shadow-[0_16px_45px_rgba(32,38,35,0.05)]\",\"children\":[null,[\"$\",\"span\",null,{\"className\":\"relative mb-6 w-fit rounded-full border px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[.08em] border-emerald-200 bg-emerald-50/80 text-emerald-800\",\"children\":\"With ktx\"}],[\"$\",\"div\",null,{\"className\":\"relative\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80\",\"children\":\"agent receives question\"}],[\"$\",\"div\",null,{\"className\":\"flex justify-center\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"div\",null,{\"className\":\"my-1.5 h-5 w-px bg-stone-300\"}]}],[\"$\",\"div\",null,{\"className\":\"flex min-h-[64px] items-center gap-3 rounded-md border px-3.5 py-3 font-mono text-[13px] font-semibold leading-[1.3] border-emerald-200/70 bg-emerald-50/40 text-emerald-900\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"className\":\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full ring-1 bg-emerald-100 ring-emerald-200/80\",\"children\":[\"$\",\"svg\",null,{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 12 12\",\"className\":\"h-3 w-3 shrink-0 text-emerald-500 h-3.5 w-3.5\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2.2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"children\":[\"$\",\"path\",null,{\"d\":\"M2.5 6.5l2.5 2.5L10 3\"}]}]}],[\"$\",\"span\",null,{\"children\":\"agent uses approved context\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex justify-center\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"div\",null,{\"className\":\"my-1.5 h-5 w-px bg-stone-300\"}]}],[\"$\",\"p\",null,{\"className\":\"text-center font-mono text-[10.5px] tracking-[0.04em] text-night-500/80\",\"children\":\"warehouse returns rows\"}]]}],[\"$\",\"div\",null,{\"className\":\"relative mt-auto pt-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"h-px w-full bg-stone-200\",\"aria-hidden\":\"true\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-[10px] font-semibold uppercase tracking-[.14em] text-night-500\",\"children\":\"Result\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 font-display text-[24px] font-semibold leading-[1.08] tracking-tight sm:text-[26px] text-night-50\",\"children\":[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"Trusted answer.\"}]}],[\"$\",\"p\",null,{\"className\":\"mt-0.5 font-display text-[18px] font-normal leading-[1.2] tracking-tight sm:text-[20px] text-night-400\",\"children\":[\"$\",\"span\",null,{\"className\":\"block\",\"children\":\"Same logic every time.\"}]}]]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"43:[\"$\",\"p\",null,{\"className\":\"mt-3 min-h-[58px] text-[14px] leading-relaxed text-night-400\",\"children\":[\"Agents ask what to measure; \",[\"$\",\"strong\",null,{\"children\":\"ktx\"}],\" plans grain, joins, filters, and governed SQL.\"]}]\n44:[\"$\",\"div\",null,{\"className\":\"pt-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid h-[86px] w-full min-w-0 grid-cols-2 content-start justify-items-center gap-2.5 rounded-md border border-stone-200 bg-stone-50/70 p-2.5\",\"children\":[[\"$\",\"span\",\"ask\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"ask\"}],[\"$\",\"span\",\"plan\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"plan\"}],[\"$\",\"span\",\"compile\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"compile\"}],[\"$\",\"span\",\"SQL\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center truncate rounded-md border border-stone-200 bg-white px-2 text-center font-mono text-[10px] font-semibold text-night-500\",\"children\":\"SQL\"}]]}]}]\n"])</script>
11<script>self.__next_f.push([1,"45:[\"$\",\"$L3f\",\"MCP-compatible agents\",{\"className\":\"h-full min-w-0\",\"style\":{\"transitionDelay\":\"140ms\"},\"children\":[\"$\",\"div\",null,{\"className\":\"flex h-full min-h-[268px] min-w-0 flex-col overflow-hidden rounded-lg border border-stone-200 bg-white p-5 shadow-[0_10px_30px_rgba(17,24,39,0.03)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-4 flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-night-50 font-mono text-[12px] font-semibold text-white\",\"children\":\"03\"}],[\"$\",\"h3\",null,{\"className\":\"min-h-[34px] font-display text-[20px] font-semibold leading-tight tracking-tight text-night-50\",\"children\":\"MCP-compatible agents\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 min-h-[58px] text-[14px] leading-relaxed text-night-400\",\"children\":\"Expose the same approved context to Claude Code, Codex, Cursor, and custom MCP agents.\"}],[\"$\",\"div\",null,{\"className\":\"pt-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid h-[86px] w-full min-w-0 grid-cols-2 content-start justify-items-center gap-2.5 rounded-md border border-stone-200 bg-stone-50/70 p-2.5\",\"children\":[[\"$\",\"div\",\"Claude\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/icons/agents/claude.svg\",\"alt\":\"Claude\",\"width\":18,\"height\":18,\"className\":\"h-4 w-4 object-contain\"}]}],[\"$\",\"div\",\"Codex\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/icons/agents/codex.svg\",\"alt\":\"Codex\",\"width\":18,\"height\":18,\"className\":\"h-4 w-4 object-contain\"}]}],[\"$\",\"div\",\"Cursor\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/icons/agents/cursor.svg\",\"alt\":\"Cursor\",\"width\":18,\"height\":18,\"className\":\"h-4 w-4 object-contain\"}]}],[\"$\",\"div\",\"Custom code\",{\"className\":\"flex h-7 w-[92%] min-w-0 items-center justify-center rounded-md border border-stone-200 bg-white\",\"children\":[\"$\",\"$L7\",null,{\"src\":\"/icons/agents/custom.svg\",\"alt\":\"Custom code\",\"width\":18,\"height\":18,\"className\":\"h-4 w-4 object-contain\"}]}]]}]}]]}]}]\n"])</script>
11<script>self.__next_f.push([1,"46:[\"$\",\"div\",null,{\"aria-label\":\"ktx product mechanics animation\",\"className\":\"relative w-full max-w-full min-w-0 overflow-hidden rounded-xl border border-white/20 bg-white p-4 shadow-[0_30px_90px_-45px_rgba(0,0,0,0.55)] sm:p-5\",\"children\":[[\"$\",\"div\",null,{\"className\":\"relative\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid grid-cols-2 gap-2 sm:grid-cols-4\",\"children\":[[\"$\",\"div\",\"Databases\",{\"className\":\"min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-blue-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":\"Databases\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 break-words text-[11px] leading-5 text-night-500\",\"children\":\"Schemas, columns, relationships, and query history.\"}]]}],[\"$\",\"div\",\"BI tools\",{\"className\":\"min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-orange-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":\"BI tools\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 break-words text-[11px] leading-5 text-night-500\",\"children\":\"Dashboards, explores, usage, and trusted examples.\"}]]}],[\"$\",\"div\",\"Modeling code\",{\"className\":\"min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-amber-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":\"Modeling code\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 break-words text-[11px] leading-5 text-night-500\",\"children\":\"dbt, LookML, MetricFlow, joins, and existing metrics.\"}]]}],[\"$\",\"div\",\"Docs and notes\",{\"className\":\"min-h-[116px] min-w-0 overflow-hidden rounded-lg border border-stone-200 border-t-emerald-500 bg-[#FAF9F6]/90 px-3 py-3 shadow-sm\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":\"Docs and notes\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 break-words text-[11px] leading-5 text-night-500\",\"children\":\"Policies, caveats, analyst notes, and team definitions.\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"relative h-20 sm:h-24\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 760 96\",\"preserveAspectRatio\":\"none\",\"className\":\"absolute inset-0 h-full w-full overflow-visible\",\"children\":[[[\"$\",\"path\",\"M95,4 C95,36 328,44 380,92\",{\"d\":\"M95,4 C95,36 328,44 380,92\",\"fill\":\"none\",\"stroke\":\"#94A3B8\",\"strokeDasharray\":\"5 7\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"1.6\",\"opacity\":\"0.5\"}],[\"$\",\"path\",\"M285,4 C285,38 354,48 380,92\",{\"d\":\"M285,4 C285,38 354,48 380,92\",\"fill\":\"none\",\"stroke\":\"#94A3B8\",\"strokeDasharray\":\"5 7\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"1.6\",\"opacity\":\"0.5\"}],[\"$\",\"path\",\"M475,4 C475,38 406,48 380,92\",{\"d\":\"M475,4 C475,38 406,48 380,92\",\"fill\":\"none\",\"stroke\":\"#94A3B8\",\"strokeDasharray\":\"5 7\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"1.6\",\"opacity\":\"0.5\"}],[\"$\",\"path\",\"M665,4 C665,36 432,44 380,92\",{\"d\":\"M665,4 C665,36 432,44 380,92\",\"fill\":\"none\",\"stroke\":\"#94A3B8\",\"strokeDasharray\":\"5 7\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"1.6\",\"opacity\":\"0.5\"}]],[[\"$\",\"g\",\"M95,4 C95,36 328,44 380,92\",{\"className\":\"ktx-flow-dot\",\"children\":[[\"$\",\"circle\",null,{\"r\":\"5.5\",\"fill\":\"#3B82F6\",\"opacity\":\"0.16\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\",\"path\":\"M95,4 C95,36 328,44 380,92\"}]}],[\"$\",\"circle\",null,{\"r\":\"2.5\",\"fill\":\"#3B82F6\",\"opacity\":\"0.88\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\",\"path\":\"M95,4 C95,36 328,44 380,92\"}]}]]}],[\"$\",\"g\",\"M285,4 C285,38 354,48 380,92\",{\"className\":\"ktx-flow-dot\",\"children\":[[\"$\",\"circle\",null,{\"r\":\"5.5\",\"fill\":\"#F97316\",\"opacity\":\"0.16\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"0.45s\",\"repeatCount\":\"indefinite\",\"path\":\"M285,4 C285,38 354,48 380,92\"}]}],[\"$\",\"circle\",null,{\"r\":\"2.5\",\"fill\":\"#F97316\",\"opacity\":\"0.88\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"0.45s\",\"repeatCount\":\"indefinite\",\"path\":\"M285,4 C285,38 354,48 380,92\"}]}]]}],\"$L54\",\"$L55\"]]}]}],\"$L56\",\"$L57\",\"$L58\",\"$L59\"]}],\"$L5a\"]}]\n"])</script>
11<script>self.__next_f.push([1,"47:[\"$\",\"div\",null,{\"className\":\"pointer-events-none absolute inset-x-0 top-0 h-1.5\",\"style\":{\"background\":\"linear-gradient(90deg, #FF8A4C 0%, #F5F1EA 48%, #7EB7A7 100%)\"}}]\n"])</script>
11<script>self.__next_f.push([1,"48:[\"$\",\"div\",null,{\"className\":\"relative\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-4 flex flex-wrap items-center justify-between gap-3\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-display text-[20px] font-semibold text-white\",\"children\":\"ktx Cloud\"}],[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 shrink-0 items-center rounded-full px-2.5 text-[10px] font-semibold uppercase tracking-[.06em] bg-white text-night-50\",\"children\":\"Recommended for teams\"}]]}],[\"$\",\"ul\",null,{\"className\":\"space-y-2.5\",\"children\":[[\"$\",\"li\",\"Everything in ktx\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Everything in ktx\"]}],[\"$\",\"li\",\"Hosted ktx runtime, no self-install\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Hosted ktx runtime, no self-install\"]}],[\"$\",\"li\",\"Multi-user workspace\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Multi-user workspace\"]}],[\"$\",\"li\",\"Review and approval workflows\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"Review and approval workflows\"]}],[\"$\",\"li\",\"SSO and SCIM\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"SSO and SCIM\"]}],[\"$\",\"li\",\"LLM credits included\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"LLM credits included\"]}],[\"$\",\"li\",\"SOC 2 and HIPAA compliance\",{\"className\":\"flex items-start gap-2.5 text-[14px] text-white/75\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"mt-0.5 h-4 w-4 shrink-0 text-white\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"strokeWidth\":2.5,\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"d\":\"M5 13l4 4L19 7\"}]}],\"SOC 2 and HIPAA compliance\"]}]]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"49:[\"$\",\"$L3f\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"mt-10 flex flex-wrap items-center justify-center gap-4\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/book-demo\",\"data-track-cta\":\"book_demo_cloud_bridge\",\"data-track-location\":\"cloud_bridge\",\"className\":\"font-semibold px-7 py-3 rounded-sm transition-colors text-[15px] shadow-md bg-night-50 hover:bg-night-100 text-white\",\"children\":[\"Book a demo\",[\"$\",\"span\",null,{\"className\":\"inline-block ml-1.5\",\"children\":\"→\"}]]}],[\"$\",\"$L6\",null,{\"href\":\"/products/ktx-cloud\",\"data-track-cta\":\"see_ktx_cloud\",\"data-track-location\":\"cloud_bridge\",\"className\":\"text-[14px] font-semibold underline underline-offset-4 transition-colors text-night-400 hover:text-night-50\",\"children\":\"See ktx Cloud →\"}]]}]}]\n4c:[\"$\",\"$L6\",null,{\"href\":\"/services\",\"data-track-footer\":\"services\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Services\"}]\n4d:[\"$\",\"$L6\",null,{\"href\":\"/pricing\",\"data-track-footer\":\"pricing\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Pricing\"}]\n4e:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Company\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/about\",\"data-track-footer\":\"about\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"About\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog\",\"data-track-footer\":\"blog\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Blog\"}],[\"$\",\"a\",null,{\"href\":\"https://docs.kaelio.com\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"documentation\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Documentation\"}]]}]]}]\n4f:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Blog\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/blog/what-is-a-context-layer-foundation-ai-data-agents-need\",\"data-track-footer\":\"blog_context_layer\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"What Is a Context Layer?\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog/context-layer-vs-semantic-layer-why-you-need-both-for-ai\",\"data-track-footer\":\"blog_context_vs_semantic\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Context Layer vs. Semantic Layer\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog/why-semantic-layers-alone-wont-stop-ai-hallucinations\",\"data-track-footer\":\"blog_semantic_hallucinations\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Why Semantic Layers Won't Stop Hallucinations\"}],[\"$\",\"$L6\",null,{\"href\":\"/blog/how-to-build-a-context-layer-in-minutes-not-months\",\"data-track-footer\":\"blog_build_context_layer\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Build a Context Layer in Minutes\"}]]}]]}]\n50:[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"className\":\"text-[13px] font-semibold text-white mb-4\",\"children\":\"Legal\"}],[\"$\",\"div\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/privacy\",\"data-track-footer\":\"privacy\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Privacy\"}],[\"$\",\"$L6\",null,{\"href\":\"/terms\",\"data-track-footer\":\"terms\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Terms\"}],[\"$\",\"$L6\",null,{\"href\":\"/cookies\",\"data-track-footer\":\"cookies\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Cookies\"}],[\"$\",\"a\",null,{\"href\":\"https://compliance.kaelio.com/overview\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-track-footer\":\"security\",\"className\":\"block text-[13px] text-white/50 hover:text-white/80 transition-colors\",\"children\":\"Security\"}]]}]]}]\n51:[\"$\",\"div\",null,{\"className\":\"flex flex-"])</script>
11<script>self.__next_f.push([1,"col gap-2 border-t border-white/10 pt-8 text-[13px] text-white/40 sm:flex-row sm:items-center sm:justify-between\",\"children\":[[\"$\",\"p\",null,{\"children\":\"© 2026 Kaelio, Inc. All rights reserved.\"}],[\"$\",\"span\",null,{\"className\":\"text-white/40\",\"children\":\"HIPAA · SOC 2 Compliant\"}]]}]\n"])</script>
11<script>self.__next_f.push([1,"54:[\"$\",\"g\",\"M475,4 C475,38 406,48 380,92\",{\"className\":\"ktx-flow-dot\",\"children\":[[\"$\",\"circle\",null,{\"r\":\"5.5\",\"fill\":\"#F59E0B\",\"opacity\":\"0.16\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"0.9s\",\"repeatCount\":\"indefinite\",\"path\":\"M475,4 C475,38 406,48 380,92\"}]}],[\"$\",\"circle\",null,{\"r\":\"2.5\",\"fill\":\"#F59E0B\",\"opacity\":\"0.88\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"0.9s\",\"repeatCount\":\"indefinite\",\"path\":\"M475,4 C475,38 406,48 380,92\"}]}]]}]\n55:[\"$\",\"g\",\"M665,4 C665,36 432,44 380,92\",{\"className\":\"ktx-flow-dot\",\"children\":[[\"$\",\"circle\",null,{\"r\":\"5.5\",\"fill\":\"#10B981\",\"opacity\":\"0.16\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"1.35s\",\"repeatCount\":\"indefinite\",\"path\":\"M665,4 C665,36 432,44 380,92\"}]}],[\"$\",\"circle\",null,{\"r\":\"2.5\",\"fill\":\"#10B981\",\"opacity\":\"0.88\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"4.8s\",\"begin\":\"1.35s\",\"repeatCount\":\"indefinite\",\"path\":\"M665,4 C665,36 432,44 380,92\"}]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"56:[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-[430px] overflow-hidden rounded-xl border border-night-700 bg-night-50 shadow-[0_16px_40px_-22px_rgba(15,31,37,0.55)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3 border-b border-white/10 px-4 py-3\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[10px] font-semibold uppercase tracking-[.12em] text-white/45\",\"children\":\"ktx\"}],[\"$\",\"p\",null,{\"className\":\"mt-1 font-display text-[18px] font-semibold leading-tight text-white\",\"children\":\"Context builder\"}]]}],[\"$\",\"span\",null,{\"className\":\"rounded-md border border-cyan-300/20 bg-cyan-300/10 px-2 py-1 font-mono text-[10px] text-cyan-100\",\"children\":\"local + git\"}]]}],[\"$\",\"div\",null,{\"className\":\"grid gap-2 p-3 sm:grid-cols-2\",\"children\":[[\"$\",\"div\",\"source connectors\",{\"className\":\"flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50\",\"children\":1}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-white/72\",\"children\":\"source connectors\"}]]}],[\"$\",\"div\",\"context builder\",{\"className\":\"flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50\",\"children\":2}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-white/72\",\"children\":\"context builder\"}]]}],[\"$\",\"div\",\"reconciliation\",{\"className\":\"flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50\",\"children\":3}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-white/72\",\"children\":\"reconciliation\"}]]}],[\"$\",\"div\",\"validation\",{\"className\":\"flex items-center gap-2 rounded-lg border border-white/10 bg-white/[0.06] px-3 py-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-cyan-200 font-mono text-[10px] font-semibold text-night-50\",\"children\":4}],[\"$\",\"span\",null,{\"className\":\"text-[11px] font-medium text-white/72\",\"children\":\"validation\"}]]}]]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"57:[\"$\",\"div\",null,{\"className\":\"relative h-16 sm:h-20\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 760 80\",\"preserveAspectRatio\":\"none\",\"className\":\"absolute inset-0 h-full w-full overflow-visible\",\"children\":[[[\"$\",\"path\",\"M380,4 C330,28 210,36 190,76\",{\"d\":\"M380,4 C330,28 210,36 190,76\",\"fill\":\"none\",\"stroke\":\"#94A3B8\",\"strokeDasharray\":\"5 7\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"1.6\",\"opacity\":\"0.55\"}],[\"$\",\"path\",\"M380,4 C430,28 550,36 570,76\",{\"d\":\"M380,4 C430,28 550,36 570,76\",\"fill\":\"none\",\"stroke\":\"#94A3B8\",\"strokeDasharray\":\"5 7\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"1.6\",\"opacity\":\"0.55\"}]],[[\"$\",\"g\",\"M380,4 C330,28 210,36 190,76\",{\"className\":\"ktx-flow-dot\",\"children\":[[\"$\",\"circle\",null,{\"r\":\"5.5\",\"fill\":\"#10B981\",\"opacity\":\"0.16\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"3.6s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\",\"path\":\"M380,4 C330,28 210,36 190,76\"}]}],[\"$\",\"circle\",null,{\"r\":\"2.5\",\"fill\":\"#10B981\",\"opacity\":\"0.88\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"3.6s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\",\"path\":\"M380,4 C330,28 210,36 190,76\"}]}]]}],[\"$\",\"g\",\"M380,4 C430,28 550,36 570,76\",{\"className\":\"ktx-flow-dot\",\"children\":[[\"$\",\"circle\",null,{\"r\":\"5.5\",\"fill\":\"#3B82F6\",\"opacity\":\"0.16\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"3.6s\",\"begin\":\"0.45s\",\"repeatCount\":\"indefinite\",\"path\":\"M380,4 C430,28 550,36 570,76\"}]}],[\"$\",\"circle\",null,{\"r\":\"2.5\",\"fill\":\"#3B82F6\",\"opacity\":\"0.88\",\"children\":[\"$\",\"animateMotion\",null,{\"dur\":\"3.6s\",\"begin\":\"0.45s\",\"repeatCount\":\"indefinite\",\"path\":\"M380,4 C430,28 550,36 570,76\"}]}]]}]]]}]}]\n"])</script>
11<script>self.__next_f.push([1,"58:[\"$\",\"div\",null,{\"className\":\"grid gap-3 sm:grid-cols-2\",\"children\":[[\"$\",\"div\",\"wiki/*.md\",{\"className\":\"min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-4 py-3\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-mono text-[12px] font-semibold text-emerald-600\",\"children\":\"wiki/*.md\"}],[\"$\",\"h3\",null,{\"className\":\"mt-1 font-display text-[17px] font-semibold leading-tight text-night-50\",\"children\":\"Business context\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[12px] leading-5 text-night-500\",\"children\":\"Readable definitions, caveats, policies, provenance, and source notes that agents can search before answering.\"}]]}],[\"$\",\"div\",\"semantic-layer/*.yaml\",{\"className\":\"min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-4 py-3\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-mono text-[12px] font-semibold text-blue-600\",\"children\":\"semantic-layer/*.yaml\"}],[\"$\",\"h3\",null,{\"className\":\"mt-1 font-display text-[17px] font-semibold leading-tight text-night-50\",\"children\":\"Executable semantics\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-[12px] leading-5 text-night-500\",\"children\":[\"Measures, dimensions, joins, filters, and segments that \",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\" can validate and compile into SQL.\"]}]]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"59:[\"$\",\"div\",null,{\"className\":\"mt-4 rounded-xl border border-stone-200 bg-white px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center justify-between gap-3\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[10px] font-semibold uppercase tracking-[.12em] text-night-500\",\"children\":\"Agent runtime\"}],[\"$\",\"h3\",null,{\"className\":\"mt-1 font-display text-[18px] font-semibold leading-tight text-night-50\",\"children\":\"Context stays active.\"}]]}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-2 sm:grid-cols-3\",\"children\":[[\"$\",\"div\",\"agent request\",{\"className\":\"min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-3 py-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-blue-600 font-mono text-[10px] font-semibold text-white\",\"children\":1}],[\"$\",\"p\",null,{\"className\":\"font-mono text-[10px] font-semibold text-blue-700\",\"children\":\"agent request\"}]]}],[\"$\",\"h4\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":[\"Agent asks \",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\"\"]}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-[11px] leading-5 text-night-500\",\"children\":[\"The agent sends \",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\" the business question plus the metrics it needs.\"]}]]}],[\"$\",\"div\",\"context lookup\",{\"className\":\"min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-3 py-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-blue-600 font-mono text-[10px] font-semibold text-white\",\"children\":2}],[\"$\",\"p\",null,{\"className\":\"font-mono text-[10px] font-semibold text-blue-700\",\"children\":\"context lookup\"}]]}],[\"$\",\"h4\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":[\"\",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\" searches and plans\"]}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-[11px] leading-5 text-night-500\",\"children\":[\"\",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\" reads the wiki and metric definitions, resolves grain, joins, filters, and entities.\"]}]]}],[\"$\",\"div\",\"validated SQL\",{\"className\":\"min-w-0 rounded-lg border border-stone-200 bg-[#FAF9F6] px-3 py-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center gap-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex h-5 w-5 items-center justify-center rounded-full bg-blue-600 font-mono text-[10px] font-semibold text-white\",\"children\":3}],[\"$\",\"p\",null,{\"className\":\"font-mono text-[10px] font-semibold text-blue-700\",\"children\":\"validated SQL\"}]]}],[\"$\",\"h4\",null,{\"className\":\"font-display text-[14px] font-semibold leading-tight text-night-50\",\"children\":\"Warehouse returns rows\"}],[\"$\",\"p\",null,{\"className\":\"mt-1.5 text-[11px] leading-5 text-night-500\",\"children\":[\"\",[\"$\",\"strong\",\"1\",{\"children\":\"ktx\"}],\" compiles a read-only query, executes it, and sends rows to the agent.\"]}]]}]]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"5a:[\"$\",\"style\",null,{\"children\":\"\\n        .ktx-flow-dot {\\n          filter: drop-shadow(0 0 7px currentColor);\\n        }\\n\\n        @media (prefers-reduced-motion: reduce) {\\n          .ktx-flow-dot {\\n            display: none;\\n          }\\n        }\\n      \"}]\n"])</script>
11<script>self.__next_f.push([1,"2f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
11<script>self.__next_f.push([1,"5b:I[71209,[\"/_next/static/chunks/0z.b4y5lc4ks0.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"/_next/static/chunks/10ncx8p1uu20r.js?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\"],\"IconMark\"]\n"])</script>
11<script>self.__next_f.push([1,"31:[[\"$\",\"title\",\"0\",{\"children\":\"ktx: the open-source context layer for data agents\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"AI data platform,AI data agent,AI analytics agent,agentic analytics,self-serve analytics,data team,analytics engineering,metric governance,data catalog,AI analytics,warehouse analytics,dbt analytics,Snowflake analytics,BigQuery analytics,Tableau self-serve,Looker self-serve,trusted analytics,proactive data delivery,business intelligence AI,data stack AI,metric consistency\"}],[\"$\",\"meta\",\"4\",{\"name\":\"creator\",\"content\":\"Kaelio\"}],[\"$\",\"meta\",\"5\",{\"name\":\"publisher\",\"content\":\"Kaelio\"}],[\"$\",\"meta\",\"6\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"7\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"8\",{\"name\":\"theme-color\",\"content\":\"#FFFFFF\"}],[\"$\",\"link\",\"9\",{\"rel\":\"canonical\",\"href\":\"https://www.kaelio.com\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"ktx: the open-source context layer for data agents\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally.\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://www.kaelio.com\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:site_name\",\"content\":\"Kaelio\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image\",\"content\":\"https://www.kaelio.com/opengraph-image?f8726fa05e83206f\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:alt\",\"content\":\"ktx by Kaelio: the open-source context layer for data agents\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:title\",\"content\":\"ktx: the open-source context layer for data agents\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:description\",\"content\":\"ktx teaches agents how to query your warehouse accurately. It learns your metric definitions, joinable columns, and business knowledge, then writes them as reviewable YAML and Markdown in git. Apache 2.0. Run locally.\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image\",\"content\":\"https://www.kaelio.com/twitter-image?f8726fa05e83206f\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:alt\",\"content\":\"ktx by Kaelio: the open-source context layer for data agents\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"27\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0llcj8u2rde2p.ico?dpl=dpl_7svU1gkLAT3jinPxPJxqA5ZhX4bD\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"28\",{\"rel\":\"icon\",\"href\":\"/icon.svg\"}],[\"$\",\"link\",\"29\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icon.svg\"}],[\"$\",\"$L5b\",\"30\",{}]]\n"])</script>
11<script>self.__next_f.push([1,"53:null\n"])</script>
11</body></html>

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.