> ## Documentation Index
> Fetch the complete documentation index at: https://8476371-opencomputer.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://8476371-opencomputer.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://8476371-opencomputer.manicule.dev/api/mcp.
> Every agent surface: https://8476371-opencomputer.manicule.dev/.well-known/llms-manifest.json

# Start here (/self-hosting/overview)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 805 · updated: 2026-11-13 -->
Related: [On Azure](/self-hosting/azure.md), [On AWS](/self-hosting/aws.md), [On Google Cloud](/self-hosting/gcp.md), [Troubleshooting](/slack/troubleshooting.md)

> A self-hosted @computer is three Cloudflare Workers and one private VM per organization, created on Azure

A self-hosted deployment runs the same stack as the hosted service, in your accounts:

```mermaid
flowchart TB
  users["Browser, Slack, GitHub"]
  subgraph cf["Cloudflare"]
    app["<b>App Worker</b><br/>dashboard and sign-in<br/>Slack and GitHub callbacks"]
    gw["<b>Gateway Worker</b><br/>sessions and Slack delivery<br/>host connections"]
    plat["<b>Platform Worker</b><br/>creates VMs on Azure"]
  end
  subgraph az["Azure, private subnet"]
    vm["<b>Computer VM</b><br/>one per organization<br/>host, a runner per session<br/>model proxy, data disk"]
  end
  users -->|HTTPS| app
  app -->|HTTPS| gw
  gw <--> plat
  plat -.->|creates| vm
  vm -->|outbound WebSocket| gw
```

The Computer VM has no public IP. It reaches the internet through a NAT gateway and connects out to the gateway Worker; nothing connects in.

## What you need

| Account or tool                                          | Used for                                                                                                                                                 |
| -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cloudflare account with a zone (domain) you control      | Workers, D1, KV, R2 and Durable Objects. The gateway Worker needs a custom domain on the zone: Worker-to-Worker requests on `workers.dev` do not arrive. |
| Azure subscription                                       | The Computer VMs, their network and the bootstrap storage. You need rights to create role assignments and app registrations.                             |
| WorkOS account                                           | Sign-in to the dashboard                                                                                                                                 |
| Slack workspace                                          | A Slack app you create                                                                                                                                   |
| GitHub account or organization                           | A GitHub App you create                                                                                                                                  |
| Anthropic API key                                        | Model calls from every session                                                                                                                           |
| Git, Node.js 22 or newer, npm, Go, Azure CLI, Wrangler 4 | Building and deploying                                                                                                                                   |

## Choose where the VMs run

| Cloud                             | Status            |
| --------------------------------- | ----------------- |
| [Azure](/self-hosting/azure)      | Supported         |
| [AWS](/self-hosting/aws)          | Not supported yet |
| [Google Cloud](/self-hosting/gcp) | Not supported yet |
