> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cortex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Home

> Code is no longer the bottleneck. Everything else is.

export const ProductCard = ({img, href, title, description, type, color}) => {
  return <a href={href} className="group not-prose no-underline">
      <div className="flex flex-col gap-4 rounded-xl md:p-1">
        <div className="w-full h-32 overflow-hidden rounded-xl bg-gray-100 dark:bg-gray-800">
          <img src={img} className="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" alt={title} loading="lazy" />
        </div>
        <div className="flex flex-col gap-3 pb-2">
          <h2 className="text-md font-medium text-gray-900 dark:text-gray-200 group-hover:text-gray-600 dark:group-hover:text-gray-400 transition-colors mb-[-8px]">
            {title}
          </h2>
          <p className="text-gray-500 dark:text-gray-400 text-sm font-medium">
            {description}
          </p>
          <div className="flex gap-2 mt-2 mb-1">
            <span className="bg-primary-light dark:bg-primary-dark text-white dark:text-white rounded-lg px-2 py-1 text-sm font-medium" style={color ? {
    backgroundColor: color
  } : undefined}>{type}</span>
          </div>
        </div>
      </div>
    </a>;
};

export const appCategories = [{
  id: 'opex-review-agent',
  label: 'OpEx Review Agent',
  items: [{
    id: 'opex-review',
    title: 'OpEx Review',
    desc: 'Turn days of manual data assembly into a narrated briefing, so your OpEx meeting starts with what\'s failing and who owns the fix',
    icon: '/images/scroll.svg',
    image: {
      light: '/images/homepage-opex.png',
      dark: '/images/homepage-opex.png'
    },
    href: 'https://docs.cortex.io/improve/opex-review'
  }, {
    id: 'cortex-ai-chat',
    title: 'Cortex AI chat',
    desc: 'Ask, in plain language, who owns it, why it\'s failing, or how it\'s trending—grounded in your real data',
    icon: '/images/chats-circle.svg',
    image: {
      light: '/images/homepage-opex.png',
      dark: '/images/homepage-opex.png'
    },
    href: '/cortex-ai-chat'
  }, {
    id: 'drive-framework',
    title: 'DRIVE framework',
    desc: 'Track engineering health across five pillars—Delivery, Reliability, Initiatives, Vigilance, and Efficiency, so you see the whole organization rather than just how fast it ships code',
    icon: '/images/car.svg',
    image: {
      light: '/images/homepage-opex.png',
      dark: '/images/homepage-opex.png'
    },
    href: 'https://www.cortex.io/drive'
  }]
}, {
  id: 'catalog',
  label: 'Catalog',
  items: [{
    id: 'import-entities',
    title: 'Import entities',
    desc: 'Populate your catalog from the tools you already use',
    icon: '/images/arrow-square-up.svg',
    image: {
      light: '/images/homepage-catalog.png',
      dark: '/images/homepage-catalog.png'
    },
    href: 'https://docs.cortex.io/ingesting-data-into-cortex/entities-overview/entities/adding-entities'
  }, {
    id: 'manage-relationships',
    title: 'Manage relationships',
    desc: 'Show which entities depend on each other, across your whole catalog',
    icon: '/images/graph.svg',
    image: {
      light: '/images/homepage-catalog.png',
      dark: '/images/homepage-catalog.png'
    },
    href: 'https://docs.cortex.io/ingesting-data-into-cortex/entities-overview/entities/defining-relationship-types'
  }, {
    id: 'define-ownership',
    title: 'Define ownership',
    desc: 'Assign every entity an owner, so questions reach the right team fast',
    icon: '/images/user-gear.svg',
    image: {
      light: '/images/homepage-catalog.png',
      dark: '/images/homepage-catalog.png'
    },
    href: 'https://docs.cortex.io/ingesting-data-into-cortex/entities-overview/entities/ownership'
  }, {
    id: 'query-builder',
    title: 'Query builder',
    desc: 'Find anything in your catalog with CQL, no query language required',
    icon: '/images/magnifying-glass.svg',
    image: {
      light: '/images/homepage-catalog.png',
      dark: '/images/homepage-catalog.png'
    },
    href: 'https://docs.cortex.io/standardize/cql'
  }]
}, {
  id: 'scorecards',
  label: 'Scorecards',
  items: [{
    id: 'create-a-scorecard',
    title: 'Create a Scorecard',
    desc: 'Build a Scorecard from scratch, pick the entities it applies to, and let Cortex grade them on every evaluation',
    icon: '/images/exam.svg',
    image: {
      light: '/images/homepage-scorecards.png',
      dark: '/images/homepage-scorecards.png'
    },
    href: 'https://docs.cortex.io/standardize/scorecards/create'
  }, {
    id: 'track-performance-with-reports',
    title: 'Track performance with reports',
    desc: 'See which entities are meeting your standards, which aren\'t, and how that picture has changed since last quarter',
    icon: '/images/hourglass-simple.svg',
    image: {
      light: '/images/homepage-scorecards.png',
      dark: '/images/homepage-scorecards.png'
    },
    href: 'https://docs.cortex.io/improve/reports'
  }, {
    id: 'initiatives',
    title: 'Initiatives',
    desc: 'Put a deadline and an owner on a migration, so the long tail doesn\'t stall out for six months',
    icon: '/images/calendar-check.svg',
    image: {
      light: '/images/homepage-scorecards.png',
      dark: '/images/homepage-scorecards.png'
    },
    href: 'https://docs.cortex.io/improve/initiatives'
  }, {
    id: 'scorecards-as-code',
    title: 'Scorecards as code',
    desc: 'Keep your Scorecard definitions in Git, so every change to a standard has a pull request behind it',
    icon: '/images/code.svg',
    image: {
      light: '/images/homepage-scorecards.png',
      dark: '/images/homepage-scorecards.png'
    },
    href: 'https://docs.cortex.io/standardize/scorecards/scorecards-as-code'
  }]
}, {
  id: 'workflows',
  label: 'Workflows',
  items: [{
    id: 'create-a-workflow',
    title: 'Create a Workflow',
    desc: 'Turn a multi-step process into a one-click action your team can run on demand',
    icon: '/images/arrows-out.svg',
    image: {
      light: '/images/homepage-workflows.png',
      dark: '/images/homepage-workflows.png'
    },
    href: 'https://docs.cortex.io/streamline/workflows/create'
  }, {
    id: 'workflow-blocks',
    title: 'Workflow blocks',
    desc: 'Snap together API calls, approvals, alerts, and scripts until a process that spans five tools takes one click',
    icon: '/images/cube.svg',
    image: {
      light: '/images/homepage-workflows.png',
      dark: '/images/homepage-workflows.png'
    },
    href: 'https://docs.cortex.io/streamline/workflows/blocks'
  }, {
    id: 'workflows-scaffolder',
    title: 'Scaffolder',
    desc: 'Generate new services from your own templates, so every repo starts compliant instead of getting fixed later',
    icon: '/images/robot.svg',
    image: {
      light: '/images/homepage-workflows.png',
      dark: '/images/homepage-workflows.png'
    },
    href: 'https://docs.cortex.io/streamline/workflows/scaffolder'
  }, {
    id: 'workflows-as-code',
    title: 'Workflows as code',
    desc: 'Keep your Workflow definitions in Git, so automation changes get reviewed like anything else you ship',
    icon: '/images/code.svg',
    image: {
      light: '/images/homepage-workflows.png',
      dark: '/images/homepage-workflows.png'
    },
    href: 'https://docs.cortex.io/streamline/workflows/workflows-as-code'
  }]
}, {
  id: 'eng-intelligence',
  label: 'Eng Intelligence',
  items: [{
    id: 'data-explorer',
    title: 'Data Explorer',
    desc: 'Slice engineering metrics by team, repo, or time period until you find what\'s actually driving the number',
    icon: '/images/house-simple.svg',
    image: {
      light: '/images/homepage-eng-intel.png',
      dark: '/images/homepage-eng-intel.png'
    },
    href: 'https://docs.cortex.io/improve/eng-intelligence/data-explorer'
  }, {
    id: 'custom-metrics',
    title: 'Custom metrics',
    desc: 'Push your own metrics into Cortex and track them next to DRIVE, so the signals you care about sit beside the standard ones',
    icon: '/images/ruler.svg',
    image: {
      light: '/images/homepage-eng-intel.png',
      dark: '/images/homepage-eng-intel.png'
    },
    href: 'https://docs.cortex.io/improve/eng-intelligence/custom-metrics'
  }, {
    id: 'dashboards',
    title: 'Dashboards',
    desc: 'Put the metrics your team watches on one screen, ready before someone asks for them',
    icon: '/images/gauge.svg',
    image: {
      light: '/images/homepage-eng-intel.png',
      dark: '/images/homepage-eng-intel.png'
    },
    href: 'https://docs.cortex.io/improve/eng-intelligence/dashboards'
  }, {
    id: 'ai-impact-dashboard-for-github-copilot',
    title: 'AI impact dashboard for GitHub Copilot',
    desc: 'See what Copilot is changing about how your teams ship, in your own data rather than a vendor\'s benchmark',
    icon: '/images/git-merge.svg',
    image: {
      light: '/images/homepage-eng-intel.png',
      dark: '/images/homepage-eng-intel.png'
    },
    href: 'https://docs.cortex.io/improve/eng-intelligence/dashboards/ai-impact'
  }]
}, {
  id: 'integrations',
  label: 'Integrations',
  items: [{
    id: 'browse-integrations',
    title: 'Browse integrations',
    desc: 'Connect GitHub, PagerDuty, Jira, and everything else you run on',
    icon: '/images/plug.svg',
    image: {
      light: '/images/homepage-integrations.png',
      dark: '/images/homepage-integrations.png'
    },
    href: 'https://docs.cortex.io/ingesting-data-into-cortex/integrations'
  }, {
    id: 'connect-internal-tools',
    title: 'Connect internal tools',
    desc: 'Reach GitHub, GitLab, Jira, and Prometheus behind your firewall, without opening an inbound port',
    icon: '/images/plugs-connected.svg',
    image: {
      light: '/images/homepage-integrations.png',
      dark: '/images/homepage-integrations.png'
    },
    href: 'https://docs.cortex.io/ingesting-data-into-cortex/integrations/axon-relay'
  }, {
    id: 'custom-webhooks',
    title: 'Custom webhooks',
    desc: 'POST data from homegrown tools to a Cortex endpoint, then use it in Scorecards and CQL',
    icon: '/images/webhooks-logo.svg',
    image: {
      light: '/images/homepage-integrations.png',
      dark: '/images/homepage-integrations.png'
    },
    href: 'https://docs.cortex.io/ingesting-data-into-cortex/integrations/webhook'
  }]
}];

export const ProductTiles = ({categories, hideButtons = false}) => {
  const [activeCategory, setActiveCategory] = useState(categories[0].id);
  const [activeSubTab, setActiveSubTab] = useState(categories[0].items[0]?.id ?? null);
  const currentCategory = categories.find(cat => cat.id === activeCategory);
  const currentSub = currentCategory?.items.find(item => item.id === activeSubTab);
  return <div className="not-prose space-y-6">
      {!hideButtons && <div className="flex flex-wrap gap-2">
        {categories.map(cat => <button key={cat.id} onClick={() => {
    setActiveCategory(cat.id);
    setActiveSubTab(cat.items[0]?.id ?? null);
  }} data-active={activeCategory === cat.id ? 'true' : 'false'} className="product-tab px-4 py-2 text-sm rounded-full font-medium transition-colors">
            {cat.label}
          </button>)}
      </div>}

      <div>
        {currentCategory?.items?.length ? <div className="flex flex-col lg:flex-row gap-6 bg-gray-100 dark:bg-[#141414] rounded-2xl">
            <div className="flex flex-col w-full lg:w-1/2 space-y-2 p-4">
            {currentCategory.items.map(item => <a key={item.id} href={item.href} onMouseOver={() => setActiveSubTab(item.id)} data-active={activeSubTab === item.id ? 'true' : 'false'} className={`product-item flex items-start gap-1.5 text-left px-5 py-3 rounded-2xl transition-all ${activeSubTab === item.id ? 'bg-white dark:bg-white/5' : ''}`}>
                  <div className="text-xl mr-3 mt-1"><img src={item.icon} alt={item.title} className="w-8 h-8" /></div>
                  <div className="flex-1">
                    <h3 className="font-medium text-base text-black dark:text-white">
                      {item.title}
                    </h3>
                    <p className="text-sm text-gray-600 dark:text-gray-400">{item.desc}</p>
                  </div>
                  <div data-active={activeSubTab === item.id ? 'true' : 'false'} className="product-item-arrow flex items-center justify-center min-w-[24px] self-center">
                    <div className="hidden dark:block">
                      <Icon icon="chevron-right" size="14" color="#FFF" />
                    </div>
                    <div className="block dark:hidden">
                      <Icon icon="chevron-right" size="14" color="#0A0B0D" />
                    </div>
                  </div>
                </a>)}
            </div>
            <div className="group w-full h-fit lg:w-1/2 rounded-2xl flex items-center justify-center overflow-hidden min-h-[320px] p-4">
              {currentSub?.image ? <>
                  <img src={currentSub.image.light} alt={currentSub.title} className="block dark:hidden w-full h-full object-cover rounded-xl" />
                  <img src={currentSub.image.dark} alt={currentSub.title} className="hidden dark:block w-full h-full object-cover rounded-xl" />
                </> : <p className="text-gray-400 dark:text-gray-500 p-8">No preview available</p>}
      </div>
          </div> : <p className="text-sm text-gray-500 dark:text-gray-400">
            No features available for this category.
          </p>}
      </div>
    </div>;
};

export const Title = ({children}) => {
  return <div className="text-gray-900 dark:text-gray-200 text-2xl tracking-tight">
      {children}
    </div>;
};

export const Container = ({children}) => {
  return <div className="px-4 lg:px-10 py-14">
      {children}
    </div>;
};

<div className="px-5 divide-y divide-gray-100 dark:divide-white/10">
  <Container>
    <div className="w-full flex flex-col">
      <div className="flex flex-col items-start justify-center w-full max-w-4xl text-left">
        <div className="text-gray-900 dark:text-gray-200 text-4xl tracking-tight">
          Code is no longer the bottleneck. Everything else is.
        </div>

        <p className="text-md text-gray-600 dark:text-gray-400 text-left mt-3 mb-4">
          Cortex is the EngOps Platform that keeps your entire engineering organization moving as one—fewer incidents, faster recovery, and developers spending time building instead of battling friction.
        </p>

        <div className="flex flex-row gap-4 mt-5">
          <button type="button" onClick={() => window.Kapa && window.Kapa('open')} className="px-5 flex items-center font-medium text-sm rounded-full py-2 shadow-sm text-white dark:text-gray-900 bg-primary-dark dark:bg-primary-light hover:opacity-[0.9] hover:bg-primary justify-center">
            Ask Cortex AI

            <svg
              className="size-3 ml-2 bg-white dark:bg-gray-900"
              style={{
    maskImage: 'url("https://mintlify.b-cdn.net/solid/arrow-right-long.svg")',
    maskRepeat: 'no-repeat',
    maskPosition: 'center center'
  }}
            />
          </button>
        </div>
      </div>
    </div>
  </Container>

  <Container>
    <div className="flex flex-col w-full mb-8">
      <div className="flex items-center justify-between w-full">
        <Title>
          Welcome to Cortex
        </Title>
      </div>

      <p className="text-[#5B616E] dark:text-gray-300 text-md mb-1 mt-3">
        Catalog your services, set engineering standards, and automate the work that connects them.
      </p>
    </div>

    <Columns cols={3}>
      <ProductCard title="Get started" description="Configure your workspace, connect your data, and learn how Cortex works" href="https://docs.cortex.io/get-started/quickstart" img="https://mintcdn.com/cortex-290c0c42/vCS5fJP4w7e-qy0s/images/homepage-get-started.png?fit=max&auto=format&n=vCS5fJP4w7e-qy0s&q=85&s=10141647c9910c3dc3fa7a71075389bc" type="Product Docs" width="1400" height="256" data-path="images/homepage-get-started.png" />

      <ProductCard title="Build with the API" description="Use the REST API to automate work with entities, Scorecards, custom data, and more" href="https://docs.cortex.io/api" img="https://mintcdn.com/cortex-290c0c42/vCS5fJP4w7e-qy0s/images/homepage-api.png?fit=max&auto=format&n=vCS5fJP4w7e-qy0s&q=85&s=0f4a197e6114a12b1bb78de4a67e8b64" type="API Reference" color="#226686" width="1400" height="256" data-path="images/homepage-api.png" />

      <ProductCard title="Best practices" description="Follow proven, step-by-step recipes to tackle your engineering goals" href="https://docs.cortex.io/guides" img="https://mintcdn.com/cortex-290c0c42/vCS5fJP4w7e-qy0s/images/homepage-cookbooks.png?fit=max&auto=format&n=vCS5fJP4w7e-qy0s&q=85&s=7ffbf7b3f1413a013fea266b31ef56af" type="Cookbooks" color="#A86400" width="1400" height="256" data-path="images/homepage-cookbooks.png" />
    </Columns>

    <ul className="not-prose pb-[1px] h-1 min-w-full mt-3 overflow-auto" />
  </Container>

  <Container>
    <div className="flex flex-col w-full mb-8">
      <div className="flex items-center justify-between w-full">
        <Title>
          Explore Cortex
        </Title>
      </div>

      <p className="text-[#5B616E] dark:text-gray-300 text-md mb-1 mt-3">
        A tour of what Cortex does, from your catalog to Scorecards to the API.
      </p>
    </div>

    <ProductTiles categories={appCategories} />

    <ul className="not-prose pb-[1px] h-1 min-w-full mt-3 overflow-auto" />
  </Container>

  <Container>
    <div className="flex flex-col w-full mb-5">
      <Title>
        Resources
      </Title>
    </div>

    <Columns cols={3}>
      <Card title="Cortex Academy" icon="https://mintcdn.com/cortex-290c0c42/d16ugX_NNn4Xtimu/images/graduation-cap.svg?fit=max&auto=format&n=d16ugX_NNn4Xtimu&q=85&s=26c0d9b256f8f1a609717dfd688a226b" href="https://academy.cortex.io" width="32" height="32" data-path="images/graduation-cap.svg">
        Self-paced learning hub featuring a variety of courses that cover Cortex basics and best practices
      </Card>

      <Card title="Engineering blog" icon="https://mintcdn.com/cortex-290c0c42/d16ugX_NNn4Xtimu/images/book-open%20(1).svg?fit=max&auto=format&n=d16ugX_NNn4Xtimu&q=85&s=205bbe65f149b5e77e46e9dbfc9156f2" href="https://builders.cortex.io" width="256" height="256" data-path="images/book-open (1).svg">
        Deep, technical posts from Cortex engineers on agents, sandboxing, and operating engineering at scale
      </Card>

      <Card title="Contact support" icon="https://mintcdn.com/cortex-290c0c42/d16ugX_NNn4Xtimu/images/headset.svg?fit=max&auto=format&n=d16ugX_NNn4Xtimu&q=85&s=70b4a26392f0427c941ec08b5b09c951" href="https://support.cortex.io/" width="32" height="32" data-path="images/headset.svg">
        Get help from the Cortex Customer Engineering team via email, an in-app ticket, or your Slack channel
      </Card>
    </Columns>
  </Container>
</div>


## Related topics

- [Scorecard rule filters](/standardize/scorecards/scorecard-filters.md)
- [Engineering homepage](/streamline/homepage.md)
- [Jira](/ingesting-data-into-cortex/integrations/jira.md)
