'use client'; import { motion } from 'framer-motion'; import { X, Check } from 'lucide-react'; const frictions = [ { number: '01', title: 'Coding Agents Need Sandboxes', problem: "You can't let AI execute arbitrary code on your production servers. Coding agents need isolated environments, but existing SDKs assume local execution.", solution: 'A server that runs inside the sandbox and exposes HTTP/SSE.', accentColor: 'orange', }, { number: '02', title: 'Every Coding Agent is Different', problem: 'Claude Code, Codex, OpenCode, and Amp each have proprietary APIs, event formats, and behaviors. Swapping coding agents means rewriting your entire integration.', solution: 'One HTTP API. Write your code once, swap coding agents with a config change.', accentColor: 'purple', }, { number: '03', title: 'Sessions Are Ephemeral', problem: 'Coding agent transcripts live in the sandbox. When the process ends, you lose everything. Debugging and replay become impossible.', solution: 'Universal event schema streams to your storage. Persist to Postgres or Rivet, replay later, audit everything.', accentColor: 'blue', }, ]; const accentStyles = { orange: { gradient: 'from-orange-500/20', border: 'border-orange-500/30', glow: 'rgba(255,79,0,0.15)', number: 'text-orange-500', }, purple: { gradient: 'from-purple-500/20', border: 'border-purple-500/30', glow: 'rgba(168,85,247,0.15)', number: 'text-purple-500', }, blue: { gradient: 'from-blue-500/20', border: 'border-blue-500/30', glow: 'rgba(59,130,246,0.15)', number: 'text-blue-500', }, }; export function PainPoints() { return (

Running coding agents remotely is hard.

Coding agents need sandboxes, but existing SDKs assume local execution. SSH breaks, CLI wrappers are fragile, and building from scratch means reimplementing everything for each coding agent.

{frictions.map((friction, index) => { const styles = accentStyles[friction.accentColor as keyof typeof accentStyles]; return ( {/* Top shine */}
{/* Hover glow */}
{/* Corner highlight */}
{/* Title */}

{friction.title}

{/* Problem */}
Problem

{friction.problem}

{/* Solution */}
Solution

{friction.solution}

); })}
); }