# pols.so docs > Documentation for pols.so: full Ubuntu 24.04 VMs as developer sandboxes, hosted in Germany, driven by the pols CLI, the REST API, the MCP server and AI agents. Reach for pols.so when a task needs a real, isolated Linux machine: a full Ubuntu 24.04 VM with root, systemd, Docker, a 1920x1080 desktop with Google Chrome, and Claude Code and Codex preinstalled, hosted on dedicated servers in Germany and billed per running second. Install the CLI with `curl -fsSL https://pols.so/install.sh | sh`, store an API key with `pols login`, then `pols new`, `pols exec`, `pols cp`, `pols stop` and `pols rm`. Agents can use the same operations through the MCP server (`pols mcp`, stdio) or the `pols` agent skill. The REST API is at https://api.pols.so with an org API key as bearer token. ## Docs - [pols.so](https://docs.pols.so/): Developer sandboxes as full Ubuntu 24.04 virtual machines, hosted on our own servers in Germany, for people and for AI agents. ## Get started - [Quickstart](https://docs.pols.so/getting-started/quickstart/): Install the pols CLI, store an API key, create a sandbox, run a command in it and clean up. - [Limits and quotas](https://docs.pols.so/getting-started/limits/): The quotas every org starts with, the API's rate limits, and the size limits of commands, files and computer-use actions. - [FAQ](https://docs.pols.so/getting-started/faq/): Short answers about pricing, hosting, isolation, persistence, networking and what pols does not do yet. ## How it works - [Architecture](https://docs.pols.so/concepts/architecture/): How pols turns an API call into a running VM, where each part runs, and how sandbox traffic is kept apart from the API and the website. - [The machine](https://docs.pols.so/concepts/machine/): Sizes, the Ubuntu 24.04 image every sandbox starts from, the default user, the desktop, and the helpers installed in every sandbox. ## Sandboxes - [Lifecycle](https://docs.pols.so/sandboxes/lifecycle/): Create, list, stop, resume, fork and delete sandboxes, and how their status and desired state move. - [Commands and files](https://docs.pols.so/sandboxes/commands-and-files/): Run commands in a sandbox with streamed output, as the default user or as root, and copy files in and out. - [Templates](https://docs.pols.so/sandboxes/templates/): Save a prepared sandbox as a template and start new sandboxes from it in seconds. - [Snapshots and forks](https://docs.pols.so/sandboxes/forks/): Copy a sandbox's disk into a new running sandbox to branch work, try risky changes or run things in parallel. - [Secrets and environment](https://docs.pols.so/sandboxes/vault/): Give sandboxes API keys, passwords and configuration through the encrypted vault or plain environment variables. - [Network egress](https://docs.pols.so/sandboxes/egress/): Choose what a sandbox may reach on the network, from the whole internet to an allowlist of addresses or nothing at all. - [Long-running tasks](https://docs.pols.so/sandboxes/long-running-tasks/): Keep builds, servers and agents running for hours, independent of the command or connection that started them. - [Data retention](https://docs.pols.so/sandboxes/data-retention/): What pols keeps about your sandboxes and account, where, for how long, and what deleting removes. ## Access - [SSH](https://docs.pols.so/access/ssh/): Open shells, run commands, copy files and forward ports over SSH through the pols gateway. - [Desktop](https://docs.pols.so/access/desktop/): Open a sandbox's 1920x1080 desktop with Chrome in your browser, and share it with a link. - [Published ports](https://docs.pols.so/access/ports/): Serve a web app or API from a sandbox over HTTPS, privately with a login link or publicly for anyone. ## Account - [API keys](https://docs.pols.so/account/api-keys/): Create, use, expire and revoke the org API keys that the CLI, the MCP server, the clients and the REST API authenticate with. - [Orgs, usage and billing](https://docs.pols.so/account/orgs/): Your org owns your sandboxes, templates, keys and vault; see its quotas, current use, per-second usage and estimated cost. ## SDKs and agents - [MCP server](https://docs.pols.so/agents/mcp/): Let Claude Code, Cursor, Codex and other MCP clients create and drive pols sandboxes through the pols mcp server. - [Agent skill](https://docs.pols.so/agents/skill/): Install the pols agent skill so Claude Code and other skill-aware agents know the CLI, its limits and its errors without reading --help. - [TypeScript client](https://docs.pols.so/agents/typescript/): Use pols from Node.js with the typed TypeScript client, generated from the same OpenAPI spec as the API. - [Computer use](https://docs.pols.so/agents/computer-use/): Let an AI agent see and operate a sandbox's desktop with screenshots, mouse and keyboard, or drive its Chrome over the DevTools Protocol. ## Reference - [Errors](https://docs.pols.so/reference/errors/): The stable error codes of the pols API, CLI, MCP server and TypeScript client, what usually causes each, and what to do. ### CLI - [CLI reference](https://docs.pols.so/reference/cli/): Every pols command with its usage, examples and flags, generated from the CLI's own help. - [pols browser](https://docs.pols.so/reference/cli/browser/): Control a sandbox's Chrome over the Chrome DevTools Protocol - [pols computer](https://docs.pols.so/reference/cli/computer/): Use a sandbox's desktop: screenshots, mouse and keyboard - [pols cp](https://docs.pols.so/reference/cli/cp/): Copy a file between this machine and a sandbox - [pols desktop](https://docs.pols.so/reference/cli/desktop/): Print a link to the sandbox's desktop in the browser - [pols exec](https://docs.pols.so/reference/cli/exec/): Run a command in a sandbox, streaming its output - [pols fork](https://docs.pols.so/reference/cli/fork/): Fork a sandbox into a new running sandbox with a copy of its disk - [pols get](https://docs.pols.so/reference/cli/get/): Show one sandbox - [pols host](https://docs.pols.so/reference/cli/host/): Publish a sandbox port over HTTPS, or list published ports - [pols login](https://docs.pols.so/reference/cli/login/): Store an API key (read from stdin, or POLS_API_KEY) - [pols logout](https://docs.pols.so/reference/cli/logout/): Forget the stored API key - [pols ls](https://docs.pols.so/reference/cli/ls/): List sandboxes - [pols mcp](https://docs.pols.so/reference/cli/mcp/): Serve the pols tools to an AI agent over MCP (stdio) - [pols new](https://docs.pols.so/reference/cli/new/): Create a sandbox and wait until it runs - [pols org](https://docs.pols.so/reference/cli/org/): Show your org, its quotas and what it uses - [pols resume](https://docs.pols.so/reference/cli/resume/): Resume a stopped sandbox - [pols rm](https://docs.pols.so/reference/cli/rm/): Delete a sandbox and its disk - [pols skill](https://docs.pols.so/reference/cli/skill/): Install the pols agent skill, so agents know the CLI without reading --help - [pols ssh](https://docs.pols.so/reference/cli/ssh/): Open an SSH session in a sandbox through the SSH gateway - [pols ssh-key](https://docs.pols.so/reference/cli/ssh-key/): Manage the SSH public keys that open your org's sandboxes - [pols stats](https://docs.pols.so/reference/cli/stats/): Show the CPU, memory and disk use of a sandbox, or of all running sandboxes - [pols stop](https://docs.pols.so/reference/cli/stop/): Stop a sandbox (disk is kept; stopped time is free) - [pols template](https://docs.pols.so/reference/cli/template/): Save sandboxes as templates and manage them - [pols usage](https://docs.pols.so/reference/cli/usage/): Show per-second usage (default: this month) - [pols vault](https://docs.pols.so/reference/cli/vault/): See your org's vault of passwords and environment variables for sandboxes - [pols version](https://docs.pols.so/reference/cli/version/): Print the version ## API - [pols.so API](https://docs.pols.so/api/) ### api-keys - [List the org's API keys (secrets are never returned)](https://docs.pols.so/api/api-keys/list-api-keys/) - [Refused; create API keys on the website's account page](https://docs.pols.so/api/api-keys/create-api-key/) - [Refused; revoke API keys on the website's account page](https://docs.pols.so/api/api-keys/revoke-api-key/) ### browser - [Connect to the sandbox's Chrome DevTools Protocol endpoint (WebSocket)](https://docs.pols.so/api/browser/connect-cdp/) - [Get a short-lived WebSocket URL for the sandbox's Chrome DevTools Protocol endpoint](https://docs.pols.so/api/browser/create-cdp-connection/) ### computer - [Click, double-click, drag, type, press keys or scroll on the sandbox's desktop](https://docs.pols.so/api/computer/run-computer-action/) - [Take a PNG screenshot of the sandbox's whole 1920x1080 desktop](https://docs.pols.so/api/computer/get-computer-screenshot/) ### edge - [Get a link to the sandbox's desktop in the browser (noVNC)](https://docs.pols.so/api/edge/create-desktop-link/) - [Get a short-lived login link for a published port](https://docs.pols.so/api/edge/create-port-link/) - [How to reach the sandbox over SSH through the gateway](https://docs.pols.so/api/edge/get-ssh-access/) - [List the sandbox's published ports](https://docs.pols.so/api/edge/list-ports/) - [Publish a sandbox port over HTTPS, or change its visibility](https://docs.pols.so/api/edge/publish-port/) - [Stop publishing a port](https://docs.pols.so/api/edge/unpublish-port/) ### exec - [Run a command in a running sandbox](https://docs.pols.so/api/exec/exec-sandbox/) ### files - [Create or overwrite a file in a running sandbox](https://docs.pols.so/api/files/write-sandbox-file/) - [Read a file from a running sandbox](https://docs.pols.so/api/files/read-sandbox-file/) ### org - [CPU, memory and disk use summed over the org's running sandboxes](https://docs.pols.so/api/org/get-org-stats/) - [The org the API key belongs to, with its quotas and current consumption](https://docs.pols.so/api/org/get-org/) ### sandboxes - [A sandbox's current CPU, memory and disk use and its recent history](https://docs.pols.so/api/sandboxes/get-sandbox-stats/) - [Create a sandbox from a template and start it](https://docs.pols.so/api/sandboxes/create-sandbox/) - [Delete a sandbox and its disk](https://docs.pols.so/api/sandboxes/delete-sandbox/) - [Fork a sandbox into a new running sandbox with a copy of its disk](https://docs.pols.so/api/sandboxes/fork-sandbox/) - [Get a sandbox](https://docs.pols.so/api/sandboxes/get-sandbox/) - [List sandboxes](https://docs.pols.so/api/sandboxes/list-sandboxes/) - [Resume a stopped sandbox](https://docs.pols.so/api/sandboxes/resume-sandbox/) - [Stop a sandbox (snapshot, then free; stopped time is not metered)](https://docs.pols.so/api/sandboxes/stop-sandbox/) ### ssh-keys - [List the org's SSH public keys](https://docs.pols.so/api/ssh-keys/list-ssh-keys/) - [Register an SSH public key for the org's sandboxes](https://docs.pols.so/api/ssh-keys/create-ssh-key/) - [Remove an SSH public key](https://docs.pols.so/api/ssh-keys/delete-ssh-key/) ### system - [Liveness check](https://docs.pols.so/api/system/get-health/) ### templates - [Delete one of the org's templates](https://docs.pols.so/api/templates/delete-template/) - [Get a template](https://docs.pols.so/api/templates/get-template/) - [List system templates and the org's own templates](https://docs.pols.so/api/templates/list-templates/) - [Save a sandbox's disk as a named template](https://docs.pols.so/api/templates/create-template/) ### usage - [Per-second usage from running intervals](https://docs.pols.so/api/usage/get-usage/) ### vault - [List the org's vault entries (values are never returned)](https://docs.pols.so/api/vault/list-vault-entries/) ## Agent skills - [pols-so-docs](https://docs.pols.so/.well-known/agent-skills/pols-so-docs/SKILL.md): Read the pols.so docs instead of answering from memory. Documentation for pols.so: full Ubuntu 24.04 VMs as developer sandboxes, hosted in Germany, driven by the pols CLI, the REST API, the MCP server and AI agents. Use when a task involves pols.so docs: how it works, how to set it up or configure it, or its API. ## Agent resources - [llms-full.txt](https://docs.pols.so/llms-full.txt): The full Markdown of every page in one file. - [Page Markdown](https://docs.pols.so/index.md): Append `.md` to any page URL to fetch that page as raw Markdown. - [JSON API](https://docs.pols.so/api/docs/pages.json): Page index of the JSON docs API; each entry links the page's JSON and Markdown forms. Described by the OpenAPI document at https://docs.pols.so/openapi.json. - [Agent skills](https://docs.pols.so/.well-known/agent-skills/index.json): Agent Skills discovery index of the skills this site publishes. - [API catalog](https://docs.pols.so/.well-known/api-catalog): RFC 9727 linkset of the APIs documented here. - [AI catalog](https://docs.pols.so/.well-known/ai-catalog.json): ARD manifest of the agent-facing resources on this site (MCP server, skills, APIs). - [agent-readability.json](https://docs.pols.so/agent-readability.json): Manifest of every agent-facing artifact on this site. - [Sitemap](https://docs.pols.so/sitemap.xml): Every indexable page URL with its last-modified date.