• English
  • Introduction

    aiod is the AIO Sandbox daemon. It serves the sandbox tools API over HTTP and WebSocket — commands, files, terminals, code execution, browser control, and MCP.

    The design keeps dependencies minimal:

    • static musl builds on Linux
    • a native Windows build
    • graceful degradation — browser, interpreters, and the desktop GUI worker are optional backends, detected at runtime

    Linux builds cover x86_64, arm64, and riscv64 (static musl). Windows builds cover x86_64 (aiod.exe, computer-use.exe).

    daemon capability scope

    • Commands — runs a shell command as a process (POST /v2/commandsPOST /v1/bash/exec), or opens a persistent PTY-backed terminal (/v2/pty/v1/shell).

    • Files — reads, writes, searches, and watches files on disk (/v2/fs, /v2/watch/v1/file/*).

    • Code — executes Python or JavaScript snippets, with optional sessions (POST /v2/code/executePOST /v1/code/execute).

    • Browser — connects to a Chromium listening on its debug port (default 127.0.0.1:9222) and exposes navigate, click, fill, screenshot, and more over REST (/v2/browser/*/v1/browser/*).

    • Desktop — a separate computer-use worker; /v2/computer/* is proxied to it for GUI control: screenshots, mouse and keyboard, clipboard, and the accessibility tree.

    • MCPPOST /mcp serves the built-in tools as one stateless JSON-RPC endpoint:

      • run a command
      • run code
      • file operations
      • browser info
      • load a skill

      It can also aggregate other MCP servers.

    aiod detects its optional backends, the browser, the interpreters, and the desktop GUI worker, and GET /v1/capabilities reports what is actually available.

    Against the 1.x Python server on the same host, the daemon process idles at far less memory and answers common calls faster; the chart has the numbers. Image boot figures are on Quick Start.

    API planes: v1 and v2

    /v1/* is compatible with the 1.x Python server. /v2/* is the current, path-keyed surface for new integrations.

    Both are served by default (AIO_API_SURFACE=full). Set AIO_API_SURFACE=v2 to serve only the modern surface. See the API reference.