import { BetaSignup } from './beta-signup' async function getStarCount(): Promise { try { const res = await fetch('https://api.github.com/repos/GreyhavenHQ/greywall', { next: { revalidate: 3600 }, headers: { Accept: 'application/vnd.github+json' }, }) if (!res.ok) return '138 stars' const data = await res.json() return typeof data.stargazers_count === 'number' ? `${data.stargazers_count} stars` : '138 stars' } catch { return '138 stars' } } export async function Hero() { const stars = await getStarCount() const badges = [ { href: 'https://github.com/GreyhavenHQ/greywall', label: 'GitHub', value: stars }, { href: 'https://github.com/GreyhavenHQ/greywall/blob/main/LICENSE', label: 'License', value: 'Apache-2.0' }, { href: 'https://github.com/GreyhavenHQ/greywall/releases', label: 'Release', value: 'v0.3.1' }, { href: 'https://github.com/GreyhavenHQ/greywall', label: 'Go', value: 'v1.25' }, { href: 'https://www.producthunt.com/products/greywall?launch=greywall', label: 'Product Hunt', value: 'Greywall' }, ] return (

Contain and observe AI agents without friction.

Default-deny filesystem, network, and command controls around AI agents on Linux and macOS, with records of what they tried to do.

{badges.map((badge) => ( {badge.label} {badge.value} ))}
) }