Standboy logo

Standboy

A Game Boy that wakes up while your agent works

2026-05-15

Product Introduction

  1. Definition: Standboy is a Visual Studio Code (VS Code) extension that integrates a fully functional Game Boy, Game Boy Color, and Game Boy Advance emulator directly into the editor's sidebar. It is a technical productivity tool that leverages the EmulatorJS emulation core and official AI agent lifecycle APIs to create a context-aware distraction management system for developers.
  2. Core Value Proposition: Standboy exists to combat developer context-switching and productivity loss during AI coding agent wait times. Its primary value is providing a built-in, bounded micro-distraction (a classic video game emulator) that automatically appears and disappears in sync with your AI assistant's activity, keeping you within your IDE instead of losing focus to external websites.

Main Features

  1. Context-Agent Auto-Show/Hide: This feature automatically expands the Standboy sidebar panel when a connected AI agent (like Cursor's native agent or Claude Code) begins generating code, and collapses it when the agent stops. It works by installing official lifecycle hooks (beforeSubmitPrompt, UserPromptSubmit) into the agent's configuration files (~/.cursor/hooks/hooks.json, ~/.claude/settings.json). These hooks trigger a small Node.js marker script (marker.cjs) that creates/deletes a sentinel file (agent-active). The extension's host process watches this file system event to toggle panel visibility with intelligent 5-second debounce delays on both show and hide actions to prevent strobing on quick agent turns.

  2. Persistent, Managed ROM & Save Library: Standboy implements a content-addressable storage system for game ROMs and save files. When a user loads a .gb, .gbc, or .gba file, it is hashed (SHA-256), copied into a managed roms/ directory under the library root, and indexed in library.json. In-game battery saves (SRAM) are automatically mirrored from the emulator's live IndexedDB state to the saves/ directory on key events: panel hide, editor reload, and before manual export. This ensures game progress persists across VS Code sessions and system restarts.

  3. Auto ROM Identification & Cover Art Fetching: Upon adding a ROM, Standboy performs a SHA-1 hash lookup against a bundled No-Intro database (the same curated database used by RetroArch) to identify the canonical game title. It then attempts to fetch the corresponding box art by querying the libretro-thumbnails repository via a one-time, host-side network request. The cover image is cached locally (covers/ directory). Unidentified ROMs (homebrew, hacks) display a fallback letter tile. This feature works entirely offline after the initial fetch.

Problems Solved

  1. Pain Point: The "hidden tax" of AI-assisted development is the frequent, short idle periods where developers switch context to social media or other distracting sites while waiting for code generation, leading to significant productivity drain and difficulty re-focusing.
  2. Target Audience: The primary user personas are software developers and engineers who regularly use AI coding assistants within VS Code or its forks (like Cursor). This includes full-stack developers, DevOps engineers, and students who value workflow efficiency and enjoy retro gaming as a quick mental break.
  3. Use Cases: Essential for developers using Cursor's agent or Claude Code for refactoring, boilerplate generation, or debugging, where agent thinking time ranges from 10 seconds to several minutes. It's also valuable for developers working in Pomodoro sessions who want a structured, integrated short break activity that doesn't require leaving their coding environment.

Unique Advantages

  1. Differentiation: Unlike traditional standalone emulators (mGBA, RetroArch) or browser-based emulator sites, Standboy is deeply integrated into the IDE workflow. It doesn't rely on heuristic guessing (like edit burst detection) for auto-show but uses the AI agents' own first-class lifecycle APIs for precise timing. Compared to other "productivity game" extensions, it offers a full-featured, multi-platform emulator with persistent saves and a managed library, not a simple minigame.
  2. Key Innovation: The integration method via official agent hooks (hooks.json, settings.json) is the key technical innovation. This approach is non-invasive, respects existing user configurations through idempotent merging, and provides a reliable, low-latency signal for agent activity that is superior to polling or analyzing editor content changes. The system's design ensures the emulator webview is retained and paused in the background, allowing for true mid-frame resume.

Frequently Asked Questions (FAQ)

  1. Is Standboy legal to use? Standboy itself is legal open-source software under the MIT license. It functions as an emulator front-end and does not bundle any copyrighted game ROMs. Users must supply their own legally obtained ROM files, typically backups of games they own. Nintendo's Game Boy trademarks are property of Nintendo Co., Ltd.
  2. How does Standboy connect to AI agents like Claude Code? Standboy adds specific event hook entries to the agent's configuration file. For Claude Code, it adds commands for UserPromptSubmit and PreToolUse (start) and Stop (stop) to ~/.claude/settings.json. These hooks execute a small Node.js script that creates a temporary file, which the extension monitors to control the sidebar panel's visibility.
  3. Where are my game saves stored, and can I back them up? All Standboy data—ROM copies, save files (*.sav), cover art, and configuration—is stored in a plain folder on your disk. The default location is within VS Code's globalStorage path. You can back up everything by copying this entire folder. You can also set the standboy.libraryDirectory configuration to point to a cloud-synced folder (like iCloud Drive or Dropbox) for automatic backup.
  4. Why isn't the panel auto-showing when my AI agent is working? First, ensure the feature is enabled via the menu → Detection section and your agent is toggled On. Second, verify the hooks were written correctly by checking the relevant config file (~/.cursor/hooks/hooks.json or ~/.claude/settings.json). Finally, use the Show logs command from the menu to see if the extension is detecting the sentinel file changes. There is also an intentional 5-second delay before showing to filter out very brief agent activity.
  5. How do I properly uninstall Standboy? Before uninstalling the extension from VS Code, you must open the Standboy panel, click the menu, go to the Detection section, and toggle your connected agent Off. This removes the hook entries from the agent's config files. If you uninstall first, you will need to manually edit hooks.json or settings.json to remove the marker.cjs command blocks to prevent the agent from trying to execute a missing script.

Subscribe to Our Newsletter

Get weekly curated tool recommendations and stay updated with the latest product news