Files
promptfoo--promptfoo/site/src/pages/about.tsx
T
wehub-resource-sync 0d3cb498a3
CI / Shell Format Check (push) Has been cancelled
CI / Check Ruby (3.4) (push) Has been cancelled
CI / CI Config (push) Has been cancelled
CI / Test on Node ${{ matrix.node }} and ${{ matrix.os }}${{ matrix.shard && format(' (shard {0}/3)', matrix.shard) || '' }} (push) Has been cancelled
CI / Build on Node ${{ matrix.node }} (push) Has been cancelled
CI / Style Check (push) Has been cancelled
CI / Generate Assets (push) Has been cancelled
CI / Check Python (3.14) (push) Has been cancelled
CI / Check Python (3.9) (push) Has been cancelled
CI / Build Docs (push) Has been cancelled
CI / Code Scan Action (push) Has been cancelled
CI / Site tests (push) Has been cancelled
CI / webui tests (push) Has been cancelled
CI / Run Integration Tests (push) Has been cancelled
CI / Run Smoke Tests (push) Has been cancelled
CI / Go Tests (push) Has been cancelled
CI / Share Test (push) Has been cancelled
CI / Redteam (Production API) (push) Has been cancelled
CI / Redteam (Staging API) (push) Has been cancelled
CI / GitHub Actions Lint (push) Has been cancelled
CI / Check Ruby (3.0) (push) Has been cancelled
release-please / release-please (push) Has been cancelled
release-please / build (push) Has been cancelled
release-please / publish-npm (push) Has been cancelled
release-please / publish-npm-backfill (push) Has been cancelled
release-please / docker (push) Has been cancelled
release-please / publish-code-scan-action (push) Has been cancelled
release-please / attest-code-scan-action (push) Has been cancelled
Deploy local.promptfoo.app / Deploy to Cloudflare Pages (push) Has been cancelled
Test and Publish Multi-arch Docker Image / test (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-amd64 platform:linux/amd64 runner:ubuntu-latest]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / build-docker-and-push-digests (map[digest-suffix:linux-arm64 platform:linux/arm64 runner:ubuntu-24.04-arm]) (push) Has been cancelled
Test and Publish Multi-arch Docker Image / merge-docker-digests (push) Has been cancelled
Test and Publish Multi-arch Docker Image / Attest Multi-arch Image (push) Has been cancelled
Validate Renovate Config / Validate Renovate Configuration (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:24:08 +08:00

421 lines
13 KiB
TypeScript

import React from 'react';
import Head from '@docusaurus/Head';
import Link from '@docusaurus/Link';
import { useColorMode } from '@docusaurus/theme-common';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import LinkedInIcon from '@mui/icons-material/LinkedIn';
import Avatar from '@mui/material/Avatar';
import Box from '@mui/material/Box';
import Container from '@mui/material/Container';
import Divider from '@mui/material/Divider';
import Grid from '@mui/material/Grid';
import IconButton from '@mui/material/IconButton';
import { createTheme, ThemeProvider } from '@mui/material/styles';
import Typography from '@mui/material/Typography';
import Layout from '@theme/Layout';
import { SITE_CONSTANTS } from '../constants';
const AboutPageContent = () => {
const { colorMode } = useColorMode();
const theme = React.useMemo(
() =>
createTheme({
palette: {
mode: colorMode === 'dark' ? 'dark' : 'light',
},
}),
[colorMode],
);
return (
<ThemeProvider theme={theme}>
<Container maxWidth="lg">
<Box
sx={{
py: 8,
}}
>
<Typography
variant="h2"
component="h2"
align="center"
gutterBottom
sx={{
fontWeight: 'bold',
}}
>
Securing the Future of AI
</Typography>
<Typography
variant="h5"
component="h2"
align="center"
sx={{
color: 'text.secondary',
mb: 2,
}}
>
Promptfoo helps developers and enterprises build secure, reliable AI applications.
</Typography>
</Box>
<Box
sx={{
mb: 8,
}}
>
<Grid container spacing={4}>
<Grid size={{ xs: 12, md: 6 }}>
<Typography
variant="h4"
component="h3"
gutterBottom
sx={{
fontWeight: 'medium',
}}
>
About Us
</Typography>
<Typography variant="body1" component="p" sx={{ mb: 2 }}>
We are security and engineering practitioners who have scaled generative AI products
to hundreds of millions of users. We're building the tools that we wished we had
when we were on the front lines.
</Typography>
<Typography variant="body1" component="p" sx={{ mb: 2 }}>
Based in San Francisco, California, Promptfoo is now part of OpenAI. Promptfoo
remains open source, and we continue to build tools for secure, reliable AI
applications.
</Typography>
</Grid>
<Grid size={{ xs: 12, md: 6 }}>
<Box
sx={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
height: '100%',
}}
>
<img
src="/img/logo-panda.svg"
alt="Promptfoo Logo"
style={{ maxWidth: '100%', maxHeight: '150px', height: 'auto' }}
/>
</Box>
</Grid>
</Grid>
</Box>
<Divider sx={{ my: 8 }} />
<Box
sx={{
mb: 8,
}}
>
<Typography
variant="h4"
component="h3"
align="center"
sx={{
mb: 8,
fontWeight: 'medium',
}}
>
Our founders
</Typography>
<Grid
container
spacing={4}
sx={{
justifyContent: 'center',
}}
>
{[
{
name: 'Ian Webster',
title: 'CEO & Co-founder',
image: '/img/team/ian.jpeg',
bio: 'Ian previously led LLM engineering and developer platform teams at Discord, scaling AI products to 200M users while maintaining rigorous safety, security, and policy standards.',
linkedin: 'http://linkedin.com/in/ianww',
},
{
name: "Michael D'Angelo",
title: 'CTO & Co-founder',
image: '/img/team/michael.jpeg',
bio: 'Michael brings extensive experience in AI and engineering leadership. As the former VP of Engineering and Head of AI at Smile Identity, he has a track record of scaling ML solutions to serve over 100 million people across hundreds of enterprises.',
linkedin: 'https://www.linkedin.com/in/michaelldangelo/',
},
].map((leader) => (
<Grid size={{ xs: 12, sm: 6, md: 4 }} key={leader.name}>
<Box
sx={{
textAlign: 'center',
}}
>
<Avatar
alt={leader.name}
src={leader.image}
sx={{ width: 150, height: 150, margin: '0 auto 1rem' }}
/>
<Box
sx={{
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
gap: 1,
mb: 1,
}}
>
<Typography
variant="h6"
component="h4"
sx={{
fontWeight: 'medium',
}}
>
{leader.name}
</Typography>
{leader.linkedin && (
<IconButton
component="a"
href={leader.linkedin}
target="_blank"
rel="noopener noreferrer"
size="small"
aria-label={`${leader.name}'s LinkedIn profile`}
sx={{ padding: 0 }}
>
<LinkedInIcon fontSize="small" />
</IconButton>
)}
</Box>
<Typography
variant="subtitle1"
gutterBottom
sx={{
color: 'text.secondary',
}}
>
{leader.title}
</Typography>
<Typography variant="body2" dangerouslySetInnerHTML={{ __html: leader.bio }} />
</Box>
</Grid>
))}
</Grid>
</Box>
<Divider sx={{ my: 8 }} />
<Box
sx={{
mb: 8,
}}
>
<Typography
variant="h4"
component="h3"
align="center"
sx={{
fontWeight: 'medium',
mb: 4,
}}
>
Early Supporters
</Typography>
<Typography
variant="body1"
component="p"
align="center"
sx={{
mb: 8,
}}
>
We're grateful to the investors and operators who backed Promptfoo early and helped us
build open-source, application-focused AI security.
</Typography>
<Grid
container
spacing={4}
sx={{
justifyContent: 'center',
}}
>
{[
{
name: 'Ganesh Bell',
image: '/img/team/ganesh.jpeg',
description: 'Managing Director, Insight Partners',
},
{
name: 'Zane Lackey',
image: '/img/team/zane.jpeg',
description: 'General Partner, Andreessen Horowitz\nFounder, Signal Sciences',
},
{
name: 'Joel de la Garza',
image: '/img/team/joel.jpeg',
description: 'Investment Partner, Andreessen Horowitz\nCISO, Box',
},
{
name: 'Tobi Lutke',
image: '/img/team/tobi.jpeg',
description: 'CEO, Shopify',
},
{
name: 'Stanislav Vishnevskiy',
image: '/img/team/stan.jpeg',
description: 'CTO, Discord',
},
{
name: 'Frederic Kerrest',
image: '/img/team/frederic.jpeg',
description: 'Vice-Chairman & Co-Founder, Okta',
},
{
name: 'Adam Ely',
image: '/img/team/adam.jpeg',
description: 'EVP, Head of Digital Products, Fidelity\nCISO, Fidelity',
},
].map((investor) => (
<Grid size={{ xs: 12, sm: 6, md: 4 }} key={investor.name}>
<Box
sx={{
textAlign: 'center',
}}
>
<Avatar
alt={investor.name}
src={investor.image}
sx={{ width: 120, height: 120, margin: '0 auto 1rem' }}
/>
<Typography
variant="h6"
component="h4"
gutterBottom
sx={{
fontWeight: 'medium',
}}
>
{investor.name}
</Typography>
<Typography
variant="body2"
sx={{
color: 'text.secondary',
whiteSpace: 'pre-line',
}}
>
{investor.description}
</Typography>
</Box>
</Grid>
))}
</Grid>
</Box>
<Divider sx={{ my: 8 }} />
<Box
sx={{
mb: 8,
}}
>
<Typography
variant="h4"
component="h3"
align="center"
gutterBottom
sx={{
fontWeight: 'medium',
}}
>
An Incredible Open Source Community
</Typography>
<Typography variant="body1" component="p" align="center" sx={{ mb: 2 }}>
Promptfoo is proud to be supported by a vibrant community of over{' '}
{SITE_CONSTANTS.CONTRIBUTOR_COUNT} open source contributors.
</Typography>
<Box
sx={{
display: 'flex',
justifyContent: 'center',
mt: 4,
}}
>
<a href="https://github.com/promptfoo/promptfoo/graphs/contributors">
<img
src="https://contrib.rocks/image?repo=promptfoo/promptfoo"
alt="Promptfoo Contributors"
/>
</a>
</Box>
</Box>
<Box
sx={{
textAlign: 'center',
mb: 8,
}}
>
<Typography
variant="h4"
component="h3"
gutterBottom
sx={{
fontWeight: 'medium',
}}
>
Ready to Secure Your AI Applications?
</Typography>
<Typography variant="body1" component="p" sx={{ mb: 2 }}>
Join leading enterprises who trust Promptfoo to fortify their AI applications.
</Typography>
<Link className="button button--primary button--lg" to="/contact/">
Get in Touch
</Link>
</Box>
</Container>
</ThemeProvider>
);
};
const AboutPage = () => {
const { siteConfig } = useDocusaurusContext();
const siteUrl = siteConfig.url;
return (
<Layout
title="About Promptfoo | AI Security Experts"
description="Learn about Promptfoo's mission to secure AI applications and our team of industry veterans."
>
<Head>
<meta property="og:title" content="About Promptfoo - Securing the Future of AI" />
<meta
property="og:description"
content="Learn about Promptfoo's mission to secure AI applications and our team of industry veterans."
/>
<meta property="og:image" content={`${siteUrl}/img/og/about-og.png`} />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:type" content="website" />
<meta property="og:url" content={`${siteUrl}/about`} />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="About Promptfoo - Securing the Future of AI" />
<meta
name="twitter:description"
content="Learn about Promptfoo's mission to secure AI applications and our team of industry veterans."
/>
<meta name="twitter:image" content={`${siteUrl}/img/og/about-og.png`} />
<link rel="canonical" href={`${siteUrl}/about`} />
</Head>
<AboutPageContent />
</Layout>
);
};
export default AboutPage;