'use client' import { ArrowRight, Check, X, Minus } from 'lucide-react' type CellValue = 'yes' | 'no' | 'partial' | string interface Row { feature: string greywall: CellValue safehouse: CellValue claudeSandbox: CellValue containers: CellValue } const rows: Row[] = [ { feature: 'Linux support', greywall: 'yes', safehouse: 'no', claudeSandbox: 'yes', containers: 'yes', }, { feature: 'macOS support', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'yes', containers: 'partial', }, { feature: 'Filesystem isolation', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'yes', containers: 'yes', }, { feature: 'Network isolation', greywall: 'yes', safehouse: 'no', claudeSandbox: 'yes', containers: 'yes', }, { feature: 'Transparent network capture', greywall: 'Linux', safehouse: 'no', claudeSandbox: 'no', containers: 'no', }, { feature: 'Command blocking', greywall: 'yes', safehouse: 'no', claudeSandbox: 'no', containers: 'no', }, { feature: 'Real-time violation monitoring', greywall: 'yes', safehouse: 'no', claudeSandbox: 'no', containers: 'no', }, { feature: 'Learning mode', greywall: 'yes', safehouse: 'no', claudeSandbox: 'no', containers: 'no', }, { feature: 'Works with any agent', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'no', containers: 'yes', }, { feature: 'Sandboxes entire process', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'partial', containers: 'yes', }, { feature: 'Native tool access', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'yes', containers: 'no', }, { feature: 'No image rebuilds on changes', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'yes', containers: 'no', }, { feature: 'Open source', greywall: 'yes', safehouse: 'yes', claudeSandbox: 'partial', containers: 'yes', }, { feature: 'Syscall filtering', greywall: 'yes', safehouse: 'no', claudeSandbox: 'no', containers: 'partial', }, { feature: 'Dynamic allow/deny', greywall: 'yes', safehouse: 'no', claudeSandbox: 'partial', containers: 'no', }, { feature: 'No deprecated APIs', greywall: 'yes', safehouse: 'no', claudeSandbox: 'yes', containers: 'yes', }, ] function CellIcon({ value }: { value: CellValue }) { if (value === 'yes') { return ( ) } if (value === 'no') { return ( ) } if (value === 'partial') { return ( ) } return ( {value} ) } export function Comparison() { return (
How it compares

Not all sandboxes are equal.

Greywall combines filesystem isolation, network control, syscall filtering, and real-time monitoring in a single tool. Here's how it stacks up.

{/* Desktop table */}
{rows.map((row, i) => ( ))}
Feature Greywall Safehouse Claude Sandbox Containers
{row.feature}
{/* Mobile cards */}
{rows.map((row) => (
{row.feature}
Greywall
Safehouse
Claude
Containers
))}
{/* Legend */}
Supported
Partial
Not supported
) }