```
├── .gitignore (500 tokens)
├── AGENTS.md (400 tokens)
├── LICENSE (omitted)
├── README.md (400 tokens)
├── components/
├── AboutSection.tsx (300 tokens)
├── CodeExample.tsx (1200 tokens)
├── CompatibilitySection.tsx (1900 tokens)
├── ExampleListSection.tsx (1100 tokens)
├── ExamplesSection.tsx (100 tokens)
├── FAQSection.tsx (600 tokens)
├── Footer.tsx (100 tokens)
├── Hero.tsx (600 tokens)
├── HowToUseSection.tsx (400 tokens)
├── Section.tsx (300 tokens)
├── WhySection.tsx (400 tokens)
├── icons/
├── ClipboardIcon.tsx (100 tokens)
├── CopyIcon.tsx (700 tokens)
├── GitHubIcon.tsx (300 tokens)
├── LinkIcon.tsx (100 tokens)
├── UserIcon.tsx (100 tokens)
├── next-env.d.ts (omitted)
├── next.config.ts
├── package.json (100 tokens)
├── pages/
├── _app.tsx (300 tokens)
├── _document.tsx (100 tokens)
├── index.tsx (1000 tokens)
├── pnpm-lock.yaml (omitted)
├── postcss.config.mjs
├── public/
├── favicon-dark.png
├── favicon-light.png
├── favicon.ico
├── logos/
├── aider.svg (400 tokens)
├── amp.svg (100 tokens)
├── augment.svg (700 tokens)
├── codex.svg (200 tokens)
├── copilot.svg (400 tokens)
├── cursor.svg (200 tokens)
├── devin-dark.svg (900 tokens)
├── devin-light.svg (900 tokens)
├── factory.svg (1200 tokens)
├── gemini.svg (300 tokens)
├── goose.svg (1000 tokens)
├── jules.svg (400 tokens)
├── junie.svg (100 tokens)
├── kilo-code.svg (500 tokens)
├── ona-dark.svg (200 tokens)
├── ona-light.svg (200 tokens)
├── opencode.svg (800 tokens)
├── phoenix.svg (700 tokens)
├── roocode.svg (200 tokens)
├── semgrep.svg (500 tokens)
├── uipath.svg (400 tokens)
├── vscode-dark.svg (400 tokens)
├── vscode-light.svg (400 tokens)
├── warp.svg (100 tokens)
├── windsurf-dark.svg (200 tokens)
├── windsurf-light.svg (200 tokens)
├── zed.svg (200 tokens)
├── og.png
├── styles/
├── globals.css (600 tokens)
├── tsconfig.json (100 tokens)
```
## /.gitignore
```gitignore path="/.gitignore"
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.*
!.env.example
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Sveltekit cache directory
.svelte-kit/
# vitepress build output
**/.vitepress/dist
# vitepress cache directory
**/.vitepress/cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# Firebase cache directory
.firebase/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v3
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# Vite logs files
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
# Next.js and project-specific ignores
.vercel
/build
next-env.d.ts
*.pem
.vercel
# Misc
.DS_Store
```
## /AGENTS.md
# AGENTS Guidelines for This Repository
This repository contains a Next.js application located in the root of this repository. When
working on the project interactively with an agent (e.g. the Codex CLI) please follow
the guidelines below so that the development experience – in particular Hot Module
Replacement (HMR) – continues to work smoothly.
## 1. Use the Development Server, **not** `npm run build`
* **Always use `npm run dev` (or `pnpm dev`, `yarn dev`, etc.)** while iterating on the
application. This starts Next.js in development mode with hot-reload enabled.
* **Do _not_ run `npm run build` inside the agent session.** Running the production
build command switches the `.next` folder to production assets which disables hot
reload and can leave the development server in an inconsistent state. If a
production build is required, do it outside of the interactive agent workflow.
## 2. Keep Dependencies in Sync
If you add or update dependencies remember to:
1. Update the appropriate lockfile (`package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`).
2. Re-start the development server so that Next.js picks up the changes.
## 3. Coding Conventions
* Prefer TypeScript (`.tsx`/`.ts`) for new components and utilities.
* Co-locate component-specific styles in the same folder as the component when
practical.
## 4. Useful Commands Recap
| Command | Purpose |
| ------------------ | -------------------------------------------------- |
| `npm run dev` | Start the Next.js dev server with HMR. |
| `npm run lint` | Run ESLint checks. |
| `npm run test` | Execute the test suite (if present). |
| `npm run build` | **Production build – _do not run during agent sessions_** |
---
Following these practices ensures that the agent-assisted development workflow stays
fast and dependable. When in doubt, restart the dev server rather than running the
production build.
## /README.md
# AGENTS.md

[AGENTS.md](https://agents.md) is a simple, open format for guiding coding agents.
Think of AGENTS.md as a README for agents: a dedicated, predictable place
to provide context and instructions to help AI coding agents work on your project.
Below is a minimal example of an AGENTS.md file:
```markdown
# Sample AGENTS.md file
## Dev environment tips
- Use `pnpm dlx turbo run where <project_name>` to jump to a package instead of scanning with `ls`.
- Run `pnpm install --filter <project_name>` to add the package to your workspace so Vite, ESLint, and TypeScript can see it.
- Use `pnpm create vite@latest <project_name> -- --template react-ts` to spin up a new React + Vite package with TypeScript checks ready.
- Check the name field inside each package's package.json to confirm the right name—skip the top-level one.
## Testing instructions
- Find the CI plan in the .github/workflows folder.
- Run `pnpm turbo run test --filter <project_name>` to run every check defined for that package.
- From the package root you can just call `pnpm test`. The commit should pass all tests before you merge.
- To focus on one step, add the Vitest pattern: `pnpm vitest run -t "<test name>"`.
- Fix any test or type errors until the whole suite is green.
- After moving files or changing imports, run `pnpm lint --filter <project_name>` to be sure ESLint and TypeScript rules still pass.
- Add or update tests for the code you change, even if nobody asked.
## PR instructions
- Title format: [<project_name>] <Title>
- Always run `pnpm lint` and `pnpm test` before committing.
```
## Website
This repository also includes a basic Next.js website hosted at https://agents.md/
that explains the project’s goals in a simple way, and featuring some examples.
### Running the app locally
1. Install dependencies:
```bash
pnpm install
```
2. Start the development server:
```bash
pnpm run dev
```
3. Open your browser and go to http://localhost:3000
## /components/AboutSection.tsx
```tsx path="/components/AboutSection.tsx"
import Section from "@/components/Section";
const AboutSection = () => (
<Section title="About" className="pb-0" center maxWidthClass="max-w-3xl">
<p className="max-w-3xl">
AGENTS.md emerged from collaborative efforts across the AI software
development ecosystem, including{" "}
<a href="https://openai.com/codex/" className="underline hover:no-underline" target="_blank" rel="noopener noreferrer">OpenAI Codex</a>,{" "}
<a href="https://ampcode.com" className="underline hover:no-underline" target="_blank" rel="noopener noreferrer">Amp</a>,{" "}
<a href="https://jules.google" className="underline hover:no-underline" target="_blank" rel="noopener noreferrer">Jules from Google</a>,{" "}
<a href="https://cursor.com" className="underline hover:no-underline" target="_blank" rel="noopener noreferrer">Cursor</a>, and{" "}
<a href="https://factory.ai" className="underline hover:no-underline" target="_blank" rel="noopener noreferrer">Factory</a>.
</p>
<p className="max-w-3xl mt-4">
We’re committed to helping maintain and evolve this as an open format that benefits the entire developer community,
regardless of which coding agent you use.
</p>
<p className="max-w-3xl mt-4">
AGENTS.md is now stewarded by the{" "}
<a href="https://aaif.io" className="underline hover:no-underline">
Agentic AI Foundation
</a>{" "}
under the Linux Foundation.{" "}
<a
href="https://openai.com/index/agentic-ai-foundation/"
className="underline hover:no-underline"
>
Learn more →
</a>
</p>
</Section>
);
export default AboutSection;
```
## /components/CodeExample.tsx
```tsx path="/components/CodeExample.tsx"
import React from "react";
import ClipboardIcon from "./icons/ClipboardIcon";
import CopyIcon from "./icons/CopyIcon";
interface CodeExampleProps {
/** Markdown content to display; falls back to default example if not provided */
code?: string;
/** Optional URL for "View on GitHub" link */
href?: string;
/** If true, render only the code block without the section wrapper */
compact?: boolean;
/** Override Tailwind height classes for the <pre> block */
heightClass?: string;
/**
* When true, vertically center the content and copy button – useful for
* single-line shell commands shown inside a short container (e.g. FAQ).
*/
centerVertically?: boolean;
}
export const HERO_AGENTS_MD = `# AGENTS.md
## Setup commands
- Install deps: \`pnpm install\`
- Start dev server: \`pnpm dev\`
- Run tests: \`pnpm test\`
## Code style
- TypeScript strict mode
- Single quotes, no semicolons
- Use functional patterns where possible`;
const EXAMPLE_AGENTS_MD = `# Sample AGENTS.md file
## Dev environment tips
- Use \`pnpm dlx turbo run where <project_name>\` to jump to a package instead \
of scanning with \`ls\`.
- Run \`pnpm install --filter <project_name>\` to add the package to your \
workspace so Vite, ESLint, and TypeScript can see it.
- Use \`pnpm create vite@latest <project_name> -- --template react-ts\` to \
spin up a new React + Vite package with TypeScript checks ready.
- Check the name field inside each package's package.json to confirm the \
right name—skip the top-level one.
## Testing instructions
- Find the CI plan in the .github/workflows folder.
- Run \`pnpm turbo run test --filter <project_name>\` to run every check \
defined for that package.
- From the package root you can just call \`pnpm test\`. The commit should \
pass all tests before you merge.
- To focus on one step, add the Vitest pattern: \`pnpm vitest run -t "<test \
name>"\`.
- Fix any test or type errors until the whole suite is green.
- After moving files or changing imports, run \`pnpm lint --filter \
<project_name>\` to be sure ESLint and TypeScript rules still pass.
- Add or update tests for the code you change, even if nobody asked.
## PR instructions
- Title format: [<project_name>] <Title>
- Always run \`pnpm lint\` and \`pnpm test\` before committing.`;
/**
* Very lightly highlight the Markdown without fully parsing it.
*/
function parseMarkdown(md: string): React.ReactNode[] {
const lines = md.split("\n");
const elements: React.ReactNode[] = [];
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
// Handle headers
if (line.startsWith("# ") || line.startsWith("## ") || line.startsWith("### ")) {
elements.push(
<div key={i} className="font-bold">
{line}
</div>
);
} else if (line.startsWith("- ")) {
// Handle list items with inline code
elements.push(
<div key={i}>
{renderLineWithInlineCode(line)}
</div>
);
} else if (line.trim() === "") {
// Handle empty lines
elements.push(<div key={i}> </div>);
} else {
// Handle regular lines with inline code
elements.push(
<div key={i}>
{renderLineWithInlineCode(line)}
</div>
);
}
}
return elements;
}
/**
* Render a line with inline code highlighting
*/
function renderLineWithInlineCode(line: string): React.ReactNode {
const parts = line.split(/(`[^`]+`)/g);
return parts.map((part, index) => {
if (part.startsWith("`") && part.endsWith("`")) {
// This is inline code
return (
<span key={index} className="bg-gray-200 dark:bg-gray-800 px-1 rounded">
{part}
</span>
);
}
// Regular text
return part;
});
}
/**
* Markdown block for AGENTS.md examples.
*/
export default function CodeExample({
code,
href,
compact = false,
heightClass,
centerVertically = false,
}: CodeExampleProps) {
const md = code ?? EXAMPLE_AGENTS_MD;
const [copied, setCopied] = React.useState(false);
const copyToClipboard = async () => {
try {
await navigator.clipboard.writeText(md);
setCopied(true);
setTimeout(() => setCopied(false), 2000);
} catch (err) {
console.error("Failed to copy to clipboard:", err);
}
};
const content = (
<>
<div className="relative">
<button
onClick={copyToClipboard}
className={`absolute right-3 p-2 rounded-md bg-transparent text-gray-800 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors z-10 cursor-pointer ${
centerVertically ? "top-1/2 -translate-y-1/2" : "top-3"
}`}
aria-label="Copy to clipboard"
>
{copied ? (
<svg
className="w-4 h-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M5 13l4 4L19 7"
/>
</svg>
) : (
<CopyIcon className="w-4 h-4" />
)}
</button>
<pre
className={`relative rounded-lg bg-white dark:bg-black text-gray-800 dark:text-gray-100 text-xs leading-6 overflow-x-auto p-4 ${
centerVertically ? "flex items-center" : ""
} ${
heightClass
? heightClass
: compact
? ""
: "min-h-[250px] max-h-[500px]"
} border border-gray-200 dark:border-gray-700 shadow-sm`}
>
<code>
{parseMarkdown(md)}
</code>
</pre>
</div>
</>
);
if (compact) {
return <div className="w-full">{content}</div>;
}
return (
<section className="px-6 pt-10 pb-24 bg-gray-50 dark:bg-gray-900/40">
<div className="max-w-5xl mx-auto flex flex-col gap-6">
<h2 className="text-3xl font-semibold tracking-tight">
AGENTS.md in action
</h2>
{content}
</div>
</section>
);
}
```
## /components/CompatibilitySection.tsx
```tsx path="/components/CompatibilitySection.tsx"
import React, { useEffect, useMemo, useRef, useState } from "react";
import Image from "next/image";
import Section from "@/components/Section";
type AgentEntry = {
name: string;
url: string;
from?: string;
imageSrc?: string;
imageSrcLight?: string;
imageSrcDark?: string;
};
const agents: AgentEntry[] = [
{
name: "Codex",
url: "https://openai.com/codex/",
from: "OpenAI",
imageSrc: "/logos/codex.svg",
},
{
name: "Amp",
url: "https://ampcode.com",
imageSrc: "/logos/amp.svg",
},
{
name: "Jules",
url: "https://jules.google",
from: "Google",
imageSrc: "/logos/jules.svg",
},
{
name: "Cursor",
url: "https://cursor.com",
imageSrc: "/logos/cursor.svg",
},
{
name: "Factory",
url: "https://factory.ai",
imageSrc: "/logos/factory.svg",
},
{
name: "RooCode",
url: "https://roocode.com",
imageSrc: "/logos/roocode.svg",
},
{
name: "Aider",
url: "https://aider.chat/docs/usage/conventions.html#always-load-conventions",
imageSrc: "/logos/aider.svg",
},
{
name: "Gemini CLI",
url: "https://github.com/google-gemini/gemini-cli/blob/main/docs/get-started/configuration.md#available-settings-in-settingsjson",
from: "Google",
imageSrc: "/logos/gemini.svg",
},
{
name: "goose",
url: "https://github.com/block/goose",
imageSrc: "/logos/goose.svg",
},
{
name: "Kilo Code",
url: "https://kilocode.ai/",
imageSrc: "/logos/kilo-code.svg",
},
{
name: "opencode",
url: "https://opencode.ai/docs/rules/",
imageSrc: "/logos/opencode.svg",
},
{
name: "Phoenix",
url: "https://phoenix.new/",
imageSrc: "/logos/phoenix.svg",
},
{
name: "Zed",
url: "https://zed.dev/docs/ai/rules",
imageSrc: "/logos/zed.svg",
},
{
name: "Semgrep",
url: "https://semgrep.dev",
imageSrc: "/logos/semgrep.svg",
},
{
name: "Warp",
url: "https://docs.warp.dev/knowledge-and-collaboration/rules#project-scoped-rules-1",
imageSrc: "/logos/warp.svg",
},
{
name: "Coding agent",
from: "GitHub Copilot",
url: "https://gh.io/coding-agent-docs",
imageSrc: "/logos/copilot.svg",
},
{
name: "VS Code",
url: "https://code.visualstudio.com/docs/editor/artificial-intelligence",
imageSrcLight: "/logos/vscode-light.svg",
imageSrcDark: "/logos/vscode-dark.svg",
},
{
name: "Ona",
url: "https://ona.com",
imageSrcLight: "/logos/ona-light.svg",
imageSrcDark: "/logos/ona-dark.svg",
},
{
name: "Devin",
from: "Cognition",
url: "https://devin.ai",
imageSrcLight: "/logos/devin-light.svg",
imageSrcDark: "/logos/devin-dark.svg",
},
{
name: "Windsurf",
from: "Cognition",
url: "https://windsurf.com",
imageSrcLight: "/logos/windsurf-light.svg",
imageSrcDark: "/logos/windsurf-dark.svg",
},
{
name: "Autopilot & Coded Agents",
from: "UiPath",
url: "https://uipath.github.io/uipath-python",
imageSrc: "/logos/uipath.svg",
},
{
name: "Augment Code",
url: "https://docs.augmentcode.com/cli/overview",
imageSrc: "/logos/augment.svg",
},
{
name: "Junie",
from: "JetBrains",
url: "https://jetbrains.com/junie",
imageSrc: "/logos/junie.svg",
},
];
const shuffleAgents = (items: AgentEntry[]) => {
const copy = [...items];
for (let i = copy.length - 1; i > 0; i -= 1) {
const j = Math.floor(Math.random() * (i + 1));
[copy[i], copy[j]] = [copy[j], copy[i]];
}
return copy;
};
type LogoItemProps = AgentEntry & {
variant?: "marquee" | "grid";
};
function LogoItem({
name,
url,
from,
imageSrc,
imageSrcLight,
imageSrcDark,
variant = "marquee",
}: LogoItemProps) {
const baseClasses =
variant === "grid"
? "flex h-full w-full min-w-0 items-center gap-4"
: "flex h-20 min-w-[280px] items-center gap-4 pr-10";
return (
<a
href={url}
target="_blank"
rel="noopener noreferrer"
className={baseClasses}
>
<div className="flex h-16 w-16 items-center justify-center">
{imageSrcLight && imageSrcDark ? (
<>
<Image
src={imageSrcLight}
alt={`${name} logo`}
width={64}
height={64}
className="block h-16 w-16 dark:hidden"
/>
<Image
src={imageSrcDark}
alt={`${name} logo`}
width={64}
height={64}
className="hidden h-16 w-16 dark:block"
/>
</>
) : imageSrc ? (
<span
aria-hidden
className="block h-16 w-16 bg-gray-700 dark:bg-gray-400"
style={{
WebkitMaskImage: `url(${imageSrc})`,
maskImage: `url(${imageSrc})`,
WebkitMaskRepeat: "no-repeat",
maskRepeat: "no-repeat",
WebkitMaskSize: "contain",
maskSize: "contain",
WebkitMaskPosition: "center",
maskPosition: "center",
}}
/>
) : null}
</div>
<div className="flex flex-col justify-center text-left">
<span className="text-xl font-semibold leading-tight text-gray-700 dark:text-gray-300">
{name}
</span>
{from ? (
<span className="text-sm text-gray-500 dark:text-gray-400">
<span className="font-light">from</span>{" "}
<span className="font-semibold">{from}</span>
</span>
) : null}
</div>
</a>
);
}
function LogoMarqueeRow({
agents,
isActive,
duration,
offset,
}: {
agents: AgentEntry[];
isActive: boolean;
duration: number;
offset?: number;
}) {
const doubledAgents = useMemo(() => [...agents, ...agents], [agents]);
if (doubledAgents.length === 0) {
return null;
}
const trackStyle = {
animationPlayState: isActive ? "running" : "paused",
animationDelay: offset ? `${offset}s` : undefined,
"--marquee-duration": `${duration}s`,
} as React.CSSProperties;
return (
<div className="w-full overflow-hidden">
<div
className="logo-marquee-track flex items-center gap-8 py-3"
style={trackStyle}
>
{doubledAgents.map((agent, index) => (
<LogoItem key={`${agent.name}-${index}`} {...agent} />
))}
</div>
</div>
);
}
export default function CompatibilitySection() {
const containerRef = useRef<HTMLDivElement | null>(null);
const [isInView, setIsInView] = useState(false);
const [shuffledAgents, setShuffledAgents] = useState<AgentEntry[]>(agents);
const [showGrid, setShowGrid] = useState(false);
useEffect(() => {
setShuffledAgents(shuffleAgents(agents));
}, []);
useEffect(() => {
if (showGrid) {
setIsInView(false);
return;
}
const node = containerRef.current;
if (!node) {
return;
}
const observer = new IntersectionObserver(
([entry]) => {
setIsInView(entry.isIntersecting && entry.intersectionRatio > 0);
},
{
threshold: 0,
}
);
observer.observe(node);
if (typeof window !== "undefined") {
const rect = node.getBoundingClientRect();
const isVisible =
rect.bottom >= 0 &&
rect.right >= 0 &&
rect.left <= window.innerWidth &&
rect.top <= window.innerHeight;
setIsInView(isVisible);
}
return () => {
observer.disconnect();
};
}, [showGrid]);
const [topRow, bottomRow] = useMemo(() => {
const first: AgentEntry[] = [];
const second: AgentEntry[] = [];
shuffledAgents.forEach((agent, index) => {
if (index % 2 === 0) {
first.push(agent);
} else {
second.push(agent);
}
});
return [first, second];
}, [shuffledAgents]);
return (
<Section
id="compatibility"
title="One AGENTS.md works across many agents"
className={`py-12 px-0 ${showGrid ? "" : "!px-0"}`}
center
maxWidthClass={showGrid ? "max-w-3xl" : "max-w-none"}
>
<div className="mx-auto max-w-3xl text-center">
<p className="text-xl font-light text-gray-500 dark:text-gray-400 px-8">
Your agent definitions are compatible with a growing ecosystem of AI
coding agents and tools:
</p>
</div>
{showGrid ? (
<div
id="supported-agents"
className="mt-6 grid w-full grid-cols-2 gap-8 md:grid-cols-3"
>
{agents.map((agent) => (
<LogoItem key={agent.name} {...agent} variant="grid" />
))}
</div>
) : (
<div
ref={containerRef}
className="mt-6 flex w-full flex-col gap-6"
id="supported-agents"
>
<LogoMarqueeRow agents={topRow} isActive={isInView} duration={70} />
<LogoMarqueeRow
agents={bottomRow}
isActive={isInView}
duration={80}
offset={-35}
/>
</div>
)}
<div className="mt-4 text-center">
<button
type="button"
onClick={() => setShowGrid((prev) => !prev)}
className="mt-4 text-base font-medium underline hover:no-underline cursor-pointer"
aria-controls="supported-agents"
aria-expanded={showGrid}
>
{showGrid ? "Collapse supported agents" : "View all supported agents"}
</button>
</div>
</Section>
);
}
```
## /components/ExampleListSection.tsx
```tsx path="/components/ExampleListSection.tsx"
import React from "react";
// GitHub language colors for badge backgrounds
const LANG_BG_COLORS: Record<string, string> = {
"TypeScript": "#3178c6",
"Java": "#b07219",
"Python": "#3572a5",
"Rust": "#dea584",
"C++": "#f34b7d",
};
interface RepoCardProps {
/** e.g. "openai/codex" */
name: string;
/** Short 1-2 line summary */
description: string;
/** Primary language */
language: string;
}
/** Hard-coded examples used for the marketing page. */
const REPOS: RepoCardProps[] = [
{
name: "openai/codex",
description: "General-purpose CLI tooling for AI coding agents.",
language: "Rust",
},
{
name: "apache/airflow",
description:
"Platform to programmatically author, schedule, and monitor workflows.",
language: "Python",
},
{
name: "temporalio/sdk-java",
description:
"Java SDK for Temporal, workflow orchestration defined in code.",
language: "Java",
},
{
name: "PlutoLang/Pluto",
description: "A superset of Lua 5.4 with a focus on general-purpose programming.",
language: "C++",
},
];
interface ExampleListSectionProps {
contributorsByRepo?: Record<string, { avatars: string[]; total: number }>;
standalone?: boolean; // if false wraps with its own section
}
const InnerGrid = ({
contributorsByRepo = {},
}: {
contributorsByRepo: Record<string, { avatars: string[]; total: number }>;
}) => (
<>
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
{REPOS.map((repo, key) => (
<ExampleCard
key={repo.name}
repo={repo}
avatars={contributorsByRepo[repo.name]?.avatars ?? []}
hideOnSmall={key > 3}
hideOnMedium={key > 2}
totalContributors={
contributorsByRepo[repo.name]?.total ??
contributorsByRepo[repo.name]?.avatars.length ??
0
}
/>
))}
</div>
<div className="flex justify-center mt-6">
<a
href="https://github.com/search?q=path%3AAGENTS.md+NOT+is%3Afork+NOT+is%3Aarchived&type=code"
className="text-base font-medium underline hover:no-underline"
>
View 60k+ examples on GitHub
</a>
</div>
</>
);
const ExampleListSection = ({
contributorsByRepo = {},
standalone = false,
}: ExampleListSectionProps) => {
if (standalone) {
return (
<div className="max-w-6xl mx-auto">
<InnerGrid contributorsByRepo={contributorsByRepo} />
</div>
);
}
return (
<section className="px-6 pb-12 -mt-36">
<div className="max-w-6xl mx-auto">
<h2 className="text-3xl font-semibold mb-6">Who uses AGENTS.md?</h2>
<InnerGrid contributorsByRepo={contributorsByRepo} />
</div>
</section>
);
};
interface ExampleCardPropsExtended {
repo: RepoCardProps;
avatars?: string[];
totalContributors?: number;
hideOnSmall?: boolean;
hideOnMedium?: boolean;
}
function ExampleCard({
repo,
avatars = [],
totalContributors = 0,
hideOnSmall = false,
hideOnMedium = false,
}: ExampleCardPropsExtended) {
// Show top 3 contributors; ensure highest-ranked appears rightmost.
const orderedAvatars = avatars.slice(0, 3).reverse();
// Badge background color based on GitHub language colors
const badgeBg = LANG_BG_COLORS[repo.language] ?? "#6b7280";
return (
<a
href={`https://github.com/${repo.name}/blob/-/AGENTS.md`}
target="_blank"
rel="noopener noreferrer"
className={`lg:aspect-video bg-white dark:bg-black border border-gray-200 dark:border-gray-700 rounded-lg shadow-sm flex flex-col justify-between p-4 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors ${
hideOnSmall
? "hidden lg:flex"
: hideOnMedium
? "flex md:hidden lg:flex"
: ""
}`}
>
<div>
<h3
className="font-semibold text-lg leading-snug truncate"
title={repo.name}
>
{repo.name}
</h3>
<p className="mt-1 text-sm text-gray-600 dark:text-gray-400">
{repo.description}
</p>
</div>
<div className="flex items-end justify-between mt-4">
<span
className="text-xs font-semibold px-2 py-0.5 rounded"
style={{ backgroundColor: badgeBg, color: "#fff" }}
>
{repo.language}
</span>
<div className="flex items-center justify-center">
<div className="flex items-center justify-center -space-x-2">
{orderedAvatars.length > 0
? orderedAvatars.map((url, i) => (
// eslint-disable-next-line @next/next/no-img-element
<img
key={i}
src={url}
alt="Contributor avatar"
className="w-6 h-6 rounded-full ring-2 ring-white dark:ring-gray-900 object-cover block shrink-0"
/>
))
: Array.from({ length: 3 }).map((_, i) => (
<span
key={i}
aria-hidden
className="w-6 h-6 rounded-full bg-gray-300 dark:bg-gray-700 ring-2 ring-white dark:ring-gray-900 block shrink-0"
/>
))}
</div>
<span className="ml-2 text-xs font-semibold px-2 py-0.5 rounded bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 translate-y-[1px]">
+ {totalContributors}
</span>
</div>
</div>
</a>
);
}
export default ExampleListSection;
```
## /components/ExamplesSection.tsx
```tsx path="/components/ExamplesSection.tsx"
import React from "react";
import Section from "@/components/Section";
import CodeExample from "@/components/CodeExample";
import ExampleListSection from "@/components/ExampleListSection";
interface ExamplesSectionProps {
contributorsByRepo: Record<string, { avatars: string[]; total: number }>;
}
export default function ExamplesSection({ contributorsByRepo }: ExamplesSectionProps) {
return (
<Section id="examples" title="Examples" className="py-12" center>
{/* Wide code example */}
<div className="mb-4">
<CodeExample compact />
</div>
{/* Repo cards */}
<ExampleListSection contributorsByRepo={contributorsByRepo} standalone />
</Section>
);
}
```
## /components/FAQSection.tsx
```tsx path="/components/FAQSection.tsx"
import React from "react";
import Section from "@/components/Section";
import CodeExample from "@/components/CodeExample";
interface FAQItem {
question: string;
answer: React.ReactNode;
}
export default function FAQ() {
const faqItems: FAQItem[] = [
{
question: "Are there required fields?",
answer:
"No. AGENTS.md is just standard Markdown. Use any headings you like; the agent simply parses the text you provide.",
},
{
question: "What if instructions conflict?",
answer:
"The closest AGENTS.md to the edited file wins; explicit user chat prompts override everything.",
},
{
question: "Will the agent run testing commands found in AGENTS.md automatically?",
answer:
"Yes—if you list them. The agent will attempt to execute relevant programmatic checks and fix failures before finishing the task.",
},
{
question: "Can I update it later?",
answer: "Absolutely. Treat AGENTS.md as living documentation.",
},
{
question: "How do I migrate existing docs to AGENTS.md?",
answer: (
<>
<p className="mb-2">
Rename existing files to AGENTS.md and create symbolic links for backward compatibility:
</p>
<div className="w-full flex justify-center">
<CodeExample
code="mv AGENT.md AGENTS.md && ln -s AGENTS.md AGENT.md"
compact
heightClass="min-h-[48px]"
centerVertically
/>
</div>
</>
),
},
{
question: "How do I configure Aider?",
answer: (
<>
<p className="mb-2">
Configure Aider to use AGENTS.md in <code>.aider.conf.yml</code>:
</p>
<div className="w-full flex justify-center">
<CodeExample
code="read: AGENTS.md"
compact
heightClass="min-h-[48px]"
centerVertically
/>
</div>
</>
),
},
{
question: "How do I configure Gemini CLI?",
answer: (
<>
<p className="mb-2">
Configure Gemini CLI to use AGENTS.md in <code>.gemini/settings.json</code>:
</p>
<div className="w-full flex justify-center">
<CodeExample
code='{
"context": {
"fileName": "AGENTS.md"
},
}'
compact
heightClass="min-h-[48px]"
centerVertically
/>
</div>
</>
),
},
];
return (
<Section
id="faq"
title="FAQ"
className="py-20"
center
maxWidthClass="max-w-3xl"
>
<div className="space-y-8 max-w-4xl mx-auto">
{faqItems.map((item, index) => (
<div key={index}>
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-2">
{item.question}
</h3>
<div className="text-gray-600 dark:text-gray-400 leading-relaxed">
{item.answer}
</div>
</div>
))}
</div>
</Section>
);
}
```
## /components/Footer.tsx
```tsx path="/components/Footer.tsx"
import React from "react";
export default function Footer() {
return (
<footer className="px-6 py-12 text-center text-sm text-gray-600 dark:text-gray-400 mt-24 bg-gray-50 dark:bg-gray-900/40 border-t border-gray-100 dark:border-gray-800">
<p>
Copyright © AGENTS.md a Series of LF Projects, LLC
<br />
For web site terms of use, trademark policy and other project policies please see{" "}
<a href="https://lfprojects.org" target="_blank" className="underline hover:no-underline">
https://lfprojects.org
</a>
.
</p>
</footer>
);
}
```
## /components/Hero.tsx
```tsx path="/components/Hero.tsx"
import React from "react";
import CodeExample, { HERO_AGENTS_MD } from "@/components/CodeExample";
import GitHubIcon from "@/components/icons/GitHubIcon";
export default function Hero() {
return (
<header className="px-6 py-20 bg-gray-50 dark:bg-gray-900/40 border-b border-gray-100 dark:border-gray-800">
<div className="max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-10 items-start">
{/*
On large screens we want the primary CTA buttons to align with the
bottom edge of the code block rendered in the right column. Making
the left column a full-height flex container and pushing the CTA row
to the bottom (via `lg:justify-between`) achieves this without
disturbing the natural flow on small screens where the layout stacks
vertically.
*/}
<div className="flex flex-col items-start text-left sm:items-start max-w-prose">
<h1 className="text-5xl md:text-6xl font-bold tracking-tight">AGENTS.md</h1>
<p className="mt-2 text-lg leading-relaxed text-gray-700 dark:text-gray-300">
A simple, open format for guiding coding agents,{" "}
<br className="hidden sm:block" />
used by over{" "}
<a
href="https://github.com/search?q=path%3AAGENTS.md+NOT+is%3Afork+NOT+is%3Aarchived&type=code"
target="_blank"
rel="noopener noreferrer"
className="underline hover:no-underline"
>
60k open-source projects
</a>
.
</p>
<p className="mt-3 text-lg leading-relaxed text-gray-700 dark:text-gray-300 pr-4">
Think of AGENTS.md as a <strong>README for agents</strong>: a dedicated,
predictable place to provide the context and instructions to help AI coding agents work on your project.
</p>
<div className="mt-6 flex gap-4 flex-col sm:flex-row w-full sm:w-auto justify-center sm:justify-start">
{/* Primary CTA — scroll to the Examples section */}
<a
href="#examples"
className="inline-block px-5 py-3 rounded-full bg-black text-white dark:bg-white dark:text-black text-sm font-medium text-center hover:opacity-80"
>
Explore Examples
</a>
{/* Secondary CTA — view on GitHub */}
<a
href="https://github.com/agentsmd/agents.md"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-2 px-5 py-3 rounded-full border border-gray-300 dark:border-gray-600 text-sm font-medium text-gray-900 dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-800"
>
<GitHubIcon className="w-4 h-4 text-current" />
View on GitHub
</a>
</div>
</div>
<div className="w-full md:max-w-none">
<CodeExample
compact
heightClass="min-h-[160px] max-h-[300px]"
code={HERO_AGENTS_MD}
href="https://github.com/openai/codex/blob/main/AGENTS.md"
/>
</div>
</div>
</header>
);
}
```
## /components/HowToUseSection.tsx
```tsx path="/components/HowToUseSection.tsx"
import Section from "@/components/Section";
import React from "react";
export default function HowToUseSection() {
const steps = [
{
title: "Add AGENTS.md",
body: (
<>
Create an AGENTS.md file at the root of the repository. Most
coding agents can even scaffold one for you if you ask nicely.
</>
),
},
{
title: "Cover what matters",
body: (
<>
<p className="mb-2">Add sections that help an agent work effectively with your project. Popular choices:</p>
<ul className="list-disc list-inside ml-4 space-y-1">
<li>Project overview</li>
<li>Build and test commands</li>
<li>Code style guidelines</li>
<li>Testing instructions</li>
<li>Security considerations</li>
</ul>
</>
),
},
{
title: "Add extra instructions",
body: "Commit messages or pull request guidelines, security gotchas, large datasets, deployment steps: anything you’d tell a new teammate belongs here too.",
},
{
title: "Large monorepo? Use nested AGENTS.md files for subprojects",
body: (
<>
Place another AGENTS.md inside each package. Agents automatically read the nearest file in the directory tree, so the closest one takes precedence and every subproject can ship tailored instructions. For example, at time of writing the main OpenAI repo has 88 AGENTS.md files.
</>
),
},
];
return (
<Section
title="How to use AGENTS.md?"
className="py-12"
center
maxWidthClass="max-w-3xl"
>
<div className="space-y-6 text-left">
{steps.map((s, idx) => (
<div key={idx}>
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-2">
{idx + 1}. {s.title}
</h3>
<div className="text-gray-700 dark:text-gray-300">
{s.body}
</div>
</div>
))}
</div>
</Section>
);
}
```
## /components/Section.tsx
```tsx path="/components/Section.tsx"
import React from "react";
export type SectionProps = React.PropsWithChildren<{
id?: string;
className?: string;
title: string;
/**
* Center the heading and inner content horizontally (text-center).
*/
center?: boolean;
/**
* Tailwind max-width utility to override the default container width.
* e.g. "max-w-4xl". Defaults to "max-w-6xl".
*/
maxWidthClass?: string;
}>;
export default function Section({
className = "",
id,
title,
children,
center = false,
maxWidthClass = "max-w-6xl",
}: SectionProps) {
const containerClasses = `${maxWidthClass} mx-auto flex flex-col gap-6`;
return (
<section id={id} className={className + " px-6"}>
<div className={containerClasses}>
<h2
className={`text-3xl font-semibold tracking-tight ${center ? "mx-auto text-center" : ""}`}
>
{title}
</h2>
{/* prose class is useful for markdown-like content. For centered sections we don't want automatic left
margin on headings, so we keep it unconditionally; centering is handled by parent flex alignment. */}
<div className="prose prose-neutral dark:prose-invert max-w-none">
{children}
</div>
</div>
</section>
);
}
```
## /components/WhySection.tsx
```tsx path="/components/WhySection.tsx"
import Section from "@/components/Section";
import React from "react";
import ClipboardIcon from "@/components/icons/ClipboardIcon";
import UserIcon from "@/components/icons/UserIcon";
import LinkIcon from "@/components/icons/LinkIcon";
export default function WhySection() {
return (
<Section
id="why"
title="Why AGENTS.md?"
className="pt-24 pb-12"
center
maxWidthClass="max-w-3xl"
>
<div className="space-y-4">
<p className="mb-4">
README.md files are for humans: quick starts, project descriptions,
and contribution guidelines.
</p>
<p className="mb-4">
AGENTS.md complements this by containing the extra, sometimes detailed
context coding agents need: build steps, tests, and conventions that
might clutter a README or aren’t relevant to human contributors.
</p>
<p className="mb-4">We intentionally kept it separate to:</p>
<div className="flex flex-col gap-4">
<div className="flex items-center gap-3">
<ClipboardIcon />
<p>
<span className="font-semibold block">
Give agents a clear, predictable place for instructions.
</span>
</p>
</div>
<div className="flex items-center gap-3">
<UserIcon />
<p>
<span className="font-semibold block">
Keep READMEs concise and focused on human contributors.
</span>
</p>
</div>
<div className="flex items-center gap-3">
<LinkIcon />
<p>
<span className="font-semibold block">
Provide precise, agent-focused guidance that complements
existing README and docs.
</span>
</p>
</div>
</div>
<p>
Rather than introducing another proprietary file, we chose a name and
format that could work for anyone. If you’re building or using
coding agents and find this helpful, feel free to adopt it.
</p>
</div>
</Section>
);
}
```
## /components/icons/ClipboardIcon.tsx
```tsx path="/components/icons/ClipboardIcon.tsx"
import React from "react";
export default function ClipboardIcon({ className = "w-6 h-6 flex-shrink-0" }) {
return (
<svg
className={className}
fill="none"
stroke="currentColor"
strokeWidth={1.8}
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M9 2.25h6a.75.75 0 01.75.75v1.5h1.5A2.25 2.25 0 0120.25 6.75v12A2.25 2.25 0 0118 21h-12a2.25 2.25 0 01-2.25-2.25v-12A2.25 2.25 0 016 4.5h1.5V3a.75.75 0 01.75-.75z"
/>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M9 12h6m-6 4h6"
/>
</svg>
);
}
```
## /components/icons/CopyIcon.tsx
```tsx path="/components/icons/CopyIcon.tsx"
import React from "react";
export default function CopyIcon({ className = "w-4 h-4 flex-shrink-0" }) {
return (
<svg
className={className}
viewBox="0 0 24 24"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<path d="M12.7587 2H16.2413C17.0463 1.99999 17.7106 1.99998 18.2518 2.04419C18.8139 2.09012 19.3306 2.18868 19.816 2.43597C20.5686 2.81947 21.1805 3.43139 21.564 4.18404C21.8113 4.66937 21.9099 5.18608 21.9558 5.74817C22 6.28936 22 6.95372 22 7.75868V11.2413C22 12.0463 22 12.7106 21.9558 13.2518C21.9099 13.8139 21.8113 14.3306 21.564 14.816C21.1805 15.5686 20.5686 16.1805 19.816 16.564C19.3306 16.8113 18.8139 16.9099 18.2518 16.9558C17.8906 16.9853 17.4745 16.9951 16.9984 16.9984C16.9951 17.4745 16.9853 17.8906 16.9558 18.2518C16.9099 18.8139 16.8113 19.3306 16.564 19.816C16.1805 20.5686 15.5686 21.1805 14.816 21.564C14.3306 21.8113 13.8139 21.9099 13.2518 21.9558C12.7106 22 12.0463 22 11.2413 22H7.75868C6.95372 22 6.28936 22 5.74818 21.9558C5.18608 21.9099 4.66937 21.8113 4.18404 21.564C3.43139 21.1805 2.81947 20.5686 2.43597 19.816C2.18868 19.3306 2.09012 18.8139 2.04419 18.2518C1.99998 17.7106 1.99999 17.0463 2 16.2413V12.7587C1.99999 11.9537 1.99998 11.2894 2.04419 10.7482C2.09012 10.1861 2.18868 9.66937 2.43597 9.18404C2.81947 8.43139 3.43139 7.81947 4.18404 7.43598C4.66937 7.18868 5.18608 7.09012 5.74817 7.04419C6.10939 7.01468 6.52548 7.00487 7.00162 7.00162C7.00487 6.52548 7.01468 6.10939 7.04419 5.74817C7.09012 5.18608 7.18868 4.66937 7.43598 4.18404C7.81947 3.43139 8.43139 2.81947 9.18404 2.43597C9.66937 2.18868 10.1861 2.09012 10.7482 2.04419C11.2894 1.99998 11.9537 1.99999 12.7587 2ZM9.00176 7L11.2413 7C12.0463 6.99999 12.7106 6.99998 13.2518 7.04419C13.8139 7.09012 14.3306 7.18868 14.816 7.43598C15.5686 7.81947 16.1805 8.43139 16.564 9.18404C16.8113 9.66937 16.9099 10.1861 16.9558 10.7482C17 11.2894 17 11.9537 17 12.7587V14.9982C17.4455 14.9951 17.7954 14.9864 18.089 14.9624C18.5274 14.9266 18.7516 14.8617 18.908 14.782C19.2843 14.5903 19.5903 14.2843 19.782 13.908C19.8617 13.7516 19.9266 13.5274 19.9624 13.089C19.9992 12.6389 20 12.0566 20 11.2V7.8C20 6.94342 19.9992 6.36113 19.9624 5.91104C19.9266 5.47262 19.8617 5.24842 19.782 5.09202C19.5903 4.7157 19.2843 4.40973 18.908 4.21799C18.7516 4.1383 18.5274 4.07337 18.089 4.03755C17.6389 4.00078 17.0566 4 16.2 4H12.8C11.9434 4 11.3611 4.00078 10.911 4.03755C10.4726 4.07337 10.2484 4.1383 10.092 4.21799C9.7157 4.40973 9.40973 4.7157 9.21799 5.09202C9.1383 5.24842 9.07337 5.47262 9.03755 5.91104C9.01357 6.20463 9.00489 6.55447 9.00176 7ZM5.91104 9.03755C5.47262 9.07337 5.24842 9.1383 5.09202 9.21799C4.7157 9.40973 4.40973 9.7157 4.21799 10.092C4.1383 10.2484 4.07337 10.4726 4.03755 10.911C4.00078 11.3611 4 11.9434 4 12.8V16.2C4 17.0566 4.00078 17.6389 4.03755 18.089C4.07337 18.5274 4.1383 18.7516 4.21799 18.908C4.40973 19.2843 4.7157 19.5903 5.09202 19.782C5.24842 19.8617 5.47262 19.9266 5.91104 19.9624C6.36113 19.9992 6.94342 20 7.8 20H11.2C12.0566 20 12.6389 19.9992 13.089 19.9624C13.5274 19.9266 13.7516 19.8617 13.908 19.782C14.2843 19.5903 14.5903 19.2843 14.782 18.908C14.8617 18.7516 14.9266 18.5274 14.9624 18.089C14.9992 17.6389 15 17.0566 15 16.2V12.8C15 11.9434 14.9992 11.3611 14.9624 10.911C14.9266 10.4726 14.8617 10.2484 14.782 10.092C14.5903 9.7157 14.2843 9.40973 13.908 9.21799C13.7516 9.1383 13.5274 9.07337 13.089 9.03755C12.6389 9.00078 12.0566 9 11.2 9H7.8C6.94342 9 6.36113 9.00078 5.91104 9.03755Z" />
</svg>
);
}
```
## /components/icons/GitHubIcon.tsx
```tsx path="/components/icons/GitHubIcon.tsx"
import React from "react";
interface GitHubIconProps {
className?: string;
}
// The path data is the official GitHub mark (see https://github.com/logos).
export default function GitHubIcon({ className = "w-4 h-4" }: GitHubIconProps) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 98 96"
className={className}
aria-hidden="true"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"
fill="currentColor"
/>
</svg>
);
}
```
## /components/icons/LinkIcon.tsx
```tsx path="/components/icons/LinkIcon.tsx"
import React from "react";
export default function LinkIcon({ className = "w-6 h-6 flex-shrink-0" }) {
return (
<svg
className={className}
fill="none"
stroke="currentColor"
strokeWidth={1.8}
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M13.828 10.172a4 4 0 015.657 5.656l-3.535 3.535a4 4 0 01-5.657-5.656l1.414-1.415"
/>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M10.172 13.828a4 4 0 01-5.657-5.656l3.535-3.535a4 4 0 015.657 5.656l-1.414 1.415"
/>
</svg>
);
}
```
## /components/icons/UserIcon.tsx
```tsx path="/components/icons/UserIcon.tsx"
import React from "react";
export default function UserIcon({ className = "w-6 h-6 flex-shrink-0" }) {
return (
<svg
className={className}
fill="none"
stroke="currentColor"
strokeWidth={1.8}
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4z"
/>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M4 20v-1a4 4 0 014-4h8a4 4 0 014 4v1"
/>
</svg>
);
}
```
## /next.config.ts
```ts path="/next.config.ts"
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
/* config options here */
reactStrictMode: true,
};
export default nextConfig;
```
## /package.json
```json path="/package.json"
{
"name": "agents.md",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@tailwindcss/postcss": "4.1.11",
"@vercel/analytics": "^1.5.0",
"next": "16.1.0",
"react": "19.2.3",
"react-dom": "19.2.3",
"tailwindcss": "4.1.11"
},
"devDependencies": {
"@svgr/webpack": "^8.1.0",
"@types/node": "20",
"@types/react": "19",
"@types/react-dom": "19",
"typescript": "5"
},
"packageManager": "pnpm@9.15.1+sha256.9e534e70afef06374f6126b44bda5760947135ce16a30aef1010e965fb7e3e3e"
}
```
## /pages/_app.tsx
```tsx path="/pages/_app.tsx"
import "@/styles/globals.css";
import type { AppProps } from "next/app";
import Head from "next/head";
import { Analytics } from "@vercel/analytics/next";
export default function App({ Component, pageProps }: AppProps) {
return <>
<Head>
<title>AGENTS.md</title>
<meta name="description" content="AGENTS.md is a simple, open format for guiding coding agents, used by over 60k open-source projects. Think of it as a README for agents." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="AGENTS.md" />
<meta name="twitter:description" content="AGENTS.md is a simple, open format for guiding coding agents. Think of it as a README for agents." />
<meta name="twitter:image" content="https://agents.md/og.png" />
<meta name="twitter:domain" content="agents.md" />
<meta name="twitter:url" content="https://agents.md" />
<meta property="og:type" content="website" />
<meta property="og:title" content="AGENTS.md" />
<meta property="og:description" content="AGENTS.md is a simple, open format for guiding coding agents. Think of it as a README for agents." />
<meta property="og:image" content="https://agents.md/og.png" />
</Head>
<Component {...pageProps} />
<Analytics />
</>;
}
```
## /pages/_document.tsx
```tsx path="/pages/_document.tsx"
import { Html, Head, Main, NextScript } from "next/document";
export default function Document() {
return (
<Html lang="en">
<Head>
<link
rel="icon"
href="/favicon-light.png"
media="(prefers-color-scheme: light)"
/>
<link
rel="icon"
href="/favicon-dark.png"
media="(prefers-color-scheme: dark)"
/>
</Head>
<body className="antialiased">
<Main />
<NextScript />
</body>
</Html>
);
}
```
## /pages/index.tsx
```tsx path="/pages/index.tsx"
import React from "react";
import Hero from "@/components/Hero";
import Footer from "@/components/Footer";
import FAQSection from "@/components/FAQSection";
import HowToUseSection from "@/components/HowToUseSection";
import ExamplesSection from "@/components/ExamplesSection";
import CompatibilitySection from "@/components/CompatibilitySection";
import { GetStaticProps } from "next";
import WhySection from "@/components/WhySection";
import AboutSection from "@/components/AboutSection";
interface LandingPageProps {
contributorsByRepo: Record<string, { avatars: string[]; total: number }>;
}
export default function LandingPage({ contributorsByRepo }: LandingPageProps) {
return (
<div className="flex flex-col min-h-screen items-stretch font-sans">
<main>
<Hero />
<WhySection />
<CompatibilitySection />
<ExamplesSection contributorsByRepo={contributorsByRepo} />
<HowToUseSection />
<div className="flex-1 flex flex-col gap-4 mt-16">
<AboutSection />
<FAQSection />
</div>
</main>
<Footer />
</div>
);
}
// Simple in-memory cache. In production this avoids refetching during
// the Node.js process lifetime, while in development it prevents hitting
// the GitHub rate-limit when you refresh the page a few times.
let cachedContributors:
| {
data: Record<string, { avatars: string[]; total: number }>;
fetchedAt: number; // epoch millis
}
| undefined;
export const getStaticProps: GetStaticProps<LandingPageProps> = async () => {
// List of repositories displayed in ExampleListSection. Keep in sync with
// the REPOS constant in that component.
const repoNames = [
"openai/codex",
"apache/airflow",
"temporalio/sdk-java",
"PlutoLang/Pluto",
];
// If we fetched within the last 12 hours, reuse the cached data.
// This drastically cuts down on unauthenticated GitHub API requests
// during local development (limit: 60 req / hr).
const TWELVE_HOURS_MS = 12 * 60 * 60 * 1000;
const now = Date.now();
if (
cachedContributors &&
now - cachedContributors.fetchedAt < TWELVE_HOURS_MS
) {
return {
props: {
contributorsByRepo: cachedContributors.data,
},
// No need to revalidate until the cache window expires.
// (Next.js will still obey the value, it just determines the earliest
// time a background revalidation *could* run.)
revalidate: 60 * 60, // 1 hour
};
}
const contributorsByRepo: Record<
string,
{ avatars: string[]; total: number }
> = {};
// Build common headers for GitHub API requests. We add the Authorization
// header only when an access token is present. Supplying an empty
// `Authorization` header would prompt GitHub to treat the request as
// unauthenticated, so we include it conditionally.
const baseHeaders: Record<string, string> = {
"User-Agent": "agents-md-site",
Accept: "application/vnd.github+json",
};
if (process.env.GH_AUTH_TOKEN) {
baseHeaders["Authorization"] = `Bearer ${process.env.GH_AUTH_TOKEN}`;
}
for (const fullName of repoNames) {
try {
// Fetch top 3 contributor avatars
const avatarsRes = await fetch(
`https://api.github.com/repos/${fullName}/contributors?per_page=3`,
{
headers: baseHeaders,
}
);
const avatarsData = avatarsRes.ok
? ((await avatarsRes.json()) as Array<{ avatar_url: string }>)
: [];
const avatars = avatarsData.slice(0, 3).map((c) => c.avatar_url);
// Fetch contributor count (using per_page=1 to inspect Link header)
let total = avatarsData.length; // fallback
try {
const countRes = await fetch(
`https://api.github.com/repos/${fullName}/contributors?per_page=1&anon=1`,
{
headers: baseHeaders,
}
);
const link = countRes.headers.get("link");
if (link && /rel="last"/.test(link)) {
const match = link.match(/&?page=(\d+)>; rel="last"/);
if (match?.[1]) {
total = parseInt(match[1], 10);
}
} else {
const oneData = countRes.ok ? ((await countRes.json()) as any[]) : [];
total = oneData.length;
}
} catch {
// ignore errors, keep fallback
console.error(`Error fetching contributors for ${fullName}`);
}
contributorsByRepo[fullName] = {
avatars,
total,
};
} catch {
console.error(`Error fetching contributors for ${fullName}`);
contributorsByRepo[fullName] = { avatars: [], total: 0 };
}
}
cachedContributors = {
data: contributorsByRepo,
fetchedAt: Date.now(),
};
return {
props: {
contributorsByRepo,
},
// Revalidate every 24 hours in production. The in-memory cache prevents
// us from hitting the limit during development between dev server restarts.
revalidate: 60 * 60 * 24,
};
};
```
## /postcss.config.mjs
```mjs path="/postcss.config.mjs"
const config = {
plugins: ["@tailwindcss/postcss"],
};
export default config;
```
## /public/favicon-dark.png
Binary file available at https://raw.githubusercontent.com/openai/agents.md/refs/heads/main/public/favicon-dark.png
## /public/favicon-light.png
Binary file available at https://raw.githubusercontent.com/openai/agents.md/refs/heads/main/public/favicon-light.png
## /public/favicon.ico
Binary file available at https://raw.githubusercontent.com/openai/agents.md/refs/heads/main/public/favicon.ico
## /public/logos/aider.svg
```svg path="/public/logos/aider.svg"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
fill="none"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs1" /><g
id="layer7"><path
style="fill:#000000;stroke-width:0.414419"
d="m 7.7486828,20.892378 c -0.174856,-0.11132 -0.310152,-2.587064 -0.171556,-3.139267 l 0.06608,-0.263308 h 3.2606622 3.260661 l 0.136346,0.436867 c 0.175446,0.562149 0.166827,1.768005 -0.01764,2.468812 l -0.144313,0.548241 -3.112884,0.02668 c -1.8392232,0.01576 -3.1801782,-0.01617 -3.2773552,-0.07803 z m 9.1999202,-0.07081 c -0.206628,-0.248709 -0.271546,-2.001035 -0.10217,-2.757885 l 0.130283,-0.582166 0.950633,0.03155 0.950631,0.03155 v 1.699548 1.699547 l -0.887719,0.03157 c -0.725579,0.02581 -0.915834,-0.0023 -1.041658,-0.153721 z M 5.2374978,17.034848 c -0.157178,-0.450882 -0.153383,-1.588406 0.0082,-2.465493 l 0.128601,-0.697944 h 0.971323 c 0.821953,0 0.983439,0.0295 1.050118,0.191885 0.105365,0.25659 0.101004,2.634376 -0.0055,3.015327 l -0.08433,0.301532 h -0.974017 -0.974019 z m 9.2039312,-0.559291 c -0.09302,-0.656889 -0.09635,-1.099762 -0.01216,-1.617311 0.06377,-0.391994 0.116315,-0.799063 0.11677,-0.904599 7.87e-4,-0.17869 -0.235868,-0.191885 -3.44136,-0.191885 -3.0376772,0 -3.4500112,-0.02038 -3.5087452,-0.17344 -0.110096,-0.286907 -0.07371,-2.482761 0.04842,-2.922544 l 0.113755,-0.409604 3.3669672,-0.02899 3.366965,-0.02899 -0.01747,-0.4385927 c -0.05992,-1.5043745 -0.0563,-2.2497213 0.01294,-2.6595755 l 0.07862,-0.4653999 h 1.024633 c 1.274627,0 1.140967,-0.6302972 1.139342,5.3727631 -0.0016,6.008908 0.133074,5.372765 -1.137655,5.372765 H 14.569524 Z M 7.9015498,6.3314144 C 7.6740118,6.1802449 7.5419298,4.754498 7.6718918,3.8523911 l 0.120461,-0.8361574 h 3.1877832 3.187782 l 0.134654,0.7098321 c 0.166929,0.8799723 0.168821,1.276427 0.0099,2.0679111 L 14.187686,6.4153297 11.10526,6.4136497 C 9.4099248,6.4127255 7.9682698,6.3757197 7.9015808,6.3314137 Z"
id="path1" /></g></svg>
```
## /public/logos/amp.svg
```svg path="/public/logos/amp.svg"
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 11" fill="none">
<path d="M2.37694 9.23487L4.34679 7.23716L5.06365 9.95891L6.10505 9.67408L5.06749 5.72214L1.17831 4.6688L0.901367 5.73289L3.5775 6.45984L1.61584 8.45465L2.37694 9.23487Z" fill="#000"/>
<path d="M8.05742 6.91898L9.09885 6.63416L8.0613 2.68224L4.17209 1.62891L3.89515 2.693L7.17936 3.58514L8.05742 6.91898Z" fill="#000"/>
<path d="M6.56226 8.43797L7.60365 8.15314L6.5661 4.20121L2.67692 3.14787L2.39998 4.21196L5.68416 5.10411L6.56226 8.43797Z" fill="#000"/>
</svg>
```
## /public/logos/augment.svg
```svg path="/public/logos/augment.svg"
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512" fill="none">
<path d="M78.844 464.762c-8.453 0-15.573-1.451-21.359-4.339-5.77-2.888-10.144-7.289-13.076-13.095-2.932-5.807-4.436-12.912-4.436-21.255v-86.028c0-10.605-2.125-18.321-6.329-23.135-4.234-4.798-11.742-7.334-22.507-7.579-3.35 0-6.034-1.253-8.066-3.804C1.008 303.005 0 300.087 0 296.832c0-3.53 1.008-6.448 3.071-8.725 2.048-2.277 4.762-3.53 8.066-3.774 10.765-.26 18.273-2.781 22.507-7.579 4.235-4.798 6.329-12.392 6.329-22.752v-86.028c0-12.637 3.35-22.249 10.005-28.804 6.654-6.555 16.287-9.856 28.866-9.856H181.5c3.862 0 7.042 1.146 9.617 3.408 2.559 2.277 3.862 5.195 3.862 8.694 0 3.301-1.086 6.128-3.257 8.542-2.172 2.414-5.057 3.622-8.671 3.622H87.732c-5.413 0-9.508 1.39-12.316 4.171-2.823 2.781-4.234 7.075-4.234 12.912v86.425c0 7.579-1.551 14.455-4.623 20.644-3.07 6.204-7.181 11.063-12.316 14.623-5.134 3.53-11.137 5.302-18.07 5.302v-1.528c6.933 0 12.936 1.773 18.07 5.303 5.135 3.529 9.245 8.404 12.316 14.623 3.072 6.188 4.623 13.064 4.623 20.643v86.808c0 5.837 1.411 10.115 4.234 12.911 2.823 2.812 6.934 4.172 12.316 4.172h95.318c3.583 0 6.468 1.207 8.671 3.606 2.202 2.414 3.257 5.257 3.257 8.542s-1.272 6.097-3.862 8.511c-2.575 2.414-5.771 3.606-9.617 3.606H78.844v-.092Z" fill="#000"/>
<path d="M330.501 464.768c-3.862 0-7.042-1.207-9.617-3.606-2.575-2.414-3.863-5.256-3.863-8.511 0-3.255 1.086-6.128 3.258-8.542 2.171-2.414 5.057-3.606 8.671-3.606h95.317c5.414 0 9.509-1.36 12.316-4.171 2.823-2.781 4.235-7.075 4.235-12.912v-86.808c0-7.579 1.551-14.455 4.622-20.643 3.071-6.204 7.182-11.063 12.316-14.623 5.134-3.53 11.137-5.303 18.071-5.303v1.528c-6.934 0-12.937-1.772-18.071-5.302-5.134-3.53-9.245-8.404-12.316-14.623-3.071-6.189-4.622-13.065-4.622-20.644v-86.425c0-5.807-1.412-10.1-4.235-12.912-2.823-2.781-6.933-4.171-12.316-4.171H328.95c-3.583 0-6.469-1.208-8.671-3.622-2.172-2.384-3.258-5.241-3.258-8.542 0-3.529 1.272-6.417 3.863-8.694 2.559-2.277 5.755-3.407 9.617-3.407h102.654c12.58 0 22.181 3.3 28.867 9.855 6.685 6.556 10.005 16.167 10.005 28.804v86.028c0 10.36 2.125 17.969 6.328 22.752 4.235 4.798 11.742 7.334 22.507 7.579 3.351.244 6.034 1.497 8.066 3.774 2.063 2.277 3.071 5.195 3.071 8.725 0 3.301-1.008 6.189-3.071 8.695-2.032 2.521-4.762 3.804-8.066 3.804-10.765.245-18.257 2.781-22.507 7.579-4.234 4.798-6.328 12.5-6.328 23.135v86.028c0 8.358-1.474 15.418-4.437 21.255-2.962 5.837-7.305 10.176-13.076 13.095-5.785 2.888-12.905 4.339-21.359 4.339H330.501v.092Z" fill="#000"/>
<path d="M356.885 329.738c18.691 0 33.846-14.929 33.846-33.342 0-18.412-15.155-33.341-33.846-33.341-18.691 0-33.846 14.929-33.846 33.341 0 18.413 15.155 33.342 33.846 33.342Z" fill="#000"/>
<path d="M167.305 329.738c18.691 0 33.846-14.929 33.846-33.342 0-18.412-15.155-33.341-33.846-33.341-18.691 0-33.846 14.929-33.846 33.341 0 18.413 15.155 33.342 33.846 33.342Z" fill="#000"/>
<path d="M244.477 32.846l-2.59 68.135c0 3.82-3.661 5.73-10.983 5.73-7.321 0-10.982-1.91-10.982-5.73-.651-16.976-1.178-30.148-1.613-39.484-.217-9.55-.434-16.35-.651-20.384-.217-4.034-.326-6.479-.326-7.32v-1.268c0-4.874 4.529-7.319 13.572-7.319 9.044 0 13.573 2.552 13.573 7.64Z" fill="#000"/>
<path d="M299.418 32.846l-2.59 68.135c0 3.82-3.661 5.73-10.982 5.73-7.322 0-10.982-1.91-10.982-5.73-.652-16.976-1.179-30.148-1.613-39.484-.218-9.55-.435-16.35-.652-20.384-.217-4.034-.326-6.479-.326-7.32v-1.268c0-4.874 4.53-7.319 13.573-7.319s13.572 2.552 13.572 7.64Z" fill="#000"/>
</svg>
```
## /public/logos/codex.svg
```svg path="/public/logos/codex.svg"
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 11" fill="none">
<path d="M8.33301 5.79411C8.33301 3.95316 6.84062 2.46077 4.99967 2.46077C3.15873 2.46077 1.66634 3.95316 1.66634 5.79411C1.66634 7.63506 3.15873 9.12744 4.99967 9.12744C6.84062 9.12744 8.33301 7.63506 8.33301 5.79411ZM6.66634 6.41911C6.89646 6.41911 7.08301 6.60566 7.08301 6.83577C7.08301 7.06589 6.89646 7.25244 6.66634 7.25244H5.41634C5.18622 7.25244 4.99967 7.06589 4.99967 6.83577C4.99967 6.60566 5.18622 6.41911 5.41634 6.41911H6.66634ZM3.3269 4.39518C3.51191 4.28418 3.74861 4.33339 3.875 4.5026L3.8986 4.538L4.5236 5.57967L4.54964 5.63053C4.59421 5.73493 4.59421 5.85328 4.54964 5.95768L4.5236 6.00855L3.8986 7.05021C3.78019 7.24749 3.52421 7.31142 3.3269 7.19303C3.12963 7.07462 3.0657 6.81864 3.18408 6.62134L3.68009 5.79411L3.18408 4.96688L3.16414 4.92904C3.07439 4.73792 3.14197 4.50618 3.3269 4.39518ZM9.16634 5.79411C9.16634 8.09529 7.30086 9.96078 4.99967 9.96078C2.69849 9.96078 0.833008 8.09529 0.833008 5.79411C0.833008 3.49292 2.69849 1.62744 4.99967 1.62744C7.30086 1.62744 9.16634 3.49292 9.16634 5.79411Z" fill="#000"/>
</svg>
```
## /public/logos/copilot.svg
```svg path="/public/logos/copilot.svg"
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M9.75 14a.75.75 0 0 1 .75.75v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 .75-.75Zm4.5 0a.75.75 0 0 1 .75.75v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 .75-.75Z"></path><path d="M12 2c2.214 0 4.248.657 5.747 1.756.136.099.268.204.397.312.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086l.633 1.478.043.022A4.75 4.75 0 0 1 24 15.222v1.028c0 .529-.309.987-.565 1.293-.28.336-.636.653-.966.918a13.84 13.84 0 0 1-1.299.911l-.024.015-.006.004-.039.025c-.223.135-.45.264-.68.386-.46.245-1.122.571-1.941.895C16.845 21.344 14.561 22 12 22c-2.561 0-4.845-.656-6.479-1.303a19.046 19.046 0 0 1-1.942-.894 14.081 14.081 0 0 1-.535-.3l-.144-.087-.04-.025-.006-.004-.024-.015a13.16 13.16 0 0 1-1.299-.911 6.913 6.913 0 0 1-.967-.918C.31 17.237 0 16.779 0 16.25v-1.028a4.75 4.75 0 0 1 2.626-4.248l.043-.022.633-1.478a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.498 1.132-3.368.397-.406.89-.717 1.474-.952.129-.108.261-.213.397-.312C7.752 2.657 9.786 2 12 2Zm-8 9.654v6.669a17.59 17.59 0 0 0 2.073.98C7.595 19.906 9.686 20.5 12 20.5c2.314 0 4.405-.594 5.927-1.197a17.59 17.59 0 0 0 2.073-.98v-6.669l-.038-.09c-.046.061-.095.12-.145.177-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.544-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.344a4.323 4.323 0 0 1-.355.508C10.704 12.456 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a3.026 3.026 0 0 1-.145-.177Zm6.309-1.092c.445-.547.708-1.334.851-2.301.057-.357.087-.718.09-1.079v-.031c-.001-.762-.166-1.26-.43-1.568l-.008-.01c-.341-.391-1.046-.689-2.533-.529-1.505.163-2.347.537-2.824 1.024-.462.473-.705 1.18-.705 2.32 0 .605.044 1.087.135 1.472.092.384.231.672.423.89.365.413 1.084.75 2.657.75.91 0 1.527-.223 1.964-.564.14-.11.268-.235.38-.374Zm2.504-2.497c.136 1.057.403 1.913.878 2.497.442.545 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.151.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.318-.862-2.824-1.025-1.487-.161-2.192.139-2.533.529-.268.308-.437.808-.438 1.578v.02c.002.299.023.598.063.894Z"></path></svg>
```
## /public/logos/cursor.svg
```svg path="/public/logos/cursor.svg"
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Ebene_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 680 720">
<!-- Generator: Adobe Illustrator 29.6.1, SVG Export Plug-In . SVG Version: 2.1.1 Build 9) -->
<defs>
<style>
.st0 {
fill: #26251e;
}
</style>
</defs>
<g transform="translate(106.635, 93.955)">
<path class="st0"
d="M457.43,125.94L244.42,2.96c-6.84-3.95-15.28-3.95-22.12,0L9.3,125.94c-5.75,3.32-9.3,9.46-9.3,16.11v247.99c0,6.65,3.55,12.79,9.3,16.11l213.01,122.98c6.84,3.95,15.28,3.95,22.12,0l213.01-122.98c5.75-3.32,9.3-9.46,9.3-16.11v-247.99c0-6.65-3.55-12.79-9.3-16.11h-.01ZM444.05,151.99l-205.63,356.16c-1.39,2.4-5.06,1.42-5.06-1.36v-233.21c0-4.66-2.49-8.97-6.53-11.31L24.87,145.67c-2.4-1.39-1.42-5.06,1.36-5.06h411.26c5.84,0,9.49,6.33,6.57,11.39h-.01Z" />
</g>
</svg>
```
## /public/logos/devin-dark.svg
```svg path="/public/logos/devin-dark.svg"
<svg id="DM_Sans" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 680 720" height="100px" width="100px" transform="rotate(0) scale(1, 1)"><defs><style>.cls-1 { fill: #98a1af; stroke-width: 0px; }</style></defs><path class="cls-1" d="M418.73,332.37c9.84-5.68,22.07-5.68,31.91,0l25.49,14.71c.82.48,1.69.8,2.58,1.06.19.06.37.11.55.16.87.21,1.76.34,2.65.35.04,0,.08.02.13.02.1,0,.19-.03.29-.04.83-.02,1.64-.13,2.45-.32.14-.03.28-.05.42-.09.87-.24,1.7-.59,2.5-1.03.08-.04.17-.06.25-.1l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22l-50.97-29.43c-3.65-2.11-8.15-2.11-11.81,0l-50.97,29.43c-.08.04-.13.11-.2.16-.78.48-1.51,1.02-2.15,1.66-.1.1-.18.21-.28.31-.57.6-1.08,1.26-1.51,1.97-.07.12-.15.22-.22.34-.44.77-.77,1.6-1.03,2.47-.05.19-.1.37-.14.56-.22.89-.37,1.81-.37,2.76v29.43c0,11.36-6.11,21.95-15.95,27.63-9.84,5.68-22.06,5.68-31.91,0l-25.49-14.71c-.82-.48-1.69-.8-2.57-1.06-.19-.06-.37-.11-.56-.16-.88-.21-1.76-.34-2.65-.34-.13,0-.26.02-.4.02-.84.02-1.66.13-2.47.32-.13.03-.27.05-.4.09-.87.24-1.71.6-2.51,1.04-.08.04-.16.06-.24.1l-50.97,29.43c-3.65,2.11-5.9,6.01-5.9,10.22v58.86c0,4.22,2.25,8.11,5.9,10.22l50.97,29.43c.08.04.17.06.24.1.8.44,1.64.79,2.5,1.03.14.04.28.06.42.09.81.19,1.62.3,2.45.32.1,0,.19.04.29.04.04,0,.08-.02.13-.02.89,0,1.77-.13,2.65-.35.19-.04.37-.1.56-.16.88-.26,1.75-.59,2.58-1.06l25.49-14.71c9.84-5.68,22.06-5.68,31.91,0,9.84,5.68,15.95,16.27,15.95,27.63v29.43c0,.95.15,1.87.37,2.76.05.19.09.37.14.56.25.86.59,1.69,1.03,2.47.07.12.15.22.22.34.43.71.94,1.37,1.51,1.97.1.1.18.21.28.31.65.63,1.37,1.18,2.15,1.66.07.04.13.11.2.16l50.97,29.43c1.83,1.05,3.86,1.58,5.9,1.58s4.08-.53,5.9-1.58l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22l-50.97-29.43c-.08-.04-.16-.06-.24-.1-.8-.44-1.64-.8-2.51-1.04-.13-.04-.26-.05-.39-.09-.82-.2-1.65-.31-2.49-.33-.13,0-.25-.02-.38-.02-.89,0-1.78.13-2.66.35-.18.04-.36.1-.54.15-.88.26-1.75.59-2.58,1.07l-25.49,14.72c-9.84,5.68-22.07,5.68-31.9,0-9.84-5.68-15.95-16.27-15.95-27.63s6.11-21.95,15.95-27.63Z"/><path class="cls-1" d="M141.09,317.65l50.97,29.43c1.83,1.05,3.86,1.58,5.9,1.58s4.08-.53,5.9-1.58l50.97-29.43c.08-.04.13-.11.2-.16.78-.48,1.51-1.02,2.15-1.66.1-.1.18-.21.28-.31.57-.6,1.08-1.26,1.51-1.97.07-.12.15-.22.22-.34.44-.77.77-1.6,1.03-2.47.05-.19.1-.37.14-.56.22-.89.37-1.81.37-2.76v-29.43c0-11.36,6.11-21.95,15.96-27.63s22.06-5.68,31.91,0l25.49,14.71c.82.48,1.69.8,2.57,1.06.19.06.37.11.56.16.87.21,1.76.34,2.64.35.04,0,.09.02.13.02.1,0,.19-.04.29-.04.83-.02,1.65-.13,2.45-.32.14-.03.28-.05.41-.09.87-.24,1.71-.6,2.51-1.04.08-.04.16-.06.24-.1l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22l-50.97-29.43c-3.65-2.11-8.15-2.11-11.81,0l-50.97,29.43c-.08.04-.13.11-.2.16-.78.48-1.51,1.02-2.15,1.66-.1.1-.18.21-.28.31-.57.6-1.08,1.26-1.51,1.97-.07.12-.15.22-.22.34-.44.77-.77,1.6-1.03,2.47-.05.19-.1.37-.14.56-.22.89-.37,1.81-.37,2.76v29.43c0,11.36-6.11,21.95-15.95,27.63-9.84,5.68-22.07,5.68-31.91,0l-25.49-14.71c-.82-.48-1.69-.8-2.58-1.06-.19-.06-.37-.11-.55-.16-.88-.21-1.76-.34-2.65-.35-.13,0-.26.02-.4.02-.83.02-1.66.13-2.47.32-.13.03-.27.05-.4.09-.87.24-1.71.6-2.51,1.04-.08.04-.16.06-.24.1l-50.97,29.43c-3.65,2.11-5.9,6.01-5.9,10.22v58.86c0,4.22,2.25,8.11,5.9,10.22Z"/><path class="cls-1" d="M396.88,484.35l-50.97-29.43c-.08-.04-.17-.06-.24-.1-.8-.44-1.64-.79-2.51-1.03-.14-.04-.27-.06-.41-.09-.81-.19-1.64-.3-2.47-.32-.13,0-.26-.02-.39-.02-.89,0-1.78.13-2.66.35-.18.04-.36.1-.54.15-.88.26-1.76.59-2.58,1.07l-25.49,14.72c-9.84,5.68-22.06,5.68-31.9,0-9.84-5.68-15.96-16.27-15.96-27.63v-29.43c0-.95-.15-1.87-.37-2.76-.05-.19-.09-.37-.14-.56-.25-.86-.59-1.69-1.03-2.47-.07-.12-.15-.22-.22-.34-.43-.71-.94-1.37-1.51-1.97-.1-.1-.18-.21-.28-.31-.65-.63-1.37-1.18-2.15-1.66-.07-.04-.13-.11-.2-.16l-50.97-29.43c-3.65-2.11-8.15-2.11-11.81,0l-50.97,29.43c-3.65,2.11-5.9,6.01-5.9,10.22v58.86c0,4.22,2.25,8.11,5.9,10.22l50.97,29.43c.08.04.17.06.25.1.8.44,1.63.79,2.5,1.03.14.04.29.06.43.09.8.19,1.61.3,2.43.32.1,0,.2.04.3.04.04,0,.09-.02.13-.02.88,0,1.77-.13,2.64-.34.19-.04.37-.1.56-.16.88-.26,1.75-.59,2.57-1.06l25.49-14.71c9.84-5.68,22.06-5.68,31.91,0,9.84,5.68,15.95,16.27,15.95,27.63v29.43c0,.95.15,1.87.37,2.76.05.19.09.37.14.56.25.86.59,1.69,1.03,2.47.07.12.15.22.22.34.43.71.94,1.37,1.51,1.97.1.1.18.21.28.31.65.63,1.37,1.18,2.15,1.66.07.04.13.11.2.16l50.97,29.43c1.83,1.05,3.86,1.58,5.9,1.58s4.08-.53,5.9-1.58l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22Z"/></svg>
```
## /public/logos/devin-light.svg
```svg path="/public/logos/devin-light.svg"
<svg id="DM_Sans" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 680 720" height="100px" width="100px" transform="rotate(0) scale(1, 1)"><defs><style>.cls-1 { fill: #364152; stroke-width: 0px; }</style></defs><path class="cls-1" d="M418.73,332.37c9.84-5.68,22.07-5.68,31.91,0l25.49,14.71c.82.48,1.69.8,2.58,1.06.19.06.37.11.55.16.87.21,1.76.34,2.65.35.04,0,.08.02.13.02.1,0,.19-.03.29-.04.83-.02,1.64-.13,2.45-.32.14-.03.28-.05.42-.09.87-.24,1.7-.59,2.5-1.03.08-.04.17-.06.25-.1l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22l-50.97-29.43c-3.65-2.11-8.15-2.11-11.81,0l-50.97,29.43c-.08.04-.13.11-.2.16-.78.48-1.51,1.02-2.15,1.66-.1.1-.18.21-.28.31-.57.6-1.08,1.26-1.51,1.97-.07.12-.15.22-.22.34-.44.77-.77,1.6-1.03,2.47-.05.19-.1.37-.14.56-.22.89-.37,1.81-.37,2.76v29.43c0,11.36-6.11,21.95-15.95,27.63-9.84,5.68-22.06,5.68-31.91,0l-25.49-14.71c-.82-.48-1.69-.8-2.57-1.06-.19-.06-.37-.11-.56-.16-.88-.21-1.76-.34-2.65-.34-.13,0-.26.02-.4.02-.84.02-1.66.13-2.47.32-.13.03-.27.05-.4.09-.87.24-1.71.6-2.51,1.04-.08.04-.16.06-.24.1l-50.97,29.43c-3.65,2.11-5.9,6.01-5.9,10.22v58.86c0,4.22,2.25,8.11,5.9,10.22l50.97,29.43c.08.04.17.06.24.1.8.44,1.64.79,2.5,1.03.14.04.28.06.42.09.81.19,1.62.3,2.45.32.1,0,.19.04.29.04.04,0,.08-.02.13-.02.89,0,1.77-.13,2.65-.35.19-.04.37-.1.56-.16.88-.26,1.75-.59,2.58-1.06l25.49-14.71c9.84-5.68,22.06-5.68,31.91,0,9.84,5.68,15.95,16.27,15.95,27.63v29.43c0,.95.15,1.87.37,2.76.05.19.09.37.14.56.25.86.59,1.69,1.03,2.47.07.12.15.22.22.34.43.71.94,1.37,1.51,1.97.1.1.18.21.28.31.65.63,1.37,1.18,2.15,1.66.07.04.13.11.2.16l50.97,29.43c1.83,1.05,3.86,1.58,5.9,1.58s4.08-.53,5.9-1.58l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22l-50.97-29.43c-.08-.04-.16-.06-.24-.1-.8-.44-1.64-.8-2.51-1.04-.13-.04-.26-.05-.39-.09-.82-.2-1.65-.31-2.49-.33-.13,0-.25-.02-.38-.02-.89,0-1.78.13-2.66.35-.18.04-.36.1-.54.15-.88.26-1.75.59-2.58,1.07l-25.49,14.72c-9.84,5.68-22.07,5.68-31.9,0-9.84-5.68-15.95-16.27-15.95-27.63s6.11-21.95,15.95-27.63Z"/><path class="cls-1" d="M141.09,317.65l50.97,29.43c1.83,1.05,3.86,1.58,5.9,1.58s4.08-.53,5.9-1.58l50.97-29.43c.08-.04.13-.11.2-.16.78-.48,1.51-1.02,2.15-1.66.1-.1.18-.21.28-.31.57-.6,1.08-1.26,1.51-1.97.07-.12.15-.22.22-.34.44-.77.77-1.6,1.03-2.47.05-.19.1-.37.14-.56.22-.89.37-1.81.37-2.76v-29.43c0-11.36,6.11-21.95,15.96-27.63s22.06-5.68,31.91,0l25.49,14.71c.82.48,1.69.8,2.57,1.06.19.06.37.11.56.16.87.21,1.76.34,2.64.35.04,0,.09.02.13.02.1,0,.19-.04.29-.04.83-.02,1.65-.13,2.45-.32.14-.03.28-.05.41-.09.87-.24,1.71-.6,2.51-1.04.08-.04.16-.06.24-.1l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22l-50.97-29.43c-3.65-2.11-8.15-2.11-11.81,0l-50.97,29.43c-.08.04-.13.11-.2.16-.78.48-1.51,1.02-2.15,1.66-.1.1-.18.21-.28.31-.57.6-1.08,1.26-1.51,1.97-.07.12-.15.22-.22.34-.44.77-.77,1.6-1.03,2.47-.05.19-.1.37-.14.56-.22.89-.37,1.81-.37,2.76v29.43c0,11.36-6.11,21.95-15.95,27.63-9.84,5.68-22.07,5.68-31.91,0l-25.49-14.71c-.82-.48-1.69-.8-2.58-1.06-.19-.06-.37-.11-.55-.16-.88-.21-1.76-.34-2.65-.35-.13,0-.26.02-.4.02-.83.02-1.66.13-2.47.32-.13.03-.27.05-.4.09-.87.24-1.71.6-2.51,1.04-.08.04-.16.06-.24.1l-50.97,29.43c-3.65,2.11-5.9,6.01-5.9,10.22v58.86c0,4.22,2.25,8.11,5.9,10.22Z"/><path class="cls-1" d="M396.88,484.35l-50.97-29.43c-.08-.04-.17-.06-.24-.1-.8-.44-1.64-.79-2.51-1.03-.14-.04-.27-.06-.41-.09-.81-.19-1.64-.3-2.47-.32-.13,0-.26-.02-.39-.02-.89,0-1.78.13-2.66.35-.18.04-.36.1-.54.15-.88.26-1.76.59-2.58,1.07l-25.49,14.72c-9.84,5.68-22.06,5.68-31.9,0-9.84-5.68-15.96-16.27-15.96-27.63v-29.43c0-.95-.15-1.87-.37-2.76-.05-.19-.09-.37-.14-.56-.25-.86-.59-1.69-1.03-2.47-.07-.12-.15-.22-.22-.34-.43-.71-.94-1.37-1.51-1.97-.1-.1-.18-.21-.28-.31-.65-.63-1.37-1.18-2.15-1.66-.07-.04-.13-.11-.2-.16l-50.97-29.43c-3.65-2.11-8.15-2.11-11.81,0l-50.97,29.43c-3.65,2.11-5.9,6.01-5.9,10.22v58.86c0,4.22,2.25,8.11,5.9,10.22l50.97,29.43c.08.04.17.06.25.1.8.44,1.63.79,2.5,1.03.14.04.29.06.43.09.8.19,1.61.3,2.43.32.1,0,.2.04.3.04.04,0,.09-.02.13-.02.88,0,1.77-.13,2.64-.34.19-.04.37-.1.56-.16.88-.26,1.75-.59,2.57-1.06l25.49-14.71c9.84-5.68,22.06-5.68,31.91,0,9.84,5.68,15.95,16.27,15.95,27.63v29.43c0,.95.15,1.87.37,2.76.05.19.09.37.14.56.25.86.59,1.69,1.03,2.47.07.12.15.22.22.34.43.71.94,1.37,1.51,1.97.1.1.18.21.28.31.65.63,1.37,1.18,2.15,1.66.07.04.13.11.2.16l50.97,29.43c1.83,1.05,3.86,1.58,5.9,1.58s4.08-.53,5.9-1.58l50.97-29.43c3.65-2.11,5.9-6.01,5.9-10.22v-58.86c0-4.22-2.25-8.11-5.9-10.22Z"/></svg>
```
## /public/logos/factory.svg
```svg path="/public/logos/factory.svg"
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 11" fill="none">
<path d="M6.82618 3.07395C6.8105 3.07006 6.79587 3.06283 6.78324 3.05277C6.77063 3.04269 6.76031 3.03002 6.75306 3.01561C6.74579 3.00119 6.74172 2.98537 6.74112 2.96924C6.74054 2.9531 6.74344 2.93704 6.74963 2.92213C6.96359 2.40145 7.058 1.98483 6.90564 1.81042C6.50214 1.34769 4.88396 2.26784 4.36801 2.57949C4.3542 2.5878 4.33874 2.59303 4.32272 2.59481C4.3067 2.5966 4.29048 2.59491 4.27517 2.58986C4.25987 2.58481 4.24581 2.57652 4.234 2.56555C4.22219 2.55457 4.2129 2.54118 4.20672 2.52629C3.98985 2.0067 3.76185 1.6453 3.53076 1.62963C2.91823 1.58771 2.42452 3.38266 2.27999 3.96767C2.27613 3.98335 2.26893 3.998 2.25889 4.01061C2.24883 4.02324 2.23616 4.03354 2.22177 4.04081C2.20737 4.04808 2.19157 4.05214 2.17544 4.05273C2.15933 4.05333 2.14327 4.05043 2.12836 4.04423C1.60768 3.83028 1.19088 3.73587 1.01665 3.88823C0.553921 4.29173 1.47391 5.90991 1.78555 6.42585C1.79388 6.43965 1.79913 6.45511 1.80094 6.47114C1.80274 6.48716 1.80106 6.5034 1.79602 6.51871C1.79097 6.53404 1.78266 6.54809 1.77167 6.5599C1.76068 6.57171 1.74726 6.58098 1.73234 6.58713C1.21293 6.804 0.851532 7.03199 0.835677 7.26308C0.793942 7.87562 2.58872 8.36935 3.17392 8.51387C3.18956 8.51777 3.20416 8.52501 3.21675 8.53507C3.22932 8.54513 3.2396 8.55779 3.24684 8.57219C3.25409 8.58657 3.25816 8.60235 3.25874 8.61846C3.25934 8.63456 3.25646 8.65061 3.25028 8.66548C3.03632 9.18617 2.94192 9.60297 3.09428 9.7772C3.49778 10.2399 5.11614 9.31994 5.63209 9.00829C5.6459 8.99996 5.66135 8.99472 5.67739 8.99291C5.69341 8.99111 5.70965 8.99278 5.72496 8.99785C5.74029 9.0029 5.75432 9.01121 5.76613 9.0222C5.77794 9.03319 5.78723 9.0466 5.79338 9.06151C6.01025 9.58092 6.23806 9.94233 6.46933 9.95819C7.08187 9.99992 7.57558 8.20514 7.71992 7.61995C7.72382 7.60429 7.73106 7.58966 7.74113 7.57706C7.75121 7.56445 7.7639 7.55417 7.77831 7.54692C7.79273 7.53968 7.80853 7.53562 7.82466 7.53505C7.84079 7.53447 7.85684 7.53737 7.87173 7.54358C8.39242 7.75754 8.80904 7.85175 8.98345 7.69957C9.44618 7.29607 8.526 5.67771 8.21436 5.16176C8.20609 5.14795 8.20089 5.13249 8.19912 5.11649C8.19734 5.10047 8.19905 5.08425 8.2041 5.06896C8.20915 5.05365 8.21742 5.03962 8.22838 5.02781C8.23933 5.016 8.25271 5.00667 8.26758 5.00049C8.78717 4.78362 9.14856 4.55561 9.16424 4.32451C9.20616 3.71198 7.41119 3.21829 6.82618 3.07395ZM6.12343 2.48672C6.24116 2.69777 5.63445 4.10401 5.18321 5.08761C5.17566 5.10404 5.16327 5.11779 5.14767 5.12697C5.13209 5.13616 5.11404 5.14035 5.096 5.13898C5.07796 5.13761 5.06076 5.13074 5.04674 5.11932C5.03271 5.10787 5.02252 5.09242 5.01754 5.07501C4.8353 4.4355 4.62699 3.68411 4.4041 3.04624C4.39535 3.0212 4.39579 2.99387 4.40534 2.96913C4.41489 2.94439 4.43293 2.92385 4.45622 2.91118C5.01281 2.60719 5.96523 2.20351 6.12343 2.48672ZM3.45604 2.66077C3.68841 2.72674 4.25374 4.15012 4.63008 5.1647C4.63637 5.18165 4.6373 5.20011 4.63278 5.21762C4.62824 5.23512 4.61848 5.25081 4.60477 5.2626C4.59105 5.27439 4.57406 5.2817 4.55607 5.28354C4.53809 5.2854 4.51997 5.2817 4.50415 5.27295C3.9226 4.95019 3.24445 4.56565 2.63574 4.27223C2.6119 4.26065 2.59295 4.24103 2.58223 4.21679C2.57152 4.19257 2.56975 4.16532 2.57724 4.13992C2.75639 3.53194 3.14385 2.57238 3.45604 2.66077ZM1.69297 4.67006C1.90383 4.55232 3.31024 5.15905 4.29365 5.61029C4.31011 5.61784 4.32385 5.63023 4.33304 5.64583C4.34222 5.66141 4.34642 5.67946 4.34505 5.6975C4.34366 5.71554 4.33681 5.73273 4.32537 5.74676C4.31394 5.76078 4.29848 5.77098 4.28108 5.77596C3.64175 5.95821 2.89016 6.16652 2.25229 6.3894C2.22729 6.3981 2.19999 6.39764 2.17529 6.38809C2.1506 6.37854 2.13008 6.36054 2.11743 6.33726C1.81399 5.78068 1.40958 4.82825 1.69297 4.67006ZM1.86702 7.33746C1.93281 7.10509 3.35635 6.53974 4.37093 6.1634C4.38788 6.15713 4.40636 6.1562 4.42385 6.16072C4.44137 6.16526 4.45706 6.17503 4.46885 6.18873C4.48062 6.20244 4.48795 6.21944 4.48979 6.23741C4.49163 6.2554 4.48793 6.27351 4.47918 6.28935C4.15624 6.8709 3.7717 7.54905 3.47828 8.15758C3.46681 8.18149 3.44718 8.20053 3.42293 8.21129C3.39869 8.22204 3.37141 8.22381 3.34596 8.21626C2.73798 8.0382 1.77845 7.64965 1.86702 7.33746ZM3.87631 9.10053C3.75839 8.88967 4.36528 7.48326 4.81652 6.49985C4.82407 6.48339 4.83648 6.46965 4.85206 6.46046C4.86766 6.45128 4.88569 6.44709 4.90373 6.44845C4.92179 6.44982 4.93898 6.45669 4.95299 6.46812C4.96703 6.47956 4.97721 6.49502 4.98219 6.51242C5.16444 7.15175 5.37275 7.90334 5.59564 8.54121C5.60433 8.56623 5.60384 8.59353 5.59427 8.61825C5.58468 8.64294 5.56662 8.66344 5.54333 8.67607C4.98693 8.97952 4.03432 9.38393 3.87685 9.10053H3.87631ZM6.54369 8.92646C6.31114 8.86067 5.74581 7.43715 5.36947 6.42257C5.36316 6.40559 5.36219 6.38707 5.36673 6.36954C5.37125 6.35201 5.38106 6.33628 5.3948 6.32449C5.40854 6.31268 5.42558 6.30539 5.44359 6.30357C5.46161 6.30174 5.47976 6.3055 5.49558 6.3143C6.07695 6.63706 6.75528 7.02181 7.36381 7.31523C7.3877 7.32673 7.40669 7.34635 7.41743 7.37059C7.42814 7.39485 7.42987 7.42211 7.42231 7.44754C7.24334 8.05643 6.85588 9.01504 6.54369 8.92646ZM8.30676 6.91718C8.09572 7.03509 6.68949 6.42821 5.7059 5.97696C5.68944 5.96941 5.6757 5.95702 5.66651 5.94142C5.65733 5.92584 5.65315 5.9078 5.65452 5.88975C5.65589 5.87171 5.66274 5.85452 5.67418 5.84049C5.68561 5.82646 5.70107 5.81629 5.71847 5.81131C6.35798 5.62907 7.10939 5.42074 7.74726 5.19785C7.77232 5.18915 7.79965 5.18963 7.82439 5.19922C7.84912 5.2088 7.86964 5.22686 7.8823 5.25017C8.18557 5.80658 8.58997 6.75917 8.30676 6.91718ZM8.13271 4.24979C8.06674 4.48234 6.64338 5.04769 5.62881 5.42404C5.61182 5.43034 5.59332 5.43129 5.57579 5.42677C5.55826 5.42223 5.54253 5.41245 5.53072 5.3987C5.51893 5.38496 5.51164 5.36792 5.50982 5.3499C5.50799 5.33189 5.51173 5.31374 5.52055 5.2979C5.84331 4.71653 6.22785 4.0382 6.52127 3.42968C6.53281 3.40582 6.55244 3.38685 6.57668 3.37613C6.60092 3.36542 6.62818 3.36365 6.65359 3.37117C7.26157 3.55014 8.2211 3.9376 8.13271 4.24979Z" fill="#000"/>
</svg>
```
## /public/logos/gemini.svg
```svg path="/public/logos/gemini.svg"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
fill="none"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs1" /><g
id="layer4"
style="display:inline"><g
id="g1"
transform="matrix(0.97273288,0,0,0.97273288,0.32720544,0.32720544)"><rect
style="fill:none;stroke:#000000;stroke-width:1.1279;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
id="rect2"
width="18.504566"
height="18.503937"
x="2.7477169"
y="2.7480316"
rx="2.9918964"
ry="3.023622" /><path
d="m 10.97567,15.874792 c 1.581586,-0.760574 3.339954,-1.602238 3.907486,-1.870364 l 1.031874,-0.487502 0.01404,-1.519376 0.01404,-1.519378 -0.649046,-0.308616 C 14.93709,9.9998162 13.192456,9.1658082 11.417102,8.3162042 9.6417479,7.4665981 8.15942,6.7589681 8.12304,6.7436901 8.07134,6.7219801 8.05689,6.9581341 8.05689,7.8246982 v 1.108786 l 1.5742699,0.75818 c 0.8658501,0.4169978 2.1814901,1.0540698 2.9236461,1.4157138 0.742156,0.361644 1.450578,0.70193 1.574272,0.756192 0.123692,0.05426 0.224894,0.111768 0.224894,0.127794 0,0.02935 -0.21164,0.13279 -4.140728,2.023856 L 8.05689,15.053072 v 1.10229 c 0,0.60626 0.0097,1.102292 0.02158,1.102292 0.01186,0 1.3156019,-0.622288 2.897188,-1.382862 z"
style="fill:#1a1a1a;stroke-width:0.2"
id="path1-5" /></g></g></svg>
```
## /public/logos/goose.svg
```svg path="/public/logos/goose.svg"
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<g clip-path="url(#clip0_2096_5193)">
<path d="M20.9093 19.3861L19.5185 18.2413C18.7624 17.619 18.1189 16.8713 17.6157 16.0313C16.9205 14.8706 15.9599 13.8912 14.8133 13.1735L14.2533 12.8475C14.0614 12.7141 13.9276 12.5062 13.9086 12.2716C13.8963 12.1204 13.9326 11.9852 14.0171 11.8662C14.3087 11.4553 15.896 9.74698 16.1722 9.51845C16.528 9.22442 16.9243 8.97987 17.2921 8.69986C17.3443 8.66 17.3968 8.62035 17.4485 8.57989C17.4503 8.57808 17.4529 8.57668 17.4545 8.57508C17.5725 8.48195 17.6838 8.383 17.7724 8.26563C18.2036 7.76631 18.195 7.3443 18.195 7.3443C18.195 7.3443 18.1954 7.3439 18.1956 7.3437C18.1497 7.23133 17.9847 6.88163 17.6492 6.71759C17.9458 6.71178 18.2805 6.82294 18.4323 6.97156C18.6148 6.68534 18.7328 6.49967 18.9162 6.18762C18.9599 6.11352 18.9831 5.97652 18.8996 5.89981C18.8996 5.89981 18.8992 5.89981 18.8988 5.89981C18.8988 5.89981 18.8988 5.8994 18.8988 5.899C18.8972 5.8974 18.8952 5.8962 18.8936 5.8946C18.892 5.893 18.891 5.89119 18.8892 5.88939C18.8892 5.88939 18.8888 5.88939 18.8884 5.88939C18.8884 5.88939 18.8884 5.88899 18.8884 5.88859C18.885 5.88518 18.8812 5.88258 18.8776 5.87938C18.8754 5.87717 18.8736 5.87457 18.8716 5.87217C18.8692 5.87016 18.8665 5.86836 18.8643 5.86616C18.8609 5.86275 18.8587 5.85855 18.8551 5.85534C18.8551 5.85534 18.8545 5.85514 18.8543 5.85534C18.8543 5.85534 18.8543 5.85494 18.8543 5.85454C18.8527 5.85294 18.8507 5.85174 18.8491 5.85013C18.8475 5.84853 18.8463 5.84653 18.8447 5.84493C18.8447 5.84493 18.8441 5.84473 18.8439 5.84493C18.8439 5.84493 18.8439 5.84453 18.8439 5.84413C18.7672 5.7606 18.6302 5.78384 18.5561 5.8275C18.1503 6.06625 17.7555 6.32322 17.3996 6.54855C17.3996 6.54855 16.9778 6.53973 16.4783 6.97116C16.3607 7.05989 16.2618 7.17125 16.1688 7.28902C16.167 7.29082 16.1654 7.29322 16.164 7.29503C16.1234 7.3465 16.0837 7.39898 16.0441 7.45145C15.7639 7.81939 15.5195 8.21556 15.2255 8.57128C14.9971 8.84768 13.2887 10.4348 12.8777 10.7264C12.7587 10.8109 12.6237 10.8474 12.4723 10.835C12.2379 10.8161 12.0298 10.6821 11.8965 10.4903L11.5704 9.93024C10.8527 8.78318 9.87332 7.82299 8.71264 7.12778C7.87262 6.62466 7.12514 5.98092 6.50264 5.22503L5.35778 3.83421C5.3013 3.76571 5.19314 3.77693 5.15268 3.85585C5.02249 4.10941 4.77393 4.64479 4.58346 5.36483C4.57885 5.38186 4.58286 5.39988 4.59407 5.4135C4.83082 5.69952 5.37901 6.32983 6.03196 6.863C6.07742 6.90005 6.04017 6.97336 5.98369 6.95774C5.42047 6.80432 4.87288 6.55796 4.46308 6.34805C4.42964 6.33103 4.38918 6.35226 4.38437 6.38951C4.32068 6.89985 4.30425 7.46027 4.37155 8.05112C4.37355 8.07035 4.38577 8.08697 4.4036 8.09479C4.87088 8.29808 5.61816 8.59311 6.40269 8.78078C6.45958 8.7944 6.45777 8.87632 6.40029 8.88733C5.78941 9.0023 5.14968 9.02794 4.62973 9.02113C4.59327 9.02073 4.56643 9.05518 4.57625 9.09023C4.6806 9.45896 4.822 9.8339 5.00847 10.2115C5.08559 10.3811 5.16951 10.5475 5.25944 10.7104C5.27486 10.7382 5.3047 10.7548 5.33655 10.7534C5.76577 10.7324 6.28452 10.6871 6.80608 10.595C6.89501 10.5794 6.94268 10.6964 6.86757 10.7466C6.51345 10.9834 6.13571 11.1873 5.7844 11.3551C5.73733 11.3777 5.72211 11.4378 5.75315 11.4797C5.96186 11.7625 6.19139 12.0301 6.44075 12.2794C6.44075 12.2794 7.66853 13.5441 7.70198 13.6432C8.41841 12.9096 9.59612 12.0964 10.8966 11.3864C9.15488 12.8036 8.18387 13.8499 7.69517 14.4444L7.35447 14.9225C7.17742 15.1708 7.02379 15.4346 6.89541 15.7112C6.46579 16.6356 5.75756 18.5051 5.75756 18.5051C5.70328 18.6515 5.74754 18.7959 5.84168 18.89C5.84388 18.8922 5.84609 18.8944 5.84849 18.8964C5.85069 18.8986 5.8527 18.901 5.8549 18.9032C5.94924 18.9976 6.09345 19.0416 6.23986 18.9874C6.23986 18.9874 8.10897 18.2791 9.03371 17.8495C9.31031 17.7211 9.57429 17.5673 9.82245 17.3905L10.349 17.0153C10.6278 16.8166 11.0096 16.8483 11.2517 17.0904L12.4655 18.3042C12.7148 18.5535 12.9824 18.7831 13.2652 18.9918C13.3073 19.0226 13.3672 19.0076 13.3898 18.9605C13.5579 18.6094 13.7618 18.2313 13.9983 17.8774C14.0486 17.8022 14.1657 17.8501 14.1499 17.9388C14.0576 18.4606 14.0127 18.9794 13.9915 19.4084C13.9899 19.44 14.0067 19.4701 14.0345 19.4855C14.1972 19.5756 14.3636 19.6595 14.5335 19.7364C14.911 19.9229 15.2862 20.0645 15.6547 20.1687C15.6897 20.1785 15.7242 20.1516 15.7238 20.1152C15.7168 19.595 15.7424 18.9553 15.8576 18.3446C15.8684 18.2869 15.9503 18.2851 15.9641 18.3422C16.1516 19.127 16.4466 19.8742 16.6501 20.3413C16.6579 20.3591 16.6744 20.3712 16.6938 20.3734C17.2847 20.4407 17.8451 20.4242 18.3554 20.3606C18.3929 20.3559 18.4141 20.3155 18.3969 20.2818C18.187 19.872 17.9406 19.3241 17.7872 18.7612C17.7718 18.7046 17.8449 18.6675 17.8819 18.713C18.4151 19.3659 19.0454 19.9141 19.3314 20.1508C19.345 20.1621 19.3633 20.1659 19.3801 20.1615C20.1003 19.9712 20.6357 19.7226 20.8891 19.5922C20.968 19.5518 20.9792 19.4436 20.9107 19.3871L20.9093 19.3861Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_2096_5193">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
```
## /public/logos/jules.svg
```svg path="/public/logos/jules.svg"
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 11" fill="none">
<path d="M8.57484 8.36481C8.35724 8.36481 8.17749 8.54456 8.17749 8.76215C8.17749 8.97974 7.99774 9.15949 7.78015 9.15949C7.56256 9.15949 7.38281 8.97974 7.38281 8.76215V6.77071C7.42065 6.66191 7.45376 6.55311 7.45376 6.44432C7.45376 6.44432 7.45376 4.20217 7.45376 4.12649C7.45376 2.74998 6.3658 1.62891 4.99402 1.62891C3.62225 1.62891 2.49644 2.75471 2.49644 4.13122C2.49644 4.20217 2.49644 6.44905 2.49644 6.44905C2.49644 6.59569 2.53428 6.73759 2.64308 6.88423V8.76688C2.64308 8.98447 2.46333 9.16422 2.24574 9.16422C2.02815 9.16422 1.8484 8.98447 1.8484 8.76688C1.8484 8.54929 1.66865 8.36954 1.45105 8.36954C1.23346 8.36954 1.05371 8.54929 1.05371 8.76688C1.05371 9.38181 1.55985 9.88795 2.17478 9.95891C2.21263 9.95891 2.21263 9.95891 2.24574 9.95891C2.28358 9.95891 2.28358 9.95891 2.31669 9.95891C2.93163 9.92106 3.43777 9.41493 3.43777 8.76688V7.21062C3.43777 7.21062 3.39992 6.88423 3.6932 6.88423C3.98175 6.88423 3.94863 7.21062 3.94863 7.21062V8.76688C3.94863 8.98447 4.12838 9.16422 4.34598 9.16422C4.56357 9.16422 4.74332 8.98447 4.74332 8.76688V7.21062C4.74332 7.21062 4.67237 6.88423 4.99875 6.88423C5.32514 6.88423 5.25419 7.21062 5.25419 7.21062V8.76688C5.25419 8.98447 5.43394 9.16422 5.65153 9.16422C5.86912 9.16422 6.04887 8.98447 6.04887 8.76688V7.21062C6.04887 7.21062 6.01103 6.88423 6.30431 6.88423C6.59285 6.88423 6.55974 7.21062 6.55974 7.21062V8.76688C6.55974 9.38181 7.06588 9.88795 7.68082 9.95891C7.71866 9.95891 7.71866 9.95891 7.75177 9.95891C7.78488 9.95891 7.78961 9.95891 7.82272 9.95891C8.43766 9.92106 8.9438 9.41493 8.9438 8.76688C8.97218 8.54456 8.79243 8.36481 8.57484 8.36481ZM3.68847 6.11793C3.47088 6.11793 3.29113 5.90034 3.29113 5.61179C3.29113 5.32324 3.47088 5.10565 3.68847 5.10565C3.90606 5.10565 4.08581 5.32324 4.08581 5.61179C4.08581 5.90034 3.90606 6.11793 3.68847 6.11793ZM6.33269 6.11793C6.1151 6.11793 5.93535 5.90034 5.93535 5.61179C5.93535 5.32324 6.1151 5.10565 6.33269 5.10565C6.55028 5.10565 6.73003 5.32324 6.73003 5.61179C6.73003 5.90034 6.55028 6.11793 6.33269 6.11793Z" fill="#000"/>
</svg>
```
## /public/logos/junie.svg
```svg path="/public/logos/junie.svg"
<svg width="54" height="53" viewBox="0 0 54 53" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M35.4473 17.668H53.1134V20.614C53.1134 41.2261 44.2752 53.0001 20.7273 53.0001H17.7812V35.334H20.7273C31.0282 35.334 35.4473 30.9149 35.4473 20.614V17.668Z" fill="#48E054"/>
<path d="M17.6661 17.668H0V35.334H17.6661V17.668Z" fill="#48E054"/>
<path d="M35.334 0H17.668V17.6661H35.334V0Z" fill="#48E054"/>
</svg>
```
## /public/logos/kilo-code.svg
```svg path="/public/logos/kilo-code.svg"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
fill="none"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
sodipodi:docname="master-kilo-code.svg"
xml:space="preserve"
inkscape:export-filename="kilo-code.svg"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="25.4"
inkscape:cx="14.744095"
inkscape:cy="12.893701"
inkscape:window-width="1920"
inkscape:window-height="1129"
inkscape:window-x="933"
inkscape:window-y="1072"
inkscape:window-maximized="1"
inkscape:current-layer="layer7" /><defs
id="defs1" /><g
inkscape:groupmode="layer"
id="layer7"
inkscape:label="Layer 2"><path
style="display:inline;fill:#000000;stroke-width:0.09"
d="M 2.9999994,12 V 2.9999998 H 12 21.000001 V 12 21 H 12 2.9999994 Z M 19.650001,12 V 4.3499997 H 12 4.3499994 V 12 19.65 H 12 19.650001 Z M 13.1475,16.84265 12.72,16.37472 V 15.31236 14.25 h 0.63 0.63 v -0.63 -0.63 h 1.060575 1.060574 l 0.472637,0.47858 0.472637,0.47859 -0.02571,0.98391 -0.02571,0.98392 -0.648635,0.0264 -0.648635,0.0264 -0.02636,0.64864 -0.02637,0.64863 -1.035,0.0228 -1.035,0.0228 z M 15.69,15.105 V 14.25 H 14.835 13.98 v 0.855 0.855 h 0.855 0.855 z M 7.4746823,16.51989 6.9599994,15.99978 V 14.35989 12.72 h 0.6749999 0.6750001 v 1.485 1.485 h 1.485 H 11.28 v 0.675 0.675 H 9.6346824 7.9893653 Z M 10.02,13.35 v -0.63 h 0.63 0.63 v 0.63 0.63 H 10.65 10.02 Z M 6.9599993,9.1650003 V 7.0499997 h 0.675 0.675 v 0.72 0.7200001 h 0.830384 0.8303843 L 10.625384,9.1402502 11.28,9.7905003 V 10.53525 11.28 H 10.65 10.02 V 10.56 9.8400002 h -0.8550007 -0.855 V 10.56 11.28 h -0.675 -0.675 z M 12.72,10.65 v -0.63 h 0.72 0.72 V 9.1650002 8.3099997 h -0.72 -0.72 v -0.63 -0.63 h 0.970884 0.970883 l 0.424117,0.43059 0.424116,0.43059 V 8.9655897 10.02 h 0.765 0.765 v 0.63 0.63 h -2.16 -2.16 z m -2.7,-2.8800003 v -0.72 h 0.63 0.63 v 0.72 0.7200001 h -0.63 -0.63 z"
id="path1" /></g></svg>
```
## /public/logos/ona-dark.svg
```svg path="/public/logos/ona-dark.svg"
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M54.4206 41.9227C55.382 40.9614 56 39.6566 56 38.1459V25.7167C56 24.206 55.382 22.9013 54.4206 21.9399L41.9914 9.51073C41.03 8.48068 39.6567 7.93133 38.2146 7.93133H25.7854C24.2747 7.93133 22.97 8.48068 21.9399 9.51073L9.51073 21.9399C8.54936 22.9013 8 24.206 8 25.7167V38.1459C8 39.6566 8.54936 40.9614 9.51073 41.9914L21.9399 54.4206C22.97 55.382 24.2747 56 25.7854 56H38.2146C39.6567 56 41.03 55.382 41.9914 54.3519L54.4206 41.9227ZM44.6151 24.6724V39.1902C44.6151 42.143 42.2117 44.6151 39.2589 44.6151H24.7411C21.7197 44.6151 19.3162 42.143 19.3162 39.1902V24.6724C19.3162 21.7197 21.7197 19.3162 24.7411 19.3162H39.2589C42.2117 19.3162 44.6151 21.7197 44.6151 24.6724Z" fill="#99A1AF"/>
</svg>
```
## /public/logos/ona-light.svg
```svg path="/public/logos/ona-light.svg"
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M54.4206 41.9227C55.382 40.9614 56 39.6566 56 38.1459V25.7167C56 24.206 55.382 22.9013 54.4206 21.9399L41.9914 9.51073C41.03 8.48068 39.6567 7.93133 38.2146 7.93133H25.7854C24.2747 7.93133 22.97 8.48068 21.9399 9.51073L9.51073 21.9399C8.54936 22.9013 8 24.206 8 25.7167V38.1459C8 39.6566 8.54936 40.9614 9.51073 41.9914L21.9399 54.4206C22.97 55.382 24.2747 56 25.7854 56H38.2146C39.6567 56 41.03 55.382 41.9914 54.3519L54.4206 41.9227ZM44.6151 24.6724V39.1902C44.6151 42.143 42.2117 44.6151 39.2589 44.6151H24.7411C21.7197 44.6151 19.3162 42.143 19.3162 39.1902V24.6724C19.3162 21.7197 21.7197 19.3162 24.7411 19.3162H39.2589C42.2117 19.3162 44.6151 21.7197 44.6151 24.6724Z" fill="#364153"/>
</svg>
```
## /public/logos/opencode.svg
```svg path="/public/logos/opencode.svg"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
viewBox="0 0 24 24"
version="1.1"
id="svg1"
fill="none"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
sodipodi:docname="master-open-code.svg"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="8.9802561"
inkscape:cx="31.123834"
inkscape:cy="24.108444"
inkscape:window-width="1920"
inkscape:window-height="1129"
inkscape:window-x="933"
inkscape:window-y="1072"
inkscape:window-maximized="1"
inkscape:current-layer="layer7" /><defs
id="defs1" /><g
inkscape:groupmode="layer"
id="layer7"
inkscape:label="Layer 2"><path
style="display:inline;fill:#000000;stroke-width:0.122075"
d="m 6.208704,19.21599 c -0.2668066,-0.266807 -0.057883,-0.969902 0.5425554,-1.825888 0.3580864,-0.510487 0.6510664,-0.97991 0.6510664,-1.043162 0,-0.06325 -0.9440711,-0.115004 -2.0979344,-0.115004 -3.0332826,0 -2.8664483,0.224155 -2.8664483,-3.851328 V 9.1515841 L 3.4912128,7.2797678 C 4.0705105,6.2502689 4.7080754,5.2431502 4.9080219,5.0417264 L 5.2715622,4.6755014 H 11.7644 c 6.117432,0 6.50864,0.017461 6.766139,0.3019946 0.325727,0.3599236 0.262984,0.5655112 -0.578437,1.8953554 -0.339854,0.53713 -0.618613,1.0681563 -0.619464,1.1800577 -0.0011,0.1505294 0.464227,0.2034587 1.788887,0.2034587 2.550201,0 2.4415,-0.1655936 2.4415,3.7193452 0,1.929949 -0.07103,3.273545 -0.191456,3.621559 -0.298393,0.86231 -1.724493,3.194382 -2.124936,3.47486 -0.310386,0.217407 -1.231056,0.252367 -6.644863,0.252367 -3.4565049,0 -6.3333851,-0.04883 -6.393066,-0.108509 z m 12.459677,-0.746016 c 0.430724,-0.336871 1.45426,-2.071901 1.397204,-2.368444 -0.04854,-0.252278 -0.516609,-0.280497 -5.340939,-0.321995 -2.908255,-0.02501 -5.4355403,-0.0096 -5.6161896,0.03431 -0.3148176,0.07648 -2.0316643,2.353588 -2.0316643,2.694657 0,0.260224 11.2574479,0.222804 11.5915889,-0.03857 z M 8.0533921,15.336719 c 0.1697574,-0.204545 0.8396784,-0.244554 4.1297889,-0.246643 2.159938,-0.0013 4.008981,-0.05631 4.108984,-0.122075 0.325197,-0.213878 1.381939,-1.994203 1.280814,-2.157827 -0.107152,-0.173378 -11.1240314,-0.226313 -11.7577052,-0.0565 -0.4012125,0.10752 -1.9938144,2.02714 -1.9938144,2.403215 0,0.351686 0.2451665,0.397127 2.2181113,0.411125 1.4229366,0.0101 1.8546318,-0.03949 2.0138214,-0.231299 z M 20.434358,14.924075 c 0.292235,-0.156397 0.314834,-0.366296 0.314834,-2.924073 0,-2.5577768 -0.0226,-2.7676745 -0.314834,-2.924074 C 20.044034,8.8670325 10.51943,8.8442069 9.9764967,9.050867 c -0.371655,0.1414645 -1.5975709,2.108729 -1.5975709,2.563671 0,0.183398 0.8492369,0.222698 4.8123172,0.222698 3.005985,0 4.930491,0.06324 5.127149,0.168493 0.453947,0.242945 0.389802,0.828646 -0.19352,1.767014 -0.706214,1.13606 -0.589329,1.319827 0.839479,1.319827 0.635347,0 1.29685,-0.07582 1.470007,-0.168495 z M 7.8973043,10.345426 C 9.2039277,8.0814395 8.7986187,8.2567145 12.732935,8.2542664 l 3.377407,-0.00209 0.773142,-1.1885004 c 0.425227,-0.6536741 0.773141,-1.2386888 0.773141,-1.3000313 0,-0.061341 -2.563575,-0.11153 -5.696833,-0.11153 -5.4798108,0 -5.7092339,0.012397 -6.0223662,0.3255327 -0.2946748,0.2946758 -0.3255327,0.5425564 -0.3255327,2.6149672 0,2.7003854 0.178048,3.2356544 1.0784428,3.2421414 0.2660152,0.0019 0.5450141,-0.34235 1.2069684,-1.489317 z"
id="path1" /></g></svg>
```
## /public/logos/phoenix.svg
```svg path="/public/logos/phoenix.svg"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 24 24"
fill-rule="evenodd"
role="img"
class="w-auto "
aria-label="Phoenix.new Logo"
data-phx-id="m1-phx-GF1whxGvO5ccAhkB"
version="1.1"
id="svg3"
fill="none"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3">
<linearGradient
id="_Linear1-8"
x1="0"
y1="0"
x2="1"
y2="0"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(17.999995,17.999995,-17.999995,17.999995,3.0000002,2.9999996)">
<stop
offset="0"
stop-color="#878787"
id="stop2-0"
style="stop-color:#878787;stop-opacity:1;" />
<stop
offset="1"
stop-color="#101010"
id="stop3-0"
style="stop-color:#101010;stop-opacity:1;" />
</linearGradient>
</defs>
<g
id="layer6">
<path
d="m 12,2.9999997 c 4.967224,0 9,4.0327762 9,9.0000003 0,4.967224 -4.032776,9 -9,9 C 7.0327762,21 3.0000002,16.967224 3.0000002,12 3.0000002,7.032776 7.0327762,2.9999997 12,2.9999997 Z m 0,0.8481385 c 4.499118,0 8.151862,3.652705 8.151862,8.1518618 0,4.499118 -3.652744,8.151862 -8.151862,8.151862 C 7.5008401,20.151862 3.8481387,16.499118 3.8481387,12 3.8481387,7.5008433 7.5008401,3.8481382 12,3.8481382 Z m 0.289099,1.7965823 c -0.03681,0.064543 -0.09912,0.055803 -0.10047,0.056094 -0.86003,0.1752696 -5.6519035,0.9914279 -5.3340191,5.8754125 0.1148832,1.765443 1.4895788,2.969533 2.2253972,3.311411 0.7755274,0.360366 2.7396419,0.850032 4.0360529,-0.719175 0.652408,-0.789731 0.615555,-2.270068 -0.02571,-2.512902 -0.751618,-0.284644 -0.835659,0.398438 -1.147239,0.36583 -0.271032,-0.02834 -0.452811,-0.567023 -0.249475,-1.010926 0.141903,-0.309857 0.697118,-0.589422 1.200899,-0.566601 1.469032,0.06648 2.538996,1.507269 2.034079,3.572524 -0.234222,0.957896 -1.17199,2.341585 -2.993907,2.711029 -1.818808,0.368848 -3.7106482,-0.242418 -5.2171614,-2.44071 -0.031183,-0.04549 -0.2049748,0.06622 0.5025632,1.111271 0.7505251,1.108412 1.8879316,2.087906 3.5998402,2.575297 0.230566,0.06564 0.499328,0.137994 0.408186,0.189724 C 10.181996,18.757123 7.4170155,17.549503 6.1629606,15.502395 5.0032382,13.609295 5.1907324,12.082359 5.218802,11.322761 5.2843538,9.5473566 6.7512843,6.2758208 10.0582,5.5292875 c 1.45651,-0.3288064 2.352846,-0.098451 2.230902,0.1154328 z m 1.534584,12.0588235 c 0,-0.06841 0.05181,-0.09008 0.0529,-0.09064 0.605346,-0.319484 4.20174,-3.429784 1.805951,-7.191148 -0.86604,-1.359655 -2.256241,-1.5731577 -3.016388,-1.5731577 -0.760191,0 -2.800152,0.3842733 -2.800152,2.4156647 0,1.568452 1.395915,2.108368 1.990798,2.084798 a 0.13358266,0.13358266 0 0 1 0.150096,0.103997 l 6.16e-4,5.6e-4 c 0.002,0.0096 0.003,0.01939 0.0027,0.02924 l -0.0021,0.01933 a 0.13265821,0.13265821 0 0 1 -0.02121,0.05362 C 11.721515,13.992791 9.271226,14.317647 8.5331808,12.212473 8.2350463,11.362105 8.0753272,9.9360185 9.1199527,8.725749 10.322492,7.3325227 12.94872,6.2903339 15.227945,7.9769014 c 3.617447,2.6769086 2.616523,7.4222256 0.146231,9.2100176 -0.818178,0.592111 -1.550551,0.743339 -1.550551,0.516643 z M 17.063199,7.0460544 c 0.543029,0.4852115 0.786788,1.0997564 0.543995,1.3714594 C 17.364401,8.6892177 16.726447,8.5158414 16.183418,8.0306357 15.64039,7.5453847 15.39663,6.9308734 15.639424,6.6591755 15.882217,6.387472 16.52017,6.560848 17.063199,7.0460544 Z"
fill="url(#_Linear1)"
id="path2-5"
style="fill:url(#_Linear1-8);stroke-width:0.0420203" />
</g>
</svg>
```
## /public/logos/roocode.svg
```svg path="/public/logos/roocode.svg"
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 13 11" fill="none">
<path d="M10.8887 1.90612L10.6494 2.77132C10.6367 2.81713 10.5889 2.8436 10.5434 2.83001L6.52963 1.63245C6.50293 1.62448 6.47403 1.63013 6.45229 1.64756L2.47722 4.83529C2.46562 4.8446 2.45177 4.85069 2.43707 4.85296L0.0719203 5.21745C0.0281264 5.22419 -0.00309664 5.26351 0.000244815 5.30769L0.0105218 5.4436C0.0138041 5.48701 0.0494089 5.52089 0.0929268 5.52201L2.84014 5.59303L2.87148 5.59391L4.9014 4.50958C4.92982 4.4944 4.96438 4.49663 4.99062 4.51533L6.42874 5.54048C6.4513 5.55656 6.46458 5.58263 6.46433 5.61032L6.4522 6.97058C6.45205 6.98819 6.45737 7.0054 6.46744 7.01985L8.49043 9.92257C8.5063 9.94534 8.53229 9.95891 8.56004 9.95891H9.20043C9.26432 9.95891 9.30529 9.89096 9.27546 9.83446L7.83359 7.10297C7.81949 7.07626 7.82065 7.04406 7.83665 7.01844L8.58842 5.81413C8.59661 5.80102 8.60822 5.7904 8.622 5.7834L11.3097 4.41951C11.337 4.40566 11.3697 4.40759 11.3952 4.42457L12.1632 4.93651C12.1771 4.9458 12.1935 4.95076 12.2103 4.95076H12.9081C12.9757 4.95076 13.0161 4.87561 12.9789 4.8192L11.0413 1.88202C11.0011 1.8212 10.9081 1.8359 10.8887 1.90612Z" fill="#000"/>
</svg>
```
## /public/logos/semgrep.svg
```svg path="/public/logos/semgrep.svg"
<svg version="1.1" viewBox="0 0 512 200" xmlns="http://www.w3.org/2000/svg">
<g id="semgrep-ellipsis" fill="#13bf95">
<path d="m412-4e-7c55.22847 0 100 44.77153 100 100 0 55.22847-44.77153 100-100 100s-100-44.77153-100-100c1e-3 -22.75534 7.76297-44.82984 22.00391-62.57812 5.79468 6.661495 7.89062 10.6061 13.99609 20.57812h3.5c-3.0923-7.636258-7.63896-15.06492-13.76367-24.96093 18.96049-21.03049 45.94792-33.03689 74.26367-33.03906zm0 44c-30.92795 0-56 25.07205-56 56 0 30.92795 25.07205 56 56 56s56-25.07205 56-56c0-30.92794-25.07205-56-56-56z"/>
<path d="m256 0c-55.22841 0-100 44.77158-100 100 8e-3 22.74213 7.76844 44.80216 22 62.54102 0.04153-0.05203 0.07004-0.09276 0.11133-0.14454 0.01252 0.01556 0.02458 0.03133 0.03711 0.04688 0.96022-1.20705 1.88357-2.443 2.78711-3.69336 4.19703-5.49557 7.10017-10.10355 9.92773-17.07812 0.25397-0.55649 0.51186-1.11021 0.75586-1.67188h3.38086c-0.72386 2.98756-1.74037 5.91654-2.99414 8.88477-2.79519 5.99462-6.2697 12.37905-9.80078 18.10937-0.05698 0.09227-0.10092 0.17302-0.1582 0.26563 18.94128 20.83966 45.79173 32.72679 73.95312 32.74023 28.16139-0.01344 55.01184-11.90057 73.95312-32.74023-0.05728-0.09261-0.10122-0.17336-0.1582-0.26563-3.53108-5.73032-7.00559-12.11475-9.80078-18.10937-1.25377-2.96823-2.27028-5.89721-2.99414-8.88477h3.38086c0.244 0.56167 0.50189 1.11539 0.75586 1.67188 2.82756 6.97457 5.7307 11.58255 9.92773 17.07812 0.90354 1.25036 1.82689 2.48631 2.78711 3.69336 0.01253-0.01555 0.02459-0.03132 0.03711-0.04688 0.04129 0.05178 0.0698 0.09251 0.11133 0.14454 14.23156-17.73886 21.992-39.79889 22-62.54102 0-55.22842-44.77159-100-100-100zm0 44c30.92792 0 56 25.07208 56 56 0 30.92792-25.07208 56-56 56s-56-25.07208-56-56c0-0.966497 0.02388-1.926386 0.07227-2.880859 1.49985-29.58868 25.96631-53.11914 55.92773-53.11914z"/>
<path d="m100 0c-55.22848 0-100 44.77152-100 100 0 55.22847 44.77152 100 100 100 55.22847 0 100-44.77153 100-100-1e-3 -22.75534-7.76297-44.82984-22.00391-62.57812-5.79468 6.661495-7.89062 10.6061-13.99609 20.57812h-3.5c3.0923-7.636258 7.63896-15.06492 13.76367-24.96093-18.96049-21.03049-45.94792-33.03689-74.26367-33.03906zm0 44c30.92795 0 56 25.07205 56 56 0 30.92795-25.07205 56-56 56-30.92795 0-56-25.07205-56-56 0-30.92795 25.07205-56 56-56z"/>
</g>
</svg>
```
## /public/logos/uipath.svg
```svg path="/public/logos/uipath.svg"
<svg width="165" height="173" viewBox="0 0 165 173" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M86.9639 56.5H84.8752C79.4209 56.5 76.0328 59.8731 76.0328 65.3014V108.97C76.0328 129.673 69.7047 138.118 54.1904 138.118C38.6761 138.118 32.3478 129.635 32.3478 108.839V65.3014C32.3478 59.8731 28.9596 56.5 23.5061 56.5H21.4163C15.9625 56.5 12.5743 59.8731 12.5743 65.3014V108.97C12.5743 140.509 26.5763 156.5 54.1904 156.5C81.8045 156.5 95.8058 140.509 95.8058 108.97V65.3014C95.8058 59.8731 92.4175 56.5 86.9639 56.5Z" fill="white"/>
<path d="M120.794 82.9985H119.063C113.474 82.9985 110.003 86.5025 110.003 92.1415V147.357C110.003 152.996 113.474 156.5 119.063 156.5H120.794C126.383 156.5 129.854 152.996 129.854 147.357V92.1415C129.854 86.5025 126.383 82.9985 120.794 82.9985Z" fill="white"/>
<path d="M144.769 48.818C132.137 46.7891 122.169 36.8213 120.14 24.1897C120.102 23.9513 119.793 23.9513 119.755 24.1897C117.726 36.8213 107.758 46.7891 95.1263 48.818C94.8878 48.8563 94.8878 49.1655 95.1263 49.2037C107.758 51.2322 117.726 61.2004 119.755 73.832C119.793 74.0705 120.102 74.0705 120.14 73.832C122.169 61.2004 132.137 51.2322 144.769 49.2037C145.007 49.1655 145.007 48.8563 144.769 48.818ZM132.358 49.1073C126.042 50.1215 121.058 55.1056 120.044 61.4215C120.025 61.5407 119.87 61.5407 119.851 61.4215C118.837 55.1056 113.853 50.1215 107.537 49.1073C107.418 49.0882 107.418 48.9336 107.537 48.9145C113.853 47.9 118.837 42.9161 119.851 36.6003C119.87 36.4811 120.025 36.4811 120.044 36.6003C121.058 42.9161 126.042 47.9 132.358 48.9145C132.477 48.9336 132.477 49.0882 132.358 49.1073Z" fill="white"/>
<path d="M152.336 29.0964C146.02 30.1107 141.036 35.0948 140.022 41.4106C140.003 41.5298 139.848 41.5298 139.829 41.4106C138.815 35.0948 133.831 30.1107 127.515 29.0964C127.396 29.0773 127.396 28.9227 127.515 28.9036C133.831 27.8891 138.815 22.9052 139.829 16.5894C139.848 16.4702 140.003 16.4702 140.022 16.5894C141.036 22.9052 146.02 27.8891 152.336 28.9036C152.456 28.9227 152.456 29.0773 152.336 29.0964Z" fill="white"/>
</svg>
```
## /public/logos/vscode-dark.svg
```svg path="/public/logos/vscode-dark.svg"
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<g>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="100" height="100">
<path fill-rule="evenodd" clip-rule="evenodd" d="M70.9119 99.5723C72.4869 100.189 74.2828 100.15 75.8725 99.3807L96.4604 89.4231C98.624 88.3771 100 86.1762 100 83.7616V16.2392C100 13.8247 98.624 11.6238 96.4604 10.5774L75.8725 0.619067C73.7862 -0.389991 71.3446 -0.142885 69.5135 1.19527C69.252 1.38636 69.0028 1.59985 68.769 1.83502L29.3551 37.9795L12.1872 24.88C10.5891 23.6607 8.35365 23.7606 6.86938 25.1178L1.36302 30.1525C-0.452603 31.8127 -0.454583 34.6837 1.35854 36.3466L16.2471 50.0001L1.35854 63.6536C-0.454583 65.3164 -0.452603 68.1876 1.36302 69.8477L6.86938 74.8824C8.35365 76.2395 10.5891 76.34 12.1872 75.1201L29.3551 62.0207L68.769 98.1651C69.3925 98.7923 70.1246 99.2645 70.9119 99.5723ZM75.0152 27.1813L45.1092 50.0001L75.0152 72.8189V27.1813Z" fill="#99A1AF"/>
</mask>
<g mask="url(#mask0)">
<path d="M96.4614 10.593L75.8567 0.62085C73.4717 -0.533437 70.6215 -0.0465506 68.7498 1.83492L1.29834 63.6535C-0.515935 65.3164 -0.513852 68.1875 1.30281 69.8476L6.8125 74.8823C8.29771 76.2395 10.5345 76.339 12.1335 75.1201L93.3604 13.18C96.0854 11.102 100 13.0557 100 16.4939V16.2535C100 13.84 98.6239 11.64 96.4614 10.593Z" fill="#99A1AF"/>
<path d="M96.4614 89.4074L75.8567 99.3797C73.4717 100.534 70.6215 100.047 68.7498 98.1651L1.29834 36.3464C-0.515935 34.6837 -0.513852 31.8125 1.30281 30.1524L6.8125 25.1177C8.29771 23.7605 10.5345 23.6606 12.1335 24.88L93.3604 86.8201C96.0854 88.8985 100 86.9447 100 83.5061V83.747C100 86.1604 98.6239 88.3603 96.4614 89.4074Z" fill="#99A1AF"/>
<path d="M75.8578 99.3807C73.4721 100.535 70.6219 100.047 68.75 98.1651C71.0564 100.483 75 98.8415 75 95.5631V4.43709C75 1.15852 71.0565 -0.483493 68.75 1.83492C70.6219 -0.0467614 73.4721 -0.534276 75.8578 0.618963L96.4583 10.5773C98.6229 11.6237 100 13.8246 100 16.2391V83.7616C100 86.1762 98.6229 88.3761 96.4583 89.4231L75.8578 99.3807Z" fill="#99A1AF"/>
</g>
</g>
</g>
<defs>
<clipPath id="clip0">
<rect width="100" height="100" fill="white"/>
</clipPath>
</defs>
</svg>
```
## /public/logos/vscode-light.svg
```svg path="/public/logos/vscode-light.svg"
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="100" height="100">
<path fill-rule="evenodd" clip-rule="evenodd" d="M70.9119 99.3171C72.4869 99.9307 74.2828 99.8914 75.8725 99.1264L96.4608 89.2197C98.6242 88.1787 100 85.9892 100 83.5872V16.4133C100 14.0113 98.6243 11.8218 96.4609 10.7808L75.8725 0.873756C73.7862 -0.130129 71.3446 0.11576 69.5135 1.44695C69.252 1.63711 69.0028 1.84943 68.769 2.08341L29.3551 38.0415L12.1872 25.0096C10.589 23.7965 8.35363 23.8959 6.86933 25.2461L1.36303 30.2549C-0.452552 31.9064 -0.454633 34.7627 1.35853 36.417L16.2471 50.0001L1.35853 63.5832C-0.454633 65.2374 -0.452552 68.0938 1.36303 69.7453L6.86933 74.7541C8.35363 76.1043 10.589 76.2037 12.1872 74.9905L29.3551 61.9587L68.769 97.9167C69.3925 98.5406 70.1246 99.0104 70.9119 99.3171ZM75.0152 27.2989L45.1091 50.0001L75.0152 72.7012V27.2989Z" fill="#000"/>
</mask>
<g mask="url(#mask0)">
<path d="M96.4614 10.7962L75.8569 0.875542C73.4719 -0.272773 70.6217 0.211611 68.75 2.08333L1.29858 63.5832C-0.515693 65.2373 -0.513607 68.0937 1.30308 69.7452L6.81272 74.754C8.29793 76.1042 10.5347 76.2036 12.1338 74.9905L93.3609 13.3699C96.086 11.3026 100 13.2462 100 16.6667V16.4275C100 14.0265 98.6246 11.8378 96.4614 10.7962Z" fill="#000"/>
<path d="M96.4614 89.2038L75.8569 99.1245C73.4719 100.273 70.6217 99.7884 68.75 97.9167L1.29858 36.4169C-0.515693 34.7627 -0.513607 31.9063 1.30308 30.2548L6.81272 25.246C8.29793 23.8958 10.5347 23.7964 12.1338 25.0095L93.3609 86.6301C96.086 88.6974 100 86.7538 100 83.3334V83.5726C100 85.9735 98.6246 88.1622 96.4614 89.2038Z" fill="#000"/>
<path d="M75.8578 99.1263C73.4721 100.274 70.6219 99.7885 68.75 97.9166C71.0564 100.223 75 98.5895 75 95.3278V4.67213C75 1.41039 71.0564 -0.223106 68.75 2.08329C70.6219 0.211402 73.4721 -0.273666 75.8578 0.873633L96.4587 10.7807C98.6234 11.8217 100 14.0112 100 16.4132V83.5871C100 85.9891 98.6234 88.1786 96.4586 89.2196L75.8578 99.1263Z" fill="#000"/>
</g>
<defs>
</defs>
</svg>
```
## /public/logos/warp.svg
```svg path="/public/logos/warp.svg"
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Scaled down to reduce visual weight compared to other icons -->
<g transform="translate(32 32) scale(0.82) translate(-32 -32)">
<path d="M32.6321 6.5H56.6986C60.5943 6.5 63.7525 9.76345 63.7525 13.7891V42.0879C63.7525 46.1136 60.5943 49.377 56.6986 49.377H22.2586L32.6321 6.5Z" fill="black"/>
<path d="M26.3809 14.623H6.99385C3.13125 14.623 0 17.8865 0 21.9121V50.211C0 54.2367 3.13125 57.5001 6.99385 57.5001H30.8552L31.812 53.5111H17.0527L26.3809 14.623Z" fill="black"/>
</g>
</svg>
```
## /public/logos/windsurf-dark.svg
```svg path="/public/logos/windsurf-dark.svg"
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z" fill="white"/>
</svg>
```
## /public/logos/windsurf-light.svg
```svg path="/public/logos/windsurf-light.svg"
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z" fill="#0B100F"/>
</svg>
```
## /public/logos/zed.svg
```svg path="/public/logos/zed.svg"
<svg width="260" height="260" viewBox="0 0 260 260" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M37.5781 30.4688C33.6517 30.4688 30.4688 33.6517 30.4688 37.5781V193.984H16.25V37.5781C16.25 25.7989 25.7989 16.25 37.5781 16.25H228.059C237.56 16.25 242.317 27.7367 235.599 34.4547L118.282 151.772H151.328V137.109H165.547V155.327C165.547 161.217 160.772 165.991 154.883 165.991H104.063L79.6245 190.43H190.43V101.562H204.648V190.43C204.648 198.282 198.282 204.648 190.43 204.648H65.4057L40.5229 229.531H222.422C226.348 229.531 229.531 226.348 229.531 222.422V66.0156H243.75V222.422C243.75 234.201 234.201 243.75 222.422 243.75H31.9412C22.4405 243.75 17.6825 232.263 24.4005 225.545L141.274 108.672H108.672V122.891H94.4531V105.117C94.4531 99.2276 99.2276 94.4531 105.117 94.4531H155.493L180.376 69.5703H69.5703V158.438H55.3516V69.5703C55.3516 61.7175 61.7175 55.3516 69.5703 55.3516H194.594L219.477 30.4688H37.5781Z" fill="white"/>
</svg>
```
## /public/og.png
Binary file available at https://raw.githubusercontent.com/openai/agents.md/refs/heads/main/public/og.png
## /styles/globals.css
```css path="/styles/globals.css"
@import "tailwindcss";
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: normal;
font-weight: 400;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-Regular.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: italic;
font-weight: 400;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-RegularItalic.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: normal;
font-weight: 500;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-Medium.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: italic;
font-weight: 500;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-MediumItalic.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: normal;
font-weight: 600;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-Semibold.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: italic;
font-weight: 600;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-SemiboldItalic.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: normal;
font-weight: 700;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-Bold.woff2')
format('woff2');
}
@font-face {
font-display: swap;
font-family: 'OpenAI Sans';
font-style: italic;
font-weight: 700;
src: url('https://cdn.openai.com/common/fonts/openai-sans/OpenAISans-BoldItalic.woff2')
format('woff2');
}
:root {
--background: #ffffff;
--foreground: #171717;
--font-sans: 'OpenAI Sans', Arial, Helvetica, sans-serif;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: 'OpenAI Sans', Arial, Helvetica, sans-serif;
--font-mono: var(--font-geist-mono);
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
background: var(--background);
color: var(--foreground);
font-family: var(--font-sans);
}
/* Ensure code blocks wrap and do not scroll horizontally */
pre {
overflow-x: visible;
white-space: pre-wrap;
word-break: break-word;
}
code {
white-space: pre-wrap;
word-break: break-word;
}
.logo-marquee-track {
width: max-content;
animation: logo-marquee-scroll var(--marquee-duration, 70s) linear infinite;
will-change: transform;
}
@keyframes logo-marquee-scroll {
from {
transform: translateX(0);
}
to {
transform: translateX(-50%);
}
}
@media (prefers-reduced-motion: reduce) {
.logo-marquee-track {
animation: none;
}
}
```
## /tsconfig.json
```json path="/tsconfig.json"
{
"compilerOptions": {
"target": "ES2017",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
"paths": {
"@/*": [
"./*"
]
}
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}
```
The better and more specific the context, the better the LLM can follow instructions. If the context seems verbose, the user can refine the filter using uithub. Thank you for using https://uithub.com - Perfect LLM context for any GitHub repo.