// Sections 5–7: Architecture rings, Comparison table, Proof/Transparency // ─── ARCHITECTURE ───────────────────────────────────────────────── function Architecture() { const [hover, setHover] = React.useState('brain'); const processes = { voice: { r: 280, label: 'VOICE', col: FONGOS.cyanSoft, desc: 'Listens and speaks. Natural back-and-forth, ~180ms response. Runs on your machine \u2014 nothing you say leaves.' }, eyes: { r: 220, label: 'EYES', col: FONGOS.cyan, desc: 'Watches your screen natively. Reads windows, dialogs, text fields as structured content \u2014 not screenshots. Password fields and sensitive apps are never observed.' }, brain: { r: 150, label: 'BRAIN', col: FONGOS.purpleSoft, desc: 'Where he thinks. Plans, reasons, catches his own mistakes, forms goals. A small local model handles the routine; a larger cloud model is available when you allow it.' }, workers: { r: 80, label: 'HANDS', col: FONGOS.purple, desc: 'Where he acts. Writes files, runs code, opens apps, dispatches parallel work. Every action is approvable; every action is reversible.' }, }; // Event dots traveling between rings const [tick, setTick] = React.useState(0); React.useEffect(() => { let raf; const loop = () => { setTick(t=>t+1); raf = requestAnimationFrame(loop); }; raf = requestAnimationFrame(loop); return () => cancelAnimationFrame(raf); }, []); const events = [ { from: 280, to: 80, phase: 0.0, color: FONGOS.cyanSoft, angle: 30 }, { from: 220, to: 150, phase: 0.33, color: FONGOS.cyan, angle: 120 }, { from: 150, to: 80, phase: 0.66, color: FONGOS.purpleSoft, angle: 200 }, { from: 80, to: 280, phase: 0.5, color: FONGOS.cyan, angle: 340 }, { from: 150, to: 220, phase: 0.15, color: FONGOS.purpleSoft, angle: 90 }, ]; return (
Four senses.
One nervous system.

Voice to hear you. Eyes to see your screen. A brain that plans and corrects itself. Hands that act — always with your approval.

{/* Rings */}
{Object.entries(processes).map(([k, p]) => { const isH = hover === k; return ( setHover(k)} /> {/* Label on ring */} setHover(k)} >{p.label} {/* Sense chip on right */} {['hears','sees','thinks','acts'][['voice','eyes','brain','workers'].indexOf(k)]} ); })} {/* Event pulses traveling along rings */} {events.map((e, i) => { const t = ((tick * 0.008 + e.phase) % 1); const ang = (e.angle + t * 360) * Math.PI / 180; const r = e.from; const x = 320 + r * Math.cos(ang); const y = 320 + r * Math.sin(ang); return ( ); })} {/* Center core */} CORE · MEMORY
{/* Detail panel */}
SENSE · {processes[hover].label}
his {processes[hover].label.toLowerCase()}

{processes[hover].desc}

{[ ['runs on', 'your machine'], ['privacy', hover === 'eyes' ? 'passwords redacted' : hover === 'voice' ? 'nothing uploaded' : 'yours alone'], ['approval', hover === 'workers' ? 'every action' : hover === 'brain' ? 'high-risk only' : 'not needed'], ].map(([k,v]) => (
{k} {v}
))}
hover a ring to inspect
); } // ─── COMPARISON ─────────────────────────────────────────────────── function Compare() { const rows = [ ['Remembers across sessions', 'no', 'limited', 'forever'], ['Runs on your hardware', 'no', 'no', 'yes'], ['Sees your screen', 'no', 'no', 'yes'], ['Forms his own goals', 'no', 'no', 'yes'], ['Gets cheaper over time', 'no', 'no', 'yes'], ['Works offline', 'no', 'no', 'yes'], ['Setup time', '0 min', '0 min', '~30 min'], ]; const cell = (v) => { if (v === 'yes') return ✓ yes; if (v === 'no') return — no; if (v === 'limited') return ~ limited; if (v === 'forever') return ✓ forever; return {v}; }; return (
Not "better than ChatGPT."
Just different.

Fongos is not a drop-in replacement. He costs you ~30 minutes of setup and a capable machine. If that trade doesn't make sense for you, it doesn't.

{rows.map((row, i) => ( ))}
capability ChatGPT / Copilot Claude Desktop Fongos
{row[0]} {cell(row[1])} {cell(row[2])} {cell(row[3])}
); } // ─── PROOF / TRANSPARENCY ──────────────────────────────────────── function Proof() { // Simulated live stats — tick up occasionally const [stats, setStats] = React.useState({ rules: 1428, msgs: 18525, agents: 43, skills: 424, tools: 29, lastImprov: '2m ago', }); React.useEffect(() => { const id = setInterval(() => { setStats(s => ({ ...s, rules: s.rules + (Math.random() < 0.15 ? 1 : 0), msgs: s.msgs + (Math.random() < 0.5 ? Math.floor(Math.random()*3) : 0), })); }, 2000); return () => clearInterval(id); }, []); const fmt = (n) => n.toLocaleString(); return (
Live, from the actual system.
Updated as it thinks.
{[ { k: 'rules', v: fmt(stats.rules), l: 'learned rules', sub: 'up 14 this week' }, { k: 'msgs', v: fmt(stats.msgs), l: 'memories', sub: 'oldest · oct 2024' }, { k: 'agents', v: `${stats.agents}`, l: 'agents active', sub: `${stats.skills} skills · ${stats.tools} tools` }, { k: 'imp', v: stats.lastImprov, l: 'last self-improvement', sub: 'rule #1,428 accepted' }, ].map((s) => (
{s.v}
{s.l}
{s.sub}
))}
{[ { t: 'Request early access', s: 'private beta · limited seats', href: '#install', icon: '→' }, { t: 'Read the case studies', s: 'real sessions · real audits · real outcomes', href: '#', icon: '◆' }, ].map((l) => (
{l.icon}
{l.t}
{l.s}
))}

designed, built, and running on a fongos instance
that watched it happen

); } Object.assign(window, { Architecture, Compare, Proof });