'use client' import { useState } from 'react' import { Download, Copy, Check } from 'lucide-react' import { PlatformToggle, usePlatform } from './platform-toggle' const linuxSteps = [ { label: 'Install', cmd: 'curl -fsSL https://raw.githubusercontent.com/GreyhavenHQ/greywall/main/install.sh | sh', }, { label: 'Dependencies', cmd: 'sudo apt install bubblewrap socat', }, { label: 'Setup proxy', cmd: 'greywall setup', }, { label: 'Run sandboxed', cmd: 'greywall -- claude', }, ] const macosSteps = [ { label: 'Install', cmd: 'curl -fsSL https://raw.githubusercontent.com/GreyhavenHQ/greywall/main/install.sh | sh', }, { label: 'Setup proxy', cmd: 'greywall setup', }, { label: 'Run sandboxed', cmd: 'greywall -- claude', }, ] export function GettingStarted() { const [platform] = usePlatform() const [copiedIdx, setCopiedIdx] = useState(null) const steps = platform === 'linux' ? linuxSteps : macosSteps function copy(text: string, idx: number) { navigator.clipboard.writeText(text) setCopiedIdx(idx) setTimeout(() => setCopiedIdx(null), 2000) } return (
Getting started

{platform === 'linux' ? 'Four steps. Full isolation.' : 'Three commands. Done.'}

{platform === 'linux' ? 'A single Go binary plus two standard packages. No containers, no daemon, no build step.' : 'A single Go binary. No extra packages, no containers, no daemon. Uses built-in macOS sandboxing.'}

{steps.map((step, i) => (
{i + 1}
{step.label} {step.cmd}
))}
{platform === 'linux' ? '5' : '3'}
{platform === 'linux' ? 'Security layers' : 'Enforcement layers'}
0
Containers needed
1
Binary to install
) }