{"slug": "vibeos", "title": "VibeOS", "summary": "VibeOS, a fully hallucinated operating system for macOS inspired by a BUILD 2026 demo, launches as a real desktop shell with fake apps generated on the fly by Anthropic's Claude AI. The system creates a functional menu bar, dock, and draggable windows locally, while each app window is streamed as an interactive HTML mini-app running in a sandboxed iframe, with Claude writing working JavaScript for local computation. Users can log into different personas that change the entire OS theme and app cache, with the system supporting persistent caching, prefetching, and patch updates to minimize API calls.", "body_md": "A fully hallucinated operating system for macOS, inspired by Steve Sanderson's\n[vibeOS](https://vibeos.sh/) from BUILD 2026.\n\nThe desktop shell is real and local (menu bar, dock, draggable windows, menus —\nall instant, zero API calls). The *apps* are not: each app window is hallucinated\nby Claude as a self-contained interactive HTML mini-app running in a sandboxed\niframe. Claude writes working JavaScript on the fly, so a calculator actually\ncomputes locally; only actions that need fresh imagination (navigating the fake\nSafari, etc.) trigger a regeneration. Opened apps are cached, so reopening is\ninstant.\n\n- macOS 13+\n- Swift toolchain (Xcode or Command Line Tools:\n`xcode-select --install`\n\n) - An Anthropic API key (\n[https://console.anthropic.com](https://console.anthropic.com))\n\n```\nmake run          # build & launch\nmake app          # build WibeOS.app, then: open WibeOS.app\n```\n\nOn first launch it asks for your API key (stored in the app's preferences;\nor set `ANTHROPIC_API_KEY`\n\nin the environment instead).\n\nThe dock has an App Store stocked entirely with apps invented for whoever is logged in — Get installs them to the dock permanently (per persona; right-click a dock icon to remove). On first login each persona also gets a full OS theme hallucinated for them — wallpaper, accent, menu bar, dock, window chrome, fonts — and apps are told the accent/dark-mode so they match.\n\nBoot lands on a login screen. Who you log in as changes *everything*: the\npersona is injected into every hallucination, so Grandma's Mail is chain\nletters in giant fonts while the hacker kid's whole machine is neon-on-black\n1998. Each persona gets its own app cache. Click **+** to invent new personas\n(\"a medieval wizard discovering computers\"); right-click an avatar to remove\nit. Log out via the menu.\n\n- Click dock icons to \"launch\" apps — you watch the HTML stream by as Claude hallucinates the app, then it becomes real(ish). Click ✨ to imagine any app.\n- Option-click a dock icon (or View → Re-imagine) to force a fresh hallucination instead of the cached version.\n- Menu bar, window dragging/minimize/zoom, Cmd+W close — all local and instant.\n`Cmd+R`\n\nreboots.`Cmd+Ctrl+F`\n\nfor full screen — recommended for the illusion.- Right-click → Inspect Element works for debugging the generated HTML.\n- Camera/photo-booth apps use your real webcam (macOS will ask once). For the\npermission prompt to be attributed correctly, run as a bundle:\n`make app`\n\nthen`open WibeOS.app`\n\n— with`make run`\n\nthe prompt belongs to your terminal.\n\n**Persistent cache**: each app is hallucinated once, then stored in`~/Library/Application Support/wibeOS/cache`\n\n— reopening is instant, even across reboots. Option-click a dock icon or View → Re-imagine to regenerate.**Prefetch**: at boot, the dock apps are pre-hallucinated in the background (2 at a time), so most apps are ready before you click. Disable with`WIBEOS_PREFETCH=0`\n\n(first boot prefetch costs roughly 8 app generations).**Patch updates**: data-wibe actions (browser navigation, opening an email…) return only the changed region as`<wibe-patch select=\"…\">`\n\nblocks instead of the whole app — a fraction of the tokens, applied live without remounting.**Prompt caching**: the system prompt is cached server-side across calls.** Model**: defaults to`claude-haiku-4-5-20251001`\n\n(fast). For fancier apps:`WIBEOS_MODEL=claude-sonnet-4-6 make run`\n\n.\n\n- System prompt: edit\n`systemPrompt`\n\nin`Sources/WibeOS/AppDelegate.swift`\n\nto change the OS's personality, default dock, look, etc.\n\n```\nopen app ─▶ shell asks Claude for ONE self-contained HTML app (streamed)\n         ─▶ injected bridge script added, mounted in sandboxed <iframe>\n         ─▶ app runs locally (its own JS) — most clicks cost nothing\n         ─▶ controls marked data-wibe / data-wibe-enter round-trip to Claude\n            for fresh hallucinated content (whole-window re-render)\n```\n\nEach window keeps its own small conversation history (creation pair + last 6 messages), so updates stay consistent and cheap. The Swift layer is a stateless streaming proxy to the Anthropic API.\n\nOnly app generation and data-wibe actions cost tokens; everything else is local.", "url": "https://wpnews.pro/news/vibeos", "canonical_source": "https://github.com/hansstam86/wibeos/tree/main", "published_at": "2026-06-06 15:41:02+00:00", "updated_at": "2026-06-06 16:19:43.299160+00:00", "lang": "en", "topics": ["ai-products", "generative-ai", "ai-tools", "large-language-models", "ai-agents"], "entities": ["VibeOS", "Steve Sanderson", "Claude", "Anthropic", "macOS", "Swift", "Xcode", "BUILD 2026"], "alternates": {"html": "https://wpnews.pro/news/vibeos", "markdown": "https://wpnews.pro/news/vibeos.md", "text": "https://wpnews.pro/news/vibeos.txt", "jsonld": "https://wpnews.pro/news/vibeos.jsonld"}}