{
  "generated_at": "2026-05-18T15:03:14.334Z",
  "canonical_origin": "https://miosa.ai",
  "worker_fallback_origin": "https://miosa.roberto-c49.workers.dev",
  "docs_home": "https://miosa.ai/docs",
  "llms": "https://miosa.ai/llms.txt",
  "llms_full": "https://miosa.ai/llms-full.txt",
  "openapi": "https://miosa.ai/openapi.yaml",
  "pages": [
    {
      "slug": "",
      "path": "/docs",
      "url": "https://miosa.ai/docs",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs",
      "title": "MIOSA Documentation",
      "description": "Build, preview, and deploy AI-generated apps on managed compute — one workspace API key, your customers attributed.",
      "source": "src/routes/docs/+page.md",
      "content_excerpt": "# MIOSA Documentation\n\n<div class=\"docs-hero-actions\">\n  <a class=\"docs-hero-cta primary\" href=\"/docs/quickstart/\">Quickstart →</a>\n  <a class=\"docs-hero-cta secondary\" href=\"/docs/api-reference/\">API Reference</a>\n</div>\n\n<p class=\"docs-last-updated\">Last updated: <time datetime=\"2026-05-17\">May 17, 2026</time></p>\n\nMIOSA is the AI compute platform — a unified surface for building, deploying, and operating AI-powered apps. Spin up isolated sandboxes for code-gen agents, publish versioned deploy"
    },
    {
      "slug": "api",
      "path": "/docs/api",
      "url": "https://miosa.ai/docs/api",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api",
      "title": "Interactive API Reference — MIOSA Docs",
      "description": "Browse and try every MIOSA API endpoint interactively. Covers sandboxes, computers, deployments, API keys, events, and more.",
      "source": "src/routes/docs/api/+page.svelte",
      "content_excerpt": "{#if !mounted} {/if}"
    },
    {
      "slug": "api-reference",
      "path": "/docs/api-reference",
      "url": "https://miosa.ai/docs/api-reference",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference",
      "title": "API Reference",
      "description": "REST API reference for the MIOSA platform — base URL, auth, request/response envelopes, and the full endpoint index.",
      "source": "src/routes/docs/api-reference/+page.md",
      "content_excerpt": "Want to browse and try endpoints without writing code?\n  The <a href=\"/docs/api\">Interactive API Reference</a> renders the full\n  OpenAPI spec with an in-browser request runner — no setup required.\n\nEvery MIOSA API endpoint is REST over HTTPS, returns JSON, and follows a consistent envelope format. The SDKs wrap these endpoints — you can use them directly when you need low-level control or want to integrate from a language without an official SDK.\n\n## Base URL\n```\n\nhttps://api.miosa.ai/api/v1\n``"
    },
    {
      "slug": "api-reference/computers",
      "path": "/docs/api-reference/computers",
      "url": "https://miosa.ai/docs/api-reference/computers",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/computers",
      "title": "Computers API",
      "description": "API reference for creating, managing, and controlling MIOSA computers — full lifecycle, desktop control, files, metrics, and env vars.",
      "source": "src/routes/docs/api-reference/computers/+page.md",
      "content_excerpt": "Computers are persistent desktop VMs — full Firecracker microVMs with a Linux desktop, VNC streaming, and a resident envd agent that accepts exec, file, and desktop commands. Base path: `/api/v1/computers`.\n\nVerbs supported: **GET** (list/get/config), **POST** (create/start/stop/restart/clone/resize), **PATCH** (update), **PUT** (update), **DELETE** (delete).\n\nAll mutation endpoints (`POST`, `PATCH`, `PUT`, `DELETE`) accept an `Idempotency-Key` header. Use a UUID v4. Repeating the same key withi"
    },
    {
      "slug": "api-reference/credits",
      "path": "/docs/api-reference/credits",
      "url": "https://miosa.ai/docs/api-reference/credits",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/credits",
      "title": "Credits API",
      "description": "API reference for checking credit balance, transaction history, and usage data.",
      "source": "src/routes/docs/api-reference/credits/+page.md",
      "content_excerpt": "MIOSA uses a credit-based billing system. Credits are consumed for compute time and AI API calls.\n\nBase path: `/api/v1/credits`\n\n---\n\n## Get Balance\n\n**`GET /api/v1/credits/balance`**\n\nReturns the current credit balance for your tenant.\n\n### Response — `200 OK`\n```json\n{\n  \"tenant_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"balance_credits\": 850,\n  \"lifetime_earned\": 1000,\n  \"lifetime_spent\": 150,\n  \"credit_expiry_at\": \"2026-10-08T00:00:00Z\",\n  \"updated_at\": \"2026-04-11T15:00:00Z\"\n}\n```\n\n###"
    },
    {
      "slug": "api-reference/custom-domains",
      "path": "/docs/api-reference/custom-domains",
      "url": "https://miosa.ai/docs/api-reference/custom-domains",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/custom-domains",
      "title": "Custom Domains API",
      "description": "API reference for mapping tenant-owned FQDNs to MIOSA previews with automatic TLS.",
      "source": "src/routes/docs/api-reference/custom-domains/+page.md",
      "content_excerpt": "Custom domains let you expose MIOSA previews, computers, and deployments under tenant-owned FQDNs. There are four related surfaces:\n\n- **Computer custom domains** map one fully qualified domain, such as `app.yourdomain.com`, to one Computer service.\n- **Deployment custom domains** map one fully qualified domain, such as `program.drsmithclinic.com`, to one Deployment.\n- **Tenant preview domains** white-label generated preview links for the whole organization. After configuration, sandbox `/expose"
    },
    {
      "slug": "api-reference/deployments",
      "path": "/docs/api-reference/deployments",
      "url": "https://miosa.ai/docs/api-reference/deployments",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/deployments",
      "title": "API Reference / Deployments",
      "description": "REST API for the Deployment resource — create, list, get, update, delete, publish, rollback.",
      "source": "src/routes/docs/api-reference/deployments/+page.md",
      "content_excerpt": "A **Deployment** is the stable production object for a published app/site/API. See [Deploy / Overview](/docs/deploy/overview/) for the conceptual model.\n\nSandbox-sourced create + publish + rollback are part of Phase 2B / 3 of the deployment refactor. Today, the backward-compatible `POST /api/v1/sandboxes/:id/deploy` route exists and uses the sandbox-backed bridge. Endpoints below show the steady-state shape; in-progress endpoints are marked.\n\n## Endpoints\n```http\nPOST   /api/v1/projects/:project"
    },
    {
      "slug": "api-reference/desktop",
      "path": "/docs/api-reference/desktop",
      "url": "https://miosa.ai/docs/api-reference/desktop",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/desktop",
      "title": "Desktop API",
      "description": "API reference for all desktop control endpoints — screenshot, mouse, keyboard, clipboard, windows, accessibility tree.",
      "source": "src/routes/docs/api-reference/desktop/+page.md",
      "content_excerpt": "Desktop control endpoints proxy commands to the resident envd agent inside the computer VM via the MIOSA control plane. All coordinates are in screen pixels (0,0 = top-left).\n\nBase path: `/api/v1/computers/{id}/desktop`\n\nAll desktop endpoints require the computer to be in `\"running\"` status. Returns `409 COMPUTER_NOT_RUNNING` if the computer is stopped or provisioning.\n\nRate limit: 300 req/min per workspace. Individual desktop actions are fast but high-frequency AI agents should batch operations"
    },
    {
      "slug": "api-reference/errors",
      "path": "/docs/api-reference/errors",
      "url": "https://miosa.ai/docs/api-reference/errors",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/errors",
      "title": "Error Codes",
      "description": "Every error code the MIOSA API returns, what it means, and how to handle it.",
      "source": "src/routes/docs/api-reference/errors/+page.md",
      "content_excerpt": "Every MIOSA API error follows a single envelope shape. The HTTP status indicates the broad class; the `code` field is the machine-readable reason.\n\n```json\n{\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"sandbox not found\",\n    \"request_id\": \"req_01jv...\"\n  }\n}\n```\n\nInclude `request_id` whenever you contact support. It correlates the request across all internal services.\n\n---\n\n## Authentication errors\n\nReturned by the `ApiKeyAuth` plug before the request reaches any controller.\n\n| Code |"
    },
    {
      "slug": "api-reference/events",
      "path": "/docs/api-reference/events",
      "url": "https://miosa.ai/docs/api-reference/events",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/events",
      "title": "Events (SSE)",
      "description": "Server-Sent Event streams for real-time updates from sandboxes, computers, deployments, and builds.",
      "source": "src/routes/docs/api-reference/events/+page.md",
      "content_excerpt": "MIOSA exposes SSE streams for resources that produce timed events: sandboxes, computer sessions, deployment builds, sandbox-template builds, and computer logs. All streams follow the same authentication and envelope pattern.\n\n---\n\n## Authentication pattern\n\nThe browser `EventSource` API cannot send an `Authorization` header. Use the two-step ticket flow for all SSE connections:\nDiagram:\nsequenceDiagram\n  participant Client\n  participant MIOSA API\n  Client->>MIOSA API: POST /api/v1/auth/sse-ticke"
    },
    {
      "slug": "api-reference/exec",
      "path": "/docs/api-reference/exec",
      "url": "https://miosa.ai/docs/api-reference/exec",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/exec",
      "title": "Exec API",
      "description": "API reference for executing bash commands and Python code on MIOSA computers.",
      "source": "src/routes/docs/api-reference/exec/+page.md",
      "content_excerpt": "Run commands and scripts directly on a computer without desktop interaction. Both endpoints block until the command exits and return combined stdout+stderr.\n\nBase path: `/api/v1/computers/{id}/exec`\n\nThe computer must be in `\"running\"` status. Commands run as the default user inside the VM. Maximum timeout is 300 s.\n\nRate limit: 300 req/min per workspace. For long-running output, prefer the streaming exec endpoint which avoids holding an HTTP connection open for the full duration.\n\n---\n\n## Execu"
    },
    {
      "slug": "api-reference/files",
      "path": "/docs/api-reference/files",
      "url": "https://miosa.ai/docs/api-reference/files",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/files",
      "title": "Files API",
      "description": "API reference for file upload, download, list, export, and delete operations.",
      "source": "src/routes/docs/api-reference/files/+page.md",
      "content_excerpt": "Manage files on a running computer. All paths are restricted to `/home/user`, `/home/ubuntu`, and `/tmp`.\n\nBase path: `/api/v1/computers/{id}/files`\n\nThe computer must be in `\"running\"` status. All operations go through the in-VM agent (envd).\n\n---\n\n## Upload a File\n\n**`POST /api/v1/computers/{id}/files/upload`**\n\nUploads a file to the computer via multipart form data.\n\n### Request\n\nContent-Type: `multipart/form-data`\n\n| Field | Type | Required | Description |\n|-------|------|----------|--------"
    },
    {
      "slug": "api-reference/filesystem",
      "path": "/docs/api-reference/filesystem",
      "url": "https://miosa.ai/docs/api-reference/filesystem",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/filesystem",
      "title": "Filesystem API",
      "description": "Complete API reference for file and directory operations on MIOSA computers — upload, download, stat, mkdir, rename, copy, chmod, and readdir.",
      "source": "src/routes/docs/api-reference/filesystem/+page.md",
      "content_excerpt": "The Filesystem API gives you full programmatic access to files and directories inside a running computer. All operations are proxied through the in-VM envd daemon and restricted to allowed paths.\n\nBase path: `/api/v1/computers/{id}/files`\n\n**Allowed paths:** `/home/user`, `/home/ubuntu`, `/tmp`\n\nThe computer must be in `\"running\"` status. Paths outside the allowed prefixes return `403 FORBIDDEN_PATH`.\n\n---\n\n## Quick Start\n```typescript\n\nconst client = new Miosa();\n\n// Write a file\nawait client.f"
    },
    {
      "slug": "api-reference/network-policy",
      "path": "/docs/api-reference/network-policy",
      "url": "https://miosa.ai/docs/api-reference/network-policy",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/network-policy",
      "title": "Network Policy API",
      "description": "API reference for configuring per-computer network access controls on MIOSA computers.",
      "source": "src/routes/docs/api-reference/network-policy/+page.md",
      "content_excerpt": "Network policies control what external hosts and ports a computer can reach. Use them to sandbox untrusted workloads, enforce egress restrictions, or prevent AI agents from making unexpected outbound connections.\n\nBase path: `/api/v1/computers/{id}/network-policy`\n\nNetwork policies apply at the Firecracker VM level. Changing a policy takes effect within seconds without restarting the computer.\n\n---\n\n## Quick Start\n```typescript\n\nconst client = new Miosa();\n\n// Restrict to only allow HTTPS to Git"
    },
    {
      "slug": "api-reference/open-computers",
      "path": "/docs/api-reference/open-computers",
      "url": "https://miosa.ai/docs/api-reference/open-computers",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/open-computers",
      "title": "OpenComputers API",
      "description": "Register and control your own machines (BYOC) via the MIOSA API — exec, files, tunnels, AI agents, inference clusters, and secrets.",
      "source": "src/routes/docs/api-reference/open-computers/+page.md",
      "content_excerpt": "OpenComputers lets you register physical or virtual machines you already own (Mac, Linux, Windows) and control them through MIOSA's API — run commands, manage files, expose HTTP tunnels, dispatch AI agents, build inference clusters, and manage secrets.\n\nBase path: `/api/v1/opencomputers`\n\nVerbs supported: **GET** (list/show), **POST** (register/create/exec/dispatch), **PATCH** (update tags/tunnels), **DELETE** (revoke/cancel).\n\nRate limit: 300 req/min per workspace. Exec jobs and agent sessions "
    },
    {
      "slug": "api-reference/projects",
      "path": "/docs/api-reference/projects",
      "url": "https://miosa.ai/docs/api-reference/projects",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/projects",
      "title": "Projects API",
      "description": "API reference for creating and managing projects inside MIOSA workspaces.",
      "source": "src/routes/docs/api-reference/projects/+page.md",
      "content_excerpt": "A **Project** is the app, website, lead magnet, document, workflow, or customer build inside a workspace. Projects own sandboxes, computers, deployments, databases, storage buckets, volumes, functions, jobs, auth configuration, integrations, and custom domains.\n\nBase path: `/api/v1/projects`\n\nIf a resource create call includes `project_slug`, `project_name`, or `external_project_id`, MIOSA resolves or creates the project before creating the resource. You can also create projects explicitly with "
    },
    {
      "slug": "api-reference/regions",
      "path": "/docs/api-reference/regions",
      "url": "https://miosa.ai/docs/api-reference/regions",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/regions",
      "title": "Regions API",
      "description": "List available regions and pin Computers and Sandboxes to a specific region.",
      "source": "src/routes/docs/api-reference/regions/+page.md",
      "content_excerpt": "MIOSA Computers and Sandboxes run in geographic regions. Every Computer (and every Sandbox, since a Sandbox is a lightweight Computer flavor) is created in exactly one region and stays there for its lifetime.\n\nBase path: `/api/v1/regions`\n\n---\n\n## Overview\n\n- **3 regions are live today.** All have equal status — none are preview, none are restricted.\n- **Default region** when you don't specify one: `us-west-la`.\n- **All VM sizes** (XS, S, M, L, XL) are available in every region for both Computer"
    },
    {
      "slug": "api-reference/releases",
      "path": "/docs/api-reference/releases",
      "url": "https://miosa.ai/docs/api-reference/releases",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/releases",
      "title": "API Reference / Releases",
      "description": "The immutable build artifact — static tarball or dynamic rootfs / OCI image, sha256-keyed.",
      "source": "src/routes/docs/api-reference/releases/+page.md",
      "content_excerpt": "First-class `deployment_releases` records and their dedicated endpoints arrive in Phase 2B of the deployment refactor. Today, release content is referenced via the `artifact_uri` / `artifact_sha256` fields on `deployment_versions`. This page documents the steady-state target.\n\nA **Release** is the physical artifact produced by a build — what a [Version](/docs/api-reference/versions/) references. See [Releases](/docs/deploy/releases/) for the conceptual model.\n\n## Endpoints (Phase 2B)\n```http\nGET"
    },
    {
      "slug": "api-reference/sandboxes",
      "path": "/docs/api-reference/sandboxes",
      "url": "https://miosa.ai/docs/api-reference/sandboxes",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/sandboxes",
      "title": "Sandboxes API",
      "description": "API reference for creating, managing, and executing code in MIOSA sandboxes — ephemeral Firecracker microVMs.",
      "source": "src/routes/docs/api-reference/sandboxes/+page.md",
      "content_excerpt": "Sandboxes are ephemeral Firecracker microVMs that restore from a pre-seeded snapshot, accept exec and file operations, expose previews, and are billed by compute/runtime usage. They are designed for AI-agent code execution workloads, artifact generation, and app previews.\n\nBase path: `/api/v1/sandboxes`\n\nAll endpoints require `Authorization: Bearer &lt;api_key&gt;`. Get a key from the [MIOSA dashboard](https://app.miosa.ai/settings/api-keys).\n\nFor higher-level access, use the official SDKs: [Pyt"
    },
    {
      "slug": "api-reference/services",
      "path": "/docs/api-reference/services",
      "url": "https://miosa.ai/docs/api-reference/services",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/services",
      "title": "Services API",
      "description": "API reference for managing long-running systemd services inside MIOSA computers.",
      "source": "src/routes/docs/api-reference/services/+page.md",
      "content_excerpt": "Services are persistent processes managed by systemd inside a computer. Use them for web servers, background workers, databases, or any daemon that should survive across exec calls and restart automatically on failure.\n\nBase path: `/api/v1/computers/{id}/services`\n\nServices map directly to systemd unit files (`/etc/systemd/system/miosa-{name}.service`) managed by the in-VM envd daemon. The computer must be **running** to interact with services.\n\n---\n\n## Quick Start\n```typescript\n\nconst client = "
    },
    {
      "slug": "api-reference/snapshots",
      "path": "/docs/api-reference/snapshots",
      "url": "https://miosa.ai/docs/api-reference/snapshots",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/snapshots",
      "title": "Snapshots API",
      "description": "API reference for creating, listing, and restoring Firecracker VM snapshots (checkpoints).",
      "source": "src/routes/docs/api-reference/snapshots/+page.md",
      "content_excerpt": "Snapshots capture the full in-memory state of a running computer — CPU state, RAM, and filesystem — and store it durably. Restore a snapshot to spin up an identical computer in seconds.\n\nBase path: `/api/v1/computers/{id}/snapshots`\n\nSnapshots require the computer to be **running**. Creating a snapshot does not stop the computer.\n\n---\n\n## Quick Start\n```typescript\n\nconst client = new Miosa();\n\n// Create a snapshot\nconst snap = await client.snapshots.create(computerId, {\n  comment: 'before-deploy"
    },
    {
      "slug": "api-reference/streaming-exec",
      "path": "/docs/api-reference/streaming-exec",
      "url": "https://miosa.ai/docs/api-reference/streaming-exec",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/streaming-exec",
      "title": "Streaming Exec API",
      "description": "API reference for streaming command output in real-time from MIOSA computers via SSE.",
      "source": "src/routes/docs/api-reference/streaming-exec/+page.md",
      "content_excerpt": "Streaming exec runs a command on a computer and delivers output line-by-line via Server-Sent Events. Use it for long-running builds, installs, or any command where you want incremental output rather than waiting for completion.\n\nBase path: `/api/v1/computers/{id}/exec/stream`\n\nStandard `POST /computers/{id}/exec` waits for the command to finish before returning. Streaming exec is better for commands that run longer than a few seconds or that you want to monitor interactively.\n\n---\n\n## Quick Star"
    },
    {
      "slug": "api-reference/versions",
      "path": "/docs/api-reference/versions",
      "url": "https://miosa.ai/docs/api-reference/versions",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/versions",
      "title": "API Reference / Versions",
      "description": "Immutable deployment version sub-resource. List, get, promote, archive.",
      "source": "src/routes/docs/api-reference/versions/+page.md",
      "content_excerpt": "A **Deployment Version** is the immutable record of one publish. See [Versions](/docs/deploy/versions/) for the conceptual model.\n\n## Endpoints\n```http\nGET  /api/v1/deployments/:id/versions\nGET  /api/v1/deployments/:id/versions/:version_id\nPOST /api/v1/deployments/:id/versions/:version_id/promote\n```\n\n## List\n```http\nGET /api/v1/deployments/:id/versions\nGET /api/v1/deployments/:id/versions?state=ready\nGET /api/v1/deployments/:id/versions?workspace_id=550e8400-e29b-41d4-a716-446655440000\nGET /api"
    },
    {
      "slug": "api-reference/workspaces",
      "path": "/docs/api-reference/workspaces",
      "url": "https://miosa.ai/docs/api-reference/workspaces",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/api-reference/workspaces",
      "title": "Workspaces API",
      "description": "API reference for creating and managing MIOSA workspaces - the customer/client layer inside an organization.",
      "source": "src/routes/docs/api-reference/workspaces/+page.md",
      "content_excerpt": "Workspaces group resources inside an organization. In a white-label platform, a workspace usually represents one downstream customer or client, such as `Dr. Smith Clinic` inside the `ClinicIQ` organization. Projects live inside workspaces, and sandboxes, computers, deployments, databases, storage buckets, volumes, functions, jobs, and domains belong to projects.\n\nBase path: `/api/v1/workspaces`\n\nA **default** workspace is created automatically when you sign up. Resources are assigned to the defa"
    },
    {
      "slug": "authentication",
      "path": "/docs/authentication",
      "url": "https://miosa.ai/docs/authentication",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/authentication",
      "title": "Authentication",
      "description": "How to authenticate with the MIOSA API using msk_ API keys or JWT tokens.",
      "source": "src/routes/docs/authentication/+page.md",
      "content_excerpt": "# Authentication\n\nEvery MIOSA API request carries a single `Authorization: Bearer &lt;token&gt;` header.\nThe token is either an **API key** (prefix `msk_`) or a **JWT** from `POST /auth/login`.\n\nOne key covers the entire platform — computers, desktop, files, exec, CUA agent,\nOSA, credits, and (with the right role) admin. No separate keys for AI, no\nper-product configuration.\n\n## Credential hierarchy\n\nDiagram:\ngraph TB\n    MSK[msk_live_* workspace key] -->|server-side only| API[MIOSA API calls]\n "
    },
    {
      "slug": "changelog",
      "path": "/docs/changelog",
      "url": "https://miosa.ai/docs/changelog",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/changelog",
      "title": "Changelog",
      "description": "What's new in MIOSA — shipped features, SDK updates, and platform improvements.",
      "source": "src/routes/docs/changelog/+page.md",
      "content_excerpt": "What's new in MIOSA. Updates ship continuously; this page is a human-readable digest grouped by week.\n\nThe MIOSA SDKs will live in dedicated public repos for each language — `Miosa-osa/python-sdk`, `Miosa-osa/typescript-sdk`, etc. Mirrored from the monorepo via a CI subtree-split workflow. Direct installs remain unchanged.\n\n---\n\n## May 12 – 18, 2026\n\n### MCP server for AI coding assistants\n\nA native MCP server ships 22 computer-use tools — screenshot, click, type, scroll, drag, key chords, windo"
    },
    {
      "slug": "cli",
      "path": "/docs/cli",
      "url": "https://miosa.ai/docs/cli",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cli",
      "title": "CLI Reference",
      "description": "Complete reference for the MIOSA CLI — manage computers, sandboxes, deployments, data services, and AI agents from your terminal.",
      "source": "src/routes/docs/cli/+page.md",
      "content_excerpt": "The `miosa` CLI (`@miosa/cli`) is the command-line entry point for MIOSA. It manages computers, sandboxes, deployments, data services, and AI agents — all from your terminal.\n\n  Commands marked **[planned]** are not yet shipped. All others are live in `@miosa/cli@0.2.0`.\n\n## Install\n\n```bash\nnpm install -g @miosa/cli\n```\n\n```bash\npnpm add -g @miosa/cli\n```\n\n```bash\nbrew install miosa-ai/tap/miosa\n```\n\n```bash\ncurl -fsSL https://install.miosa.ai | sh\n```\n\nInstalls to `~/.local/bin` (non-root) or "
    },
    {
      "slug": "computers/byoc",
      "path": "/docs/computers/byoc",
      "url": "https://miosa.ai/docs/computers/byoc",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/computers/byoc",
      "title": "BYOC / OpenComputers",
      "description": "Register your own hardware (Mac, Linux, Windows). One command, your machine becomes a MIOSA computer. Apache 2.0.",
      "source": "src/routes/docs/computers/byoc/+page.md",
      "content_excerpt": "**OpenComputers** is MIOSA's bring-your-own-compute path. Install the agent on your own hardware — laptops, desktops, mini-PCs, even Raspberry Pi for light workloads — and it registers with MIOSA over an outbound WebSocket. Your machine becomes a MIOSA computer that you (or your AI agents) can drive through the same API as cloud computers.\n\nApache 2.0. Local-first scheduling — work runs on your hardware when there's capacity; cloud overflow when there isn't.\n\n## Why BYOC\n\n- **Already own the har"
    },
    {
      "slug": "computers/desktop",
      "path": "/docs/computers/desktop",
      "url": "https://miosa.ai/docs/computers/desktop",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/computers/desktop",
      "title": "Desktop Control",
      "description": "28 methods for driving a Computer's desktop — screenshot, click, type, scroll, drag, keyboard, clipboard, windows, shell, and more.",
      "source": "src/routes/docs/computers/desktop/+page.md",
      "content_excerpt": "Once you have a [Computer](/docs/computers/overview/), drive its desktop with these methods. Suitable for AI agents (computer-use models, custom RPA loops) and for direct programmatic control.\n\n## All 28 methods\n\n| Group | Method | Purpose |\n|---|---|---|\n| **Screen** | `screenshot()` | Capture full desktop as PNG bytes |\n| | `screenshot_base64()` | Same, base64-encoded — ready to pass to an LLM vision API |\n| **Click** | `click(x, y)` | Generic click — defaults to left button |\n| | `left_click("
    },
    {
      "slug": "computers/embedding",
      "path": "/docs/computers/embedding",
      "url": "https://miosa.ai/docs/computers/embedding",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/computers/embedding",
      "title": "Embedding & Streaming",
      "description": "Embed a live Computer desktop in your own UI via KasmVNC. Pixel streaming, input forwarding.",
      "source": "src/routes/docs/computers/embedding/+page.md",
      "content_excerpt": "To show a live desktop session in your end-user's browser — for \"watch the AI work\" UI, manual takeover, or kiosk-style apps — embed MIOSA's KasmVNC stream.\n\n## The flow\n```\n\n1. Your backend asks MIOSA for a terminal ticket for a running computer\n2. MIOSA returns a short-lived signed URL pointing at the stream gateway\n3. Your frontend renders an iframe with that URL\n4. The user sees the live desktop; keyboard/mouse input is forwarded into the VM\n```\n\n## Mint a ticket\n\n```typescript\nconst ticket "
    },
    {
      "slug": "computers/overview",
      "path": "/docs/computers/overview",
      "url": "https://miosa.ai/docs/computers/overview",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/computers/overview",
      "title": "Computers (Desktop)",
      "description": "Full Linux desktops in the cloud — Xfce, Firefox, terminal — controlled via 28 Python SDK methods including screenshot, click, type, scroll, clipboard, windows, shell, and more.",
      "source": "src/routes/docs/computers/overview/+page.md",
      "content_excerpt": "A **Computer** is a Firecracker microVM running a full Linux desktop (Xfce). Use it when you need a real GUI environment: browser automation, computer-use AI agents, RPA, or screenshot-driven testing.\n\nFor code execution, dev servers, and most AI agent build loops, [Sandboxes](/docs/develop/sandboxes/) are cheaper and faster. Choose based on whether your workload needs a rendered desktop.\n\n## When to use Computer vs Sandbox\n\n| Use case | Pick |\n|---|---|\n| Run untrusted code, dev server, `npm in"
    },
    {
      "slug": "concepts",
      "path": "/docs/concepts",
      "url": "https://miosa.ai/docs/concepts",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/concepts",
      "title": "Core Concepts",
      "description": "The canonical architecture reference for MIOSA — six concrete primitives, how they compose into deployments, data services, desktop Computers, and the white-label tenancy model.",
      "source": "src/routes/docs/concepts/+page.md",
      "content_excerpt": "# Core Concepts\n\nMIOSA is a cloud platform for building, previewing, and deploying applications — primarily by AI agents, but equally usable by developers directly. Every operation maps to one of the six primitive resource types below. Everything else is composition.\n\nIf you read only one sentence: **Sandbox → Builder → Release → Version → Deployment → Domain.** That is the full publish pipeline.\n\n---\n\n## Physical base\n\nMIOSA runs on bare-metal compute hosts. Each host runs [Firecracker](https:/"
    },
    {
      "slug": "cookbook",
      "path": "/docs/cookbook",
      "url": "https://miosa.ai/docs/cookbook",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cookbook",
      "title": "Cookbook",
      "description": "End-to-end recipes — copy-paste-runnable walkthroughs that showcase the MIOSA platform.",
      "source": "src/routes/docs/cookbook/+page.md",
      "content_excerpt": "# Cookbook\n\nPractical, end-to-end walkthroughs. Each recipe starts from a blank terminal and ends with something running. Pick the one closest to your use case and adapt from there.\n\n---\n\n  \n    Your AI agent receives a prompt, writes code into a sandbox, runs the build, exposes a preview URL, then publishes to production. End deliverable: a deployed Next.js app from a single prompt.\n  \n  \n    Run a long Python script in a sandbox and stream stdout to your UI in real time via SSE. Includes backp"
    },
    {
      "slug": "cookbook/agent-builds-app",
      "path": "/docs/cookbook/agent-builds-app",
      "url": "https://miosa.ai/docs/cookbook/agent-builds-app",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cookbook/agent-builds-app",
      "title": "Agent builds an app",
      "description": "Your AI agent receives a prompt, writes code into a sandbox, builds it, and publishes a deployed Next.js app — all from a single prompt.",
      "source": "src/routes/docs/cookbook/agent-builds-app/+page.md",
      "content_excerpt": "# Agent builds an app\n\n~10 min Python TypeScript\n\n> **Goal**: Wire an LLM agent to MIOSA so it can write code, build it inside a sandbox, open a live preview, then publish to a production deployment — all from a single user prompt.\n>\n> **What you'll use**: Sandboxes, Previews, Deployments\n\n## What you'll build\n\nA function `build_and_deploy(prompt)` that hands a prompt to an LLM, streams generated code into a sandbox, runs `npm run build`, surfaces a preview URL, then publishes an immutable produ"
    },
    {
      "slug": "cookbook/browser-agent",
      "path": "/docs/cookbook/browser-agent",
      "url": "https://miosa.ai/docs/cookbook/browser-agent",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cookbook/browser-agent",
      "title": "Browser agent",
      "description": "Boot a full Linux desktop Computer, screenshot a website, click a button, fill a form, take another screenshot — the complete screenshot → action → screenshot loop with your own LLM.",
      "source": "src/routes/docs/cookbook/browser-agent/+page.md",
      "content_excerpt": "# Browser agent\n\n~12 min Python TypeScript\n\n> **Goal**: Boot a MIOSA Computer (full Linux desktop VM), open a browser inside it, and run an LLM-driven action loop that screenshots the screen, decides what to do next, and executes the action — all from your own code.\n>\n> **What you'll use**: Computers, Desktop API (screenshot / click / type / key)\n\n## What you'll build\n\nA `BrowserAgent` class that:\n1. Boots a Computer with a full desktop.\n2. Opens a URL in Chromium.\n3. Enters a screenshot → LLM →"
    },
    {
      "slug": "cookbook/multi-tenant-saas",
      "path": "/docs/cookbook/multi-tenant-saas",
      "url": "https://miosa.ai/docs/cookbook/multi-tenant-saas",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cookbook/multi-tenant-saas",
      "title": "Multi-tenant SaaS",
      "description": "Embed MIOSA into your SaaS — tag sandboxes per tenant, query usage per workspace, and issue browser tokens so customers interact directly with their sandboxes.",
      "source": "src/routes/docs/cookbook/multi-tenant-saas/+page.md",
      "content_excerpt": "# Multi-tenant SaaS\n\n~12 min Python TypeScript\n\n> **Goal**: Embed MIOSA into a multi-tenant product. Every sandbox is tagged with your own workspace and user IDs. Usage rolls up per tenant for billing. End-users interact with their sandboxes directly from the browser without ever seeing your API key.\n>\n> **What you'll use**: Sandboxes, External Attribution, Browser Tokens, Usage API\n\n## What you'll build\n\nAn embedded sandbox experience inside your SaaS:\n\n1. Your backend creates sandboxes tagged "
    },
    {
      "slug": "cookbook/snapshot-and-fork",
      "path": "/docs/cookbook/snapshot-and-fork",
      "url": "https://miosa.ai/docs/cookbook/snapshot-and-fork",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cookbook/snapshot-and-fork",
      "title": "Snapshot & fork",
      "description": "Checkpoint a long-running task, fork into multiple branches to compare outcomes, and restore to a known-good state on failure.",
      "source": "src/routes/docs/cookbook/snapshot-and-fork/+page.md",
      "content_excerpt": "# Snapshot & fork\n\n~10 min Python TypeScript\n\n> **Goal**: Use snapshots to checkpoint a sandbox at a stable state, fork into N independent branches to run experiments in parallel, then restore from the checkpoint if any branch produces a bad outcome.\n>\n> **What you'll use**: Sandboxes, Snapshots\n\n## What you'll build\n\nA reusable fork-and-compare pattern:\n\n```\nsandbox (baseline built) → snapshot_A\n      ├── restore → branch-1 (try approach X) → compare\n      ├── restore → branch-2 (try approach Y"
    },
    {
      "slug": "cookbook/streaming-code-execution",
      "path": "/docs/cookbook/streaming-code-execution",
      "url": "https://miosa.ai/docs/cookbook/streaming-code-execution",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/cookbook/streaming-code-execution",
      "title": "Streaming code execution",
      "description": "Run a long Python script in a sandbox and stream stdout to your UI in real time via SSE, with backpressure handling.",
      "source": "src/routes/docs/cookbook/streaming-code-execution/+page.md",
      "content_excerpt": "# Streaming code execution\n\n~8 min Python TypeScript\n\n> **Goal**: Run a long-running script inside a sandbox and stream every stdout line to your frontend UI in real time — no polling, no buffering the full output.\n>\n> **What you'll use**: Sandboxes, SSE events, exec streaming\n\n## What you'll build\n\nA minimal code-execution console: your backend creates a sandbox, runs a script, and pipes the sandbox SSE event stream back to the browser. The browser displays each line as it arrives. Looks like t"
    },
    {
      "slug": "data/auth",
      "path": "/docs/data/auth",
      "url": "https://miosa.ai/docs/data/auth",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/data/auth",
      "title": "Auth-as-a-Service",
      "description": "Per-project user signup, login, and JWT issuance. AUTH_URL and AUTH_JWT_SECRET injected at boot.",
      "source": "src/routes/docs/data/auth/+page.md",
      "content_excerpt": "Per-project end-user authentication (signup, login, JWT verification, password reset, OAuth) is planned. This page documents the steady-state target. The backend strategy is being decided; the API surface here is what your generated apps will call when it ships.\n\nAuth is the second piece of the MIOSA managed-data experience. When a project is created, MIOSA provisions a per-project auth service. The app gets two env vars:\n```\n\nAUTH_URL=https://auth.miosa.app/proj_xxx\nAUTH_JWT_SECRET=<random 64-c"
    },
    {
      "slug": "data/overview",
      "path": "/docs/data/overview",
      "url": "https://miosa.ai/docs/data/overview",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/data/overview",
      "title": "Data",
      "description": "Managed Postgres, Redis, object storage, auth, and volumes — provisioned per project, injected as env vars.",
      "source": "src/routes/docs/data/overview/+page.md",
      "content_excerpt": "MIOSA Data services give your sandboxes and production runtime instances access to persistent storage without any external account setup. When you attach a data service to a project, MIOSA provisions the resource and injects its credentials at boot — your code reads `process.env.DATABASE_URL` and connects. That is the entire integration.\n\n## Phase status\n\nData services are rolling out across several platform phases:\n\n| Service | Status |\n|---|---|\n| Managed Postgres | Beta — API available, full "
    },
    {
      "slug": "data/postgres",
      "path": "/docs/data/postgres",
      "url": "https://miosa.ai/docs/data/postgres",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/data/postgres",
      "title": "Postgres",
      "description": "Managed Postgres per project. PgBouncer-pooled, automatically backed up, injected as DATABASE_URL.",
      "source": "src/routes/docs/data/postgres/+page.md",
      "content_excerpt": "Managed Postgres lifecycle (provision-per-project, PgBouncer routing, backup orchestration, env injection) is in active development. Today, sandboxes can have a linked database, and the `miosa-sandbox` template exists for self-managed sandbox-Postgres. This page documents the steady-state target. Treat the API examples as targets, not currently shipping endpoints unless stated.\n\n## Provision\n\nWhen a project is created with `data: { postgres: true }`, MIOSA provisions a logical database in a mana"
    },
    {
      "slug": "data/redis",
      "path": "/docs/data/redis",
      "url": "https://miosa.ai/docs/data/redis",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/data/redis",
      "title": "Redis / Cache",
      "description": "Managed Redis per project for caching, sessions, and pub/sub.",
      "source": "src/routes/docs/data/redis/+page.md",
      "content_excerpt": "Managed Redis lifecycle is in active development. The `miosa-sandbox` template exists for sandbox-Redis today; project-level managed Redis with per-environment credentials is being wired.\n\n## What you get\n\nPer project: a managed Redis instance, with credentials injected as `REDIS_URL`:\n```\n\nREDIS_URL=redis://default:pass@host:port/0\n```\n\nStandard Redis clients work without modification:\n```typescript\n\nconst redis = createClient({ url: process.env.REDIS_URL })\nawait redis.connect()\n\nawait redis.s"
    },
    {
      "slug": "data/storage",
      "path": "/docs/data/storage",
      "url": "https://miosa.ai/docs/data/storage",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/data/storage",
      "title": "Storage / Buckets",
      "description": "Per-project object storage with signed-URL uploads and downloads.",
      "source": "src/routes/docs/data/storage/+page.md",
      "content_excerpt": "Managed bucket lifecycle (provision-per-project, signed-URL endpoints, attribution-aware metering) is in active development. MIOSA uses object storage internally for deployment artifacts and snapshots; customer-facing bucket APIs are being wired.\n\n## What you get\n\nPer project: an S3-compatible bucket, accessed through MIOSA endpoints. Credentials injected as env vars:\n```\n\nSTORAGE_BUCKET=miosa-proj_xxx-uploads\nSTORAGE_ENDPOINT=https://storage.miosa.app\nSTORAGE_KEY_ID=...\nSTORAGE_KEY_SECRET=...\n`"
    },
    {
      "slug": "data/volumes",
      "path": "/docs/data/volumes",
      "url": "https://miosa.ai/docs/data/volumes",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/data/volumes",
      "title": "Volumes",
      "description": "Persistent block storage attached to a runtime instance. State that doesn't fit in Postgres.",
      "source": "src/routes/docs/data/volumes/+page.md",
      "content_excerpt": "Volumes are planned. Most workloads should use [Postgres](/docs/data/postgres/) or [Storage](/docs/data/storage/) instead; volumes are for the narrow set of cases where neither fits.\n\nA **Volume** is a persistent block device attached to a runtime instance. Survives instance restarts and version promotions. Useful for:\n\n- SQLite databases that need to be local to the runtime.\n- Caches you can't afford to lose on restart.\n- LLM model weights downloaded once and shared across instances.\n- Workload"
    },
    {
      "slug": "deploy/domains",
      "path": "/docs/deploy/domains",
      "url": "https://miosa.ai/docs/deploy/domains",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/domains",
      "title": "Domains",
      "description": "Managed *.miosa.app URLs and custom domains. DNS verification, automatic TLS, instant repointing.",
      "source": "src/routes/docs/deploy/domains/+page.md",
      "content_excerpt": "A **Domain** is a hostname that routes to a deployment. MIOSA gives every deployment a managed URL by default, and lets you attach custom domains with automatic Let's Encrypt TLS.\n\n## Managed URLs\n\nEvery deployment gets a managed hostname at creation:\n```\n\n<deployment-slug>.<organization-slug>.miosa.app\n```\n\nExample: `smile-dental.cliniciq.miosa.app`. TLS is provisioned automatically against the wildcard cert.\n\nIf you configure a preview base domain, managed deployment URLs inherit it:\n\n| Scope "
    },
    {
      "slug": "deploy/environments",
      "path": "/docs/deploy/environments",
      "url": "https://miosa.ai/docs/deploy/environments",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/environments",
      "title": "Environments",
      "description": "Production, staging, preview/<source> — variable and secret scoping for deployments.",
      "source": "src/routes/docs/deploy/environments/+page.md",
      "content_excerpt": "A **Deployment Environment** is the scope at which env vars, secrets, and data service bindings apply. Most projects have at least two: `production` and `staging`. Custom environments like `preview/feature-abc` are common for review-app workflows.\n\nFirst-class `deployment_environments` records are part of the ongoing deployment refactor. Today, env vars are scoped per-deployment via `deployment_env_vars`. The shape and behavior here are the steady-state target.\n\n## Defaults\n\nEvery project gets t"
    },
    {
      "slug": "deploy/overview",
      "path": "/docs/deploy/overview",
      "url": "https://miosa.ai/docs/deploy/overview",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/overview",
      "title": "Deploy",
      "description": "Turn a sandbox into a stable production URL with immutable history and instant rollback.",
      "source": "src/routes/docs/deploy/overview/+page.md",
      "content_excerpt": "Deploying on MIOSA means turning a Sandbox into a stable production URL backed by immutable build artifacts, versioned history, and instant rollback. Once published, the URL never changes — only which version it points at.\n\n## The deployment pipeline\n\nEvery publish travels the same path:\nDiagram:\ngraph LR\n    A[Sandbox] -->|publish| B[Source Snapshot]\n    B --> C[Builder VM]\n    C -->|builds| D[Release]\n    D -->|creates| E[Deployment Version]\n    E -->|promotes| F[Runtime Instance or Edge]\n    "
    },
    {
      "slug": "deploy/publishing",
      "path": "/docs/deploy/publishing",
      "url": "https://miosa.ai/docs/deploy/publishing",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/publishing",
      "title": "Publishing",
      "description": "Turn a Sandbox into an immutable Deployment Version. Source snapshots, builder VMs, build modes.",
      "source": "src/routes/docs/deploy/publishing/+page.md",
      "content_excerpt": "Publish is the moment a mutable sandbox becomes a frozen, reproducible artifact ready to serve production traffic.\n\n## The pipeline\nDiagram:\nflowchart LR\n    SB[Sandbox] -->|freeze /workspace| SS[Source Snapshot]\n    SS --> BLD[Builder VM]\n    BLD -->|compile + package| REL[Release]\n    REL -->|referenced by| VER[Deployment Version]\n    VER -->|promote| DEP[Deployment]\n    DEP -->|serves traffic| DOM[Domain]\n\n1. Sandbox /workspace          (mutable; agent or developer is editing here)\n2. Source "
    },
    {
      "slug": "deploy/releases",
      "path": "/docs/deploy/releases",
      "url": "https://miosa.ai/docs/deploy/releases",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/releases",
      "title": "Releases",
      "description": "The immutable build artifact — static tarball or dynamic rootfs / OCI image, sha256-keyed.",
      "source": "src/routes/docs/deploy/releases/+page.md",
      "content_excerpt": "A **Release** is the physical artifact produced by a build. Versions reference releases; releases sit in object storage; runtime instances boot from them.\n\nYou typically don't address releases directly through the API — they're an implementation detail of `Deployment Version`. But it's useful to know they exist as their own record because they're what makes rollback and horizontal scaling work.\n\nFirst-class `deployment_releases` records arrive in a future deployment refactor phase. Today, releas"
    },
    {
      "slug": "deploy/rollback",
      "path": "/docs/deploy/rollback",
      "url": "https://miosa.ai/docs/deploy/rollback",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/rollback",
      "title": "Rollback",
      "description": "Repoint a deployment at an older version. Seconds, no rebuild.",
      "source": "src/routes/docs/deploy/rollback/+page.md",
      "content_excerpt": "Rollback on MIOSA is fast because nothing has to be rebuilt. The previous release is still in storage. Runtime instances boot quickly. Static artifacts are streamed from object storage. The whole operation is \"change one row, propagate to the edge cache.\"\n\n## When you'd rollback\n\n- New version passed health checks but the app is broken in real traffic (e.g. a feature flag mis-fire).\n- A bad migration deployed.\n- A regression you missed in staging.\n- Hostile incident — quick revert while you inve"
    },
    {
      "slug": "deploy/runtime-instances",
      "path": "/docs/deploy/runtime-instances",
      "url": "https://miosa.ai/docs/deploy/runtime-instances",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/runtime-instances",
      "title": "Runtime Instances",
      "description": "Dynamic deployments — Firecracker microVMs booted from a release on the compute fleet.",
      "source": "src/routes/docs/deploy/runtime-instances/+page.md",
      "content_excerpt": "A **Runtime Instance** is a running production VM that serves a dynamic deployment. Static deployments do not have runtime instances; they're served from MIOSA's edge directly.\n\nProduction-grade runtime instances backed by their own data model (`runtime_instances` table, scheduler, reconciler) are part of the ongoing deployment refactor. Today, dynamic deployments use a sandbox-backed bridge. The API surface described here is the steady-state target; current deployments behave equivalently from "
    },
    {
      "slug": "deploy/versions",
      "path": "/docs/deploy/versions",
      "url": "https://miosa.ai/docs/deploy/versions",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/deploy/versions",
      "title": "Versions",
      "description": "Immutable history of every publish. Inspect, promote, archive.",
      "source": "src/routes/docs/deploy/versions/+page.md",
      "content_excerpt": "Each successful publish produces a **Deployment Version**. Versions are immutable — the source hash, artifact hash, build log, and runtime config are frozen at creation. Versions never change after they're written.\n\nHow Deployments, Versions, and Releases relate:\n\nDiagram:\ngraph TB\n    DEP[Deployment smile-dental] -->|active_version_id| V3[Version v3 - active]\n    DEP -->|history| V2[Version v2 - archived]\n    DEP -->|history| V1[Version v1 - archived]\n    V3 -->|artifact_uri| R3[Release sha256:"
    },
    {
      "slug": "develop/files-and-exec",
      "path": "/docs/develop/files-and-exec",
      "url": "https://miosa.ai/docs/develop/files-and-exec",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/develop/files-and-exec",
      "title": "Files & Exec",
      "description": "Read, write, watch files inside a sandbox. Run commands, stream stdout/stderr, manage processes.",
      "source": "src/routes/docs/develop/files-and-exec/+page.md",
      "content_excerpt": "# Files & Exec\n\nThe Files and Exec APIs are how you (or an AI agent) interact with a Sandbox. Together they're the substrate for everything else: generating code, running builds, starting servers.\n\n## Files\n\n### Write\n\n```typescript\nawait sandbox.files.write(\"/workspace/src/index.ts\", `\n  console.log(\"Hello from MIOSA\")\n`)\n\n// Binary\nawait sandbox.files.write(\"/workspace/logo.png\", pngBuffer, {\n  encoding: \"binary\",\n})\n```\n\n```bash\ncurl -X POST https://api.miosa.ai/api/v1/sandboxes/$SBX/files/wr"
    },
    {
      "slug": "develop/previews",
      "path": "/docs/develop/previews",
      "url": "https://miosa.ai/docs/develop/previews",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/develop/previews",
      "title": "Previews",
      "description": "Live URLs that proxy into a sandbox port. Public, private, embeddable, share-tokenized.",
      "source": "src/routes/docs/develop/previews/+page.md",
      "content_excerpt": "# Previews\n\nA **Preview** is a URL that routes to a port inside a running Sandbox. The agent writes code, starts a dev server, the preview updates live in the browser. This is the build loop of AI app builders.\n\n## Quick create\n\n```typescript\n// Make sure something is listening on the port first\nconst preview = await sandbox.previews.create({\n  port: 3000,\n  visibility: \"private\",   // or \"public\"\n})\n\nconsole.log(preview.url)\n// → https://abc12345.preview.miosa.app\n```\n\n```bash\ncurl -X POST http"
    },
    {
      "slug": "develop/sandboxes",
      "path": "/docs/develop/sandboxes",
      "url": "https://miosa.ai/docs/develop/sandboxes",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/develop/sandboxes",
      "title": "Sandboxes",
      "description": "Mutable Firecracker microVMs for AI agent code execution. Boot in ~150 ms, run commands, expose ports as live preview URLs, snapshot state for branching or rollback.",
      "source": "src/routes/docs/develop/sandboxes/+page.md",
      "content_excerpt": "# Sandboxes\n\nA **Sandbox** is a mutable Firecracker microVM that boots warm in ~150 ms from a versioned template snapshot. Your agent writes files into it, executes commands, exposes ports as live preview URLs, and snapshots state for branching or rollback. When the work is done you destroy it — or publish it to a production deployment.\n\n## What a Sandbox is — concretely\n\n- A Firecracker microVM (not a container, not a VM in the usual cloud sense)\n- 1 vCPU, 1 GiB RAM, 3 GiB disk by default — con"
    },
    {
      "slug": "develop/templates",
      "path": "/docs/develop/templates",
      "url": "https://miosa.ai/docs/develop/templates",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/develop/templates",
      "title": "Templates",
      "description": "Pre-built Firecracker images for every major language and framework. Pick the closest match to your stack.",
      "source": "src/routes/docs/develop/templates/+page.md",
      "content_excerpt": "# Templates\n\nA **template** is a pre-built Firecracker image with a specific language and framework already installed. Pick the closest match to your stack; you can override install/start commands per-sandbox if needed.\n\n## Template catalog\n\n| Slug | Language / Framework | Default port | Best for |\n|---|---|---|---|\n| [`miosa-sandbox`](#miosa-sandbox) | Generic (default) | — | Custom builds, scripting, any language |\n| [`node`](#node) | Node.js 24 LTS | 3000 | Node servers, scripts, CLIs |\n| [`n"
    },
    {
      "slug": "fundamentals",
      "path": "/docs/fundamentals",
      "url": "https://miosa.ai/docs/fundamentals",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/fundamentals",
      "title": "Fundamental Concepts",
      "description": "The mental model every MIOSA integrator needs — workspace, authentication, resources, attribution, idempotency, rate limits, errors, and events.",
      "source": "src/routes/docs/fundamentals/+page.md",
      "content_excerpt": "# Fundamental Concepts\n\nMIOSA is a cloud platform for building and deploying applications. Before writing your first API call, read this page. It covers the eight concepts that underpin every MIOSA integration.\n\n---\n\n## 1. Organization, workspaces, and projects\n\nYour MIOSA account starts as one **organization**. The organization has a permanent slug, one billing account, and API keys. Inside it, you can create multiple **workspaces** and **projects**:\n\n- The organization is the authorization and"
    },
    {
      "slug": "guides/agent",
      "path": "/docs/guides/agent",
      "url": "https://miosa.ai/docs/guides/agent",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/guides/agent",
      "title": "Integrating an AI agent",
      "description": "How to bring your own AI agent and drive MIOSA Sandbox or Computer primitives to build, run, and deploy applications autonomously.",
      "source": "src/routes/docs/guides/agent/+page.md",
      "content_excerpt": "# Integrating an AI agent\n\nMIOSA provides the substrate — sandboxes, computers, file I/O, exec, previews, snapshots. You provide the agent loop: the LLM calls, screenshot decoding, planning, and turn management. This guide shows how to wire the two together.\n\n---\n\n## The pattern\nDiagram:\nsequenceDiagram\n  participant Your Agent\n  participant MIOSA API\n  participant Sandbox\n\n  Your Agent->>MIOSA API: create sandbox\n  MIOSA API->>Sandbox: boot Firecracker VM\n  Your Agent->>MIOSA API: files.write(p"
    },
    {
      "slug": "guides/mcp",
      "path": "/docs/guides/mcp",
      "url": "https://miosa.ai/docs/guides/mcp",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/guides/mcp",
      "title": "MCP server",
      "description": "Install and configure the MIOSA MCP server to drive sandboxes and computers from Claude Code, Cursor, Windsurf, and any other MCP-compatible client.",
      "source": "src/routes/docs/guides/mcp/+page.md",
      "content_excerpt": "# MCP server\n\nThe MIOSA MCP (Model Context Protocol) server exposes 25 tools that let AI coding assistants create sandboxes, run commands, write files, take computer screenshots, and more — all without leaving the editor. The server speaks the MCP transport protocol, so any compliant client can drive it.\n\n---\n\n## How it works\nDiagram:\nsequenceDiagram\n  participant Editor as Editor (Claude Code / Cursor)\n  participant MCP as MIOSA MCP Server\n  participant API as MIOSA API\n  participant Sandbox\n\n "
    },
    {
      "slug": "known-limitations",
      "path": "/docs/known-limitations",
      "url": "https://miosa.ai/docs/known-limitations",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/known-limitations",
      "title": "Known Limitations",
      "description": "An honest list of what doesn't work yet, what's in progress, and what's intentionally out of scope. Updated continuously.",
      "source": "src/routes/docs/known-limitations/+page.md",
      "content_excerpt": "# Known Limitations\n\nWe document what doesn't work, on purpose. If you hit something here, it isn't a bug in your code — it's a known gap. Each item notes the status or planned ship window.\n\nLast updated: 2026-05-17. We update this page on every release.\n\n## Sandboxes Ships next: regional warm pools\n\n- **Cold boot for the first sandbox per region**: ~600 ms outside the warm pool window. Regional warm pools will close this gap in Q3 2026.\n- **No GPU sandboxes yet**. GPU is available on Computers "
    },
    {
      "slug": "platform/api-keys",
      "path": "/docs/platform/api-keys",
      "url": "https://miosa.ai/docs/platform/api-keys",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/platform/api-keys",
      "title": "API Keys",
      "description": "Workspace API keys — the one credential your backend uses for every MIOSA call.",
      "source": "src/routes/docs/platform/api-keys/+page.md",
      "content_excerpt": "A **Workspace API Key** authenticates your backend to MIOSA. One key per workspace; the key resolves to a tenant_id, scopes, and rate limits.\n\n## Create a key\n\nFrom the dashboard: **Workspace → Settings → API Keys → New key**. Or via API:\n```http\nPOST /api/v1/api-keys\n```\n\n```typescript\nconst key = await miosa.apiKeys.create({\n  name: \"ClinicIQ backend prod\",\n  scopes: [\"deployments:write\", \"sandboxes:write\", \"domains:write\"],\n})\n\nconsole.log(key.token)  // shown ONCE — store it now\n// → msk_liv"
    },
    {
      "slug": "platform/attribution",
      "path": "/docs/platform/attribution",
      "url": "https://miosa.ai/docs/platform/attribution",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/platform/attribution",
      "title": "Resource Ownership and Attribution",
      "description": "Scope resources to MIOSA workspaces and projects while preserving your own workspace / user / project IDs for billing and reconciliation.",
      "source": "src/routes/docs/platform/attribution/+page.md",
      "content_excerpt": "Resource ownership is how MIOSA decides where a resource lives. External attribution is how your platform maps that resource back to your own database.\n\n- `workspace_id` and `project_id` are canonical MIOSA ownership. They affect routing, permissions, dashboard grouping, usage, and where resources appear.\n- `external_workspace_id`, `external_user_id`, and `external_project_id` are opaque strings from your platform. They are copied to usage, audit, and child resources for reconciliation.\n\n## Owne"
    },
    {
      "slug": "platform/browser-tokens",
      "path": "/docs/platform/browser-tokens",
      "url": "https://miosa.ai/docs/platform/browser-tokens",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/platform/browser-tokens",
      "title": "Browser Tokens",
      "description": "Short-lived scoped credentials your backend mints for end-user-facing access. Never expose `msk_*` to the browser.",
      "source": "src/routes/docs/platform/browser-tokens/+page.md",
      "content_excerpt": "When your end-user's browser needs direct MIOSA access — previewing a sandbox, opening a terminal, uploading a file — mint a short-lived browser token server-side and hand only that to the browser. The workspace API key (`msk_*`) never leaves your backend.\n\n## The mint flow\n\nDiagram:\nsequenceDiagram\n    participant BR as Browser\n    participant BE as Your Backend\n    participant MI as MIOSA\n\n    BR->>BE: show preview\n    BE->>MI: POST /previews/:id/share (msk_* key)\n    MI-->>BE: preview_token +"
    },
    {
      "slug": "platform/overview",
      "path": "/docs/platform/overview",
      "url": "https://miosa.ai/docs/platform/overview",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/platform/overview",
      "title": "Platform / White-label",
      "description": "Build your own AI app builder on top of MIOSA with organization, workspace, project, resource ownership, custom domains, and short-lived browser tokens.",
      "source": "src/routes/docs/platform/overview/+page.md",
      "content_excerpt": "This section is for **builders** — platforms that embed MIOSA so their customers can build, preview, and deploy apps inside the builder's own product (AI app builders, white-label SaaS).\n\nIf you're a developer using MIOSA to ship your own app, read [Quickstart](/docs/quickstart/) Track A instead.\n\n## What is the white-label model?\n\nMIOSA lets one organization act as a platform for many downstream customers without giving those customers MIOSA accounts. Your backend holds a server-side `msk_*` ke"
    },
    {
      "slug": "platform/usage-and-billing",
      "path": "/docs/platform/usage-and-billing",
      "url": "https://miosa.ai/docs/platform/usage-and-billing",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/platform/usage-and-billing",
      "title": "Usage & Billing",
      "description": "Track MIOSA usage per workspace, per project, per external customer, and per user. Chargeback to your customers.",
      "source": "src/routes/docs/platform/usage-and-billing/+page.md",
      "content_excerpt": "If you're a platform reselling MIOSA capacity, you need to attribute MIOSA costs back to your own customers. MIOSA emits usage events with [resource ownership and external attribution](/docs/platform/attribution/) on every billable action; you query them, group, and chargeback in your own currency / margin model.\n\nThe usage report APIs described here are part of Phase 10 of the deployment refactor. Today, usage events are captured (with attribution) in the `usage_meters`, `sandbox_runtime_events"
    },
    {
      "slug": "platform/white-label",
      "path": "/docs/platform/white-label",
      "url": "https://miosa.ai/docs/platform/white-label",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/platform/white-label",
      "title": "White-label setup",
      "description": "Configure organization slug, workspace/project ownership, preview domains, deployment domains, branding, and resource attribution.",
      "source": "src/routes/docs/platform/white-label/+page.md",
      "content_excerpt": "# White-label setup\n\nMIOSA can run behind your product and your customers' domains. The important order is: set the organization identity first, then create workspaces/projects, then attach domains at the organization, workspace, project, deployment, or computer level.\n\n---\n\n## Setup flow\nDiagram:\nflowchart TD\n  A[Set organization name] --> B[Organization slug is created once]\n  B --> C[Create workspaces for customers]\n  C --> D[Create projects inside workspaces]\n  D --> E[Create sandboxes, comp"
    },
    {
      "slug": "quickstart",
      "path": "/docs/quickstart",
      "url": "https://miosa.ai/docs/quickstart",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/quickstart",
      "title": "Quickstart",
      "description": "A five-minute hands-on tour of MIOSA — create a sandbox, write code, preview it live, and publish to production. Two tracks: static deploy and agent-driven build.",
      "source": "src/routes/docs/quickstart/+page.md",
      "content_excerpt": "# Quickstart\n\nTwo tracks. Pick one, finish it, then read the other.\n\n- **Track 1: Static deploy** — write a small site inside a sandbox, preview it live, publish to a permanent URL. Good first pass through the whole platform.\n- **Track 2: Agent-driven build** — drive a sandbox entirely through the API as your own AI agent (BYO LLM), then optionally screenshot a Computer.\n\nBoth tracks take five minutes.\n\n---\n\n## Prerequisites\n\n1. A MIOSA account at [miosa.ai](https://miosa.ai) with a workspace cr"
    },
    {
      "slug": "sdks/elixir",
      "path": "/docs/sdks/elixir",
      "url": "https://miosa.ai/docs/sdks/elixir",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/sdks/elixir",
      "title": "Elixir SDK",
      "description": "Install, configure, and make your first request with the MIOSA Elixir SDK.",
      "source": "src/routes/docs/sdks/elixir/+page.md",
      "content_excerpt": "The official Elixir SDK for MIOSA. Requires Elixir 1.15+ and OTP 25+. All functions return `{:ok, result}` or `{:error, %Miosa.Error{}}`.\n\n## Install\n\n```elixir\n# mix.exs\n{:miosa, \"~> 0.1\"}\n```\n\nThen run `mix deps.get`.\n\n  The package will be available on Hex.pm as `miosa`. Until first publish, use the GitHub dependency: `{:miosa, github: \"Miosa-osa/miosa\", sparse: \"sdks/elixir\"}`.\n\n## First request\n\n```elixir\nclient = Miosa.Client.new(\"msk_live_...\")\n\n# Create a sandbox, run a command, destroy "
    },
    {
      "slug": "sdks/go",
      "path": "/docs/sdks/go",
      "url": "https://miosa.ai/docs/sdks/go",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/sdks/go",
      "title": "Go SDK",
      "description": "Install, configure, and make your first request with the MIOSA Go SDK.",
      "source": "src/routes/docs/sdks/go/+page.md",
      "content_excerpt": "The official Go SDK for MIOSA. Requires Go 1.21+. All methods accept a `context.Context` for cancellation and timeouts.\n\n## Install\n\n```bash\ngo get github.com/miosa-ai/miosa-go\n```\n\n  If goproxy has not indexed the first release yet, use `GOPROXY=direct go get github.com/miosa-ai/miosa-go`.\n\n## First request\n\n```go\npackage main\n\n    \"context\"\n    \"fmt\"\n\n    miosa \"github.com/miosa-ai/miosa-go\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := miosa.NewClient(\"msk_live_...\")\n\n    // "
    },
    {
      "slug": "sdks/java",
      "path": "/docs/sdks/java",
      "url": "https://miosa.ai/docs/sdks/java",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/sdks/java",
      "title": "Java SDK",
      "description": "Install, configure, and make your first request with the MIOSA Java SDK.",
      "source": "src/routes/docs/sdks/java/+page.md",
      "content_excerpt": "The official Java SDK for MIOSA. Requires Java 11+. Blocking methods have async `*Async()` variants that return `CompletableFuture`.\n\n## Install\n\n```xml\n<dependency>\n  <groupId>ai.miosa</groupId>\n  <artifactId>miosa-sdk</artifactId>\n  <version>0.1.0</version>\n</dependency>\n```\n\n```groovy\nimplementation 'ai.miosa:miosa-sdk:0.1.0'\n```\n\n```kotlin\nimplementation(\"ai.miosa:miosa-sdk:0.1.0\")\n```\n\n```scala\nlibraryDependencies += \"ai.miosa\" % \"miosa-sdk\" % \"0.1.0\"\n```\n\n  The artifact will be available o"
    },
    {
      "slug": "sdks/python",
      "path": "/docs/sdks/python",
      "url": "https://miosa.ai/docs/sdks/python",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/sdks/python",
      "title": "Python SDK",
      "description": "Install, configure, and make your first request with the MIOSA Python SDK.",
      "source": "src/routes/docs/sdks/python/+page.md",
      "content_excerpt": "The official Python SDK for MIOSA. Supports Python 3.9+ and provides both synchronous (`Miosa`) and asynchronous (`AsyncMiosa`) clients.\n\n## Install\n\n```bash\npip install miosa\n```\n\n```bash\nuv add miosa\n```\n\n```bash\npoetry add miosa\n```\n\n```bash\npipenv install miosa\n```\n\n```bash\nconda install -c conda-forge miosa\n```\n\n  The package will be available on PyPI as `miosa`. Until first publish, install from GitHub: `pip install git+https://github.com/Miosa-osa/miosa.git#subdirectory=sdks/python`\n\n## F"
    },
    {
      "slug": "sdks/typescript",
      "path": "/docs/sdks/typescript",
      "url": "https://miosa.ai/docs/sdks/typescript",
      "fallbackUrl": "https://miosa.roberto-c49.workers.dev/docs/sdks/typescript",
      "title": "TypeScript SDK",
      "description": "Install, configure, and make your first request with the MIOSA TypeScript SDK.",
      "source": "src/routes/docs/sdks/typescript/+page.md",
      "content_excerpt": "The official TypeScript/JavaScript SDK for MIOSA. Works with Node.js 18+, Deno, Bun, and modern bundlers. Fully typed — no `any`.\n\n## Install\n\n```bash\nnpm install @miosa/sdk\n```\n\n```bash\npnpm add @miosa/sdk\n```\n\n```bash\nyarn add @miosa/sdk\n```\n\n```bash\nbun add @miosa/sdk\n```\n\n```typescript\n\n```\n\n  The package will be available on npm as `@miosa/sdk`. Until first publish, install from GitHub: `npm install Miosa-osa/miosa#main` (or `pnpm add github:Miosa-osa/miosa#main`).\n\n## First request\n\n```typ"
    }
  ]
}