Show HN: AI First Virtual Linux Desktop as a Mac App A new Mac app, AI First Virtual Linux Desktop, lets AI agents run as root in a hardware-sandboxed Linux virtual machine, with no permission prompts, and includes preinstalled Claude Code, Codex, Gemini CLI, and MiMo. The app, built on Apple's Virtualization framework, allows drag-and-drop file transfer, clipboard sharing, and one-click factory reset, and is available through the App Store. The AI runs as root. It doesn't ask - it does. This virtual computer exists for one thing: running AI agents in full-permission "YOLO" mode, as the root sudo admin of their own machine. No permission prompts, no babysitting - Claude Code, Codex, Gemini and MiMo install, configure, build and break things at full speed. That's safe to allow, because the whole computer is hardware-sandboxed: the worst an agent can lose is itself, never your Mac. Full sudo, YOLO mode Made to run agents with permission checks off - --dangerously-skip-permissions , --yolo and friends. Here, the AI is the admin. Installs anything apt packages, toolchains, daemons, system services - no "may I?" dialog, no waiting for you to approve each step. Reconfigures everything /etc, cron, systemd, the desktop itself. Root means root - the agent shapes the whole system to the job. Works unattended Give it a goal and walk away. It builds, tests, breaks and fixes at full speed while you do something else. Cannot escape Hardware-isolated by Apple's Virtualization framework. Whatever the agent does in there stays in there - your Mac is never touched. Worst case: Factory Reset If an agent trashes its computer, one click gives it a brand-new one in minutes. Your Mac never even noticed. 1First start Three steps to a complete, AI-ready Linux computer - walled off from your Mac. Click the one button. The app unpacks a complete Linux system onto your Mac - a few minutes, once. Read the tips while you wait. Files in, files out, clipboard, sound - all covered. Bring them back any time. Your desktop appears. A full Linux computer - real browser, real dev toolchain, and four AI coding agents already signed in and ready to build. Use it like a second Mac, minus the risk. Give it room. It cannot get out. Claude Code, Codex, Gemini and MiMo run with full root inside the guest, so they can work without stopping at every step. Hardware-isolated by Apple's Virtualization framework: whatever happens in there stays in there. 2Files in, files out Drag and drop, both directions. No setup needed. INTO Linux Drag a file from the Finder onto the Linux window. It lands on the Linux Desktop . Folders work too. OUT to your Mac Drag a file inside Linux - a "Send to Mac" zone appears bottom-right. Drop it there, or right-click → Send to Mac . It appears in the Files from Linux window tray button in the title bar , where you can drag it straight into the Finder. invisible until you drag - by design. Start moving a file and watch the bottom-right corner. 3Everyday use Copy & paste Text, images, files - both ways. ⌘C on the Mac, paste in Linux. Sound Linux audio plays through your Mac's speakers. Back to your Mac ⌘Tab as always. Linux keeps running until you stop it. Your files persist Home folder survives quitting, updates, even a system rebuild. Throwaway sessions Start one from the launch screen. Quit, and it never existed. Factory Reset Desktop menu → Factory Reset. Brand-new Linux computer. Screenshot & record Titlebar button, or aifcc screenshot / aifcc record . SSH from your Mac THIS Mac only, never your LAN. Run aifcc ssh for the command. Updates Through the App Store, like any app. Home folder always stays. 4Four AI agents, preinstalled No install step. Sign in with your own account/key and go. Claude Code Ready. chrome-devtools-mcp pre-wired for browser automation. Codex Same chrome-devtools-mcp wiring. Gemini CLI Same chrome-devtools-mcp wiring. MiMo Preinstalled, but no chrome-devtools-mcp - its config schema rejects that key. Wire it yourself via mimo mcp . apfel: free on-device AI. Turn it on in Settings - Linux gets an apfel command backed by your Mac's on-device Apple Intelligence. On by default on macOS 26+. 5Power user: Settings reference Under ⌘, , in the app's own tab order. | Tab | What it does | Default | |---|---|---| | General | Cores 1-8 , memory 1-16 GB , display size, recording quality. Applies next launch. | 4 cores, 4 GB | | Storage | Disk location, live usage, Factory Reset. Disks ~40-50 GB live outside the app. | - | | Drag & Drop | Where dropped files land inside Linux: Desktop, Home, Downloads, or custom. | Desktop | | Mount Folder | A real hole in the sandbox - anything inside Linux, including AI tools, can read/change/delete it. Drag-and-drop stays sandboxed and needs no mount. | off | | SSH Access | Guest sshd is always on, reachable only from THIS Mac. User/password both aifcc , or run aifcc ssh . | always on | | MCP AI Control | "Let an AI control the desktop" + guest mirror. See | apfel command backed by the Mac's on-device Apple Intelligence. No cloud, no keys. 6Power user: the aifcc CLI Everything the GUI can do, the CLI can do too - most commands support --json for scripting or an AI to parse. | Command | What it does | |---|---| | version | Print product name + version + build + git SHA JSON . | | vm-config | Validate + clamp a VM profile --cpu --ram-gib --disk-gib , JSON. | | lineage | Parse a golden lineage JSONL file and print rows JSON . | | status | Report VM disks, golden version, last shutdown + boot health --container , JSON . | | logs | Print the captured guest boot console log --container , --tail N , --json . | | diagnostics | One-shot diagnostic bundle: version + VM state + recent boot log --container , JSON . | | ssh | Print how to SSH into the running Linux desktop. | | doctor | Installed app build vs this CLI's build, with an in-sync verdict --json . | | debug-log | The persistent app + guest-agent debug log --container , --tail N , --json . | | screenshot | Capture the Linux desktop to ~/Downloads --window , --max-width N , --out PATH , --json . | | factory-reset | Erase ALL VM state for a brand-new desktop. Requires --yes ; refuses while running. | | desktop | Control the Linux desktop: click / move / type / key / scroll / windows / activate / launch / exec --json . | | mcp | Manage MCP access: serve | enable | disable | status | guest | register . | | record | Record a video of the Linux desktop to ~/Downloads --seconds N , --quality , --out , --json . | | apfel | on | off | status --json - the Mac's on-device AI, bridged into the guest. | 7Power user: drive it with an AI MCP A Model Context Protocol server JSON-RPC 2.0, stdio exposing the desktop as tools. Any MCP client can drive it - never anything on your Mac. claude mcp add aifcc -- aifcc mcp serve register with an MCP client aifcc mcp register wire into the guest's own Claude Code aifcc mcp serve run the server directly factory-reset has no MCP tool - never exposed. Both switches host + guest mirror are on by default on a fresh install; an explicit OFF sticks. | Tool | Description | Args | |---|---|---| | aifcc status | Report the Linux desktop's disks, golden version, boot health. | - | | aifcc version | aifcc version + build + provenance. | - | | aifcc ssh info | How to SSH into the running Linux desktop address + user . | - | | aifcc logs | Recent app + guest-agent log lines. | - | | aifcc diagnostics | One-shot diagnostic bundle: version + VM state + recent boot log. | - | | aifcc doctor | Installed app build vs this CLI's build + an in-sync verdict. | - | | aifcc debug log | The persistent app + guest-agent debug log. | tail int | | aifcc vm config | Resolve a VM profile clamped . | cpu, ramGib, diskGib ints | | aifcc screenshot | Capture the desktop or active window to a PNG, returned inline as base64. Defaults to a token-cheap width. | window bool , maxWidth int, default 1280 | | aifcc desktop click | Click the pointer at guest pixels x, y . | x, y, button, double | | aifcc desktop move | Move the pointer to guest pixels x, y . | x, y | | aifcc desktop type | Type literal text into the focused window. | text | | aifcc desktop key | Press a key or chord xdotool syntax, e.g. Return, ctrl+c . | combo | | aifcc desktop scroll | Scroll the wheel by N negative = down . | amount | | aifcc desktop windows | List open windows id, class, geometry, title . | - | | aifcc desktop activate | Focus/raise a window by title or class substring. | target | | aifcc desktop close | Close a window graceful by title or class substring. | target | | aifcc desktop maximize | Maximize a window by title or class substring. | target | | aifcc desktop minimize | Minimize the active window. | - | | aifcc ssh enable | Enable the guest SSH server open SSH access to the desktop . | - | | aifcc ssh disable | Disable the guest SSH server close SSH access . | - | | aifcc desktop launch | Launch a desktop app by its .desktop id. | app | | aifcc desktop exec | Run a shell command as the desktop user; returns rc/stdout/stderr. | command | | aifcc record | Record a video of the Linux desktop. | seconds 1-600 , quality low|medium|high | 8For AI agents - Machine-readable index: /llms.txt /llms.txt - Full CLI table: cli-table cli-table above 15 rows - Full MCP tool table: mcp-tools mcp-tools above 24 rows - Server: aifcc mcp serve - JSON-RPC 2.0 over stdio, protocol 2024-11-05 - Requires user consent Settings → MCP - on by default on a fresh install factory-reset is never exposed over MCP You can control a full Linux desktop running on my Mac via the "aifcc" MCP server. Available tools: aifcc status, aifcc diagnostics, aifcc logs, aifcc screenshot full desktop or active window; maxWidth to save tokens , and desktop control - aifcc desktop launch, aifcc desktop exec, aifcc desktop windows, aifcc desktop click / move / type / key / scroll, aifcc desktop activate. Screenshot first, then act. Factory reset is intentionally not exposed. Same prompt the app's Settings screen offers via "Copy prompt for an AI" - this page is its durable, linkable version. 9Pricing One price. No tiers, no add-ons, no usage metering. Free for 3 months from first launch, then a single €49/year auto-renewing subscription. It renews yearly unless cancelled at least 24 hours before the period ends; manage or cancel it any time in your Apple Account settings. 10Questions What can an AI actually control? With consent Settings → MCP, on by default , an AI can screenshot, click, type, scroll, manage windows and run shell commands inside Linux - never your Mac, never Factory Reset. I dragged a file out - where is it? Your Mac's Desktop by default change it in Settings → Send to Mac . The Linux dialog names the exact folder. How much disk space does it use? It needs about 34 GB free to set up, and grows to roughly 50 GB as you use it. That data stays on your Mac after you delete the app - run Factory Reset first if you want it gone. Text is too small / too big. Settings ⌘, → display size. Applies next launch. Is my Mac safe? Yes - Apple's hardware virtualization sandbox. No access to your files unless you mount a folder yourself. Something looks wrong - how do I report it? Help → Email Support , Desktop menu → "Report a Problem", or the Feedback & bug reports feedback section below. Mention the build from the badge. 11Feedback & bug reports Found a bug, hit something confusing, or have an idea for AIFCC? One inbox reads all of it. We read every message. For bug reports, include your build number Settings → About and what you expected to happen.