~/lab — proof of work
Client work ships to private repositories, so instead of pointing you at an empty GitHub profile, this page walks through three systems I built and run — with the architecture decisions and the actual source code.
The first exhibit is open in your browser right now.
lab/01 · portfolio.tsx
Everything around this text — the file explorer, the tab bar, the panels, the terminal — is a hand-built VS Code replica, not a template. The tab that opened when you navigated here is React state synced to the router, and it closes like the real editor: focus hands off to the previous file.
The terminal is real — toggle it from the status bar at the bottom of this page.
useEffect(() => {setActiveTab(pathname);// Navigating to a known file that isn't open yet opens its tab,// like opening a file in VS Code (e.g. the /services pages).const known = allIdeFiles.find(file => file.path === pathname);if (known) {setOpenTabs(prev =>prev.some(tab => tab.path === known.path)? prev: [...prev, { name: known.name, path: known.path }]);}}, [pathname]);
lab/02 · webos.tsx
My personal dashboard is a full web OS: draggable, resizable windows with z-order management, a taskbar and start menu, and a virtual filesystem stored in MongoDB. Each internal tool is a “program” — invoicing, markdown notes, an encrypted credential keychain, a prompt library. Skye lives here too, one window among the others.

closeWindow: id => {set(state => {const remainingWindows = state.windows.filter(w => w.id !== id);// Find the next active window (highest z-index that's not minimized)let nextActiveId = null;if (state.activeWindowId === id && remainingWindows.length > 0) {const visibleWindows = remainingWindows.filter(w => !w.isMinimized);if (visibleWindows.length > 0) {nextActiveId = visibleWindows.reduce((prev, current) =>prev.zIndex > current.zIndex ? prev : current).id;}}// …return { windows: remainingWindows, activeWindowId: nextActiveId };});publishAppEvent('window:close', { id });},
lab/03 · skye.ts
Skye is a Claude-powered agent that operates the web OS and lives on Telegram — one shared agent loop serves both channels. It has 34 tools across nine groups: invoices, notes, files, prompts, Google Calendar, Gmail, reminders, and UI control. Reads run freely; risky actions stop and ask.
⏸ saveReminder — needs your approval
“Chase Acme invoice #0038” · tomorrow 09:00
✓ Approve✕ Decline// Returns `confirm` with the authoritative messages + pending writes when a// gated write needs owner approval — the caller persists/carries `messages`// and re-enters with `decision`.export type RunAgentTurnResult =| { status: 'done'; messages: Anthropic.MessageParam[]; finalText: string }| { status: 'confirm'; messages: Anthropic.MessageParam[]; pending: PendingWrite[] }| { status: 'error'; messages: Anthropic.MessageParam[]; message: string };
The write-approval and audit patterns behind Skye are how I build AI assistants for businesses.
AI integration servicesThe auth, encryption, and data-model discipline of the web OS is the baseline for client dashboards and ERPs.
Web development servicesAnd this site is one of 150+ delivered projects — the rest are in the showcase.
Browse projects