[
 {
  "id": "fullstack",
  "name": "Software factory",
  "description": "Agents that build and ship software, each on its own machine for a work session of about 8 hours: Docker for services and test databases, a desktop and a browser to check the UI they built, and a disk that keeps the work between sessions. Turn on nested virtualization if they also run Android emulators or VMs.",
  "required": [
   "vm_isolation",
   "docker_inside",
   "desktop",
   "browser",
   "persistent_disk"
  ],
  "workload": {
   "vcpu": 4,
   "ram": 8,
   "disk": 20,
   "sessions": 2200,
   "sessionMin": 480,
   "concurrency": 100,
   "alwaysOn": 0,
   "snapshotGiB": 250,
   "egress": 300,
   "ipv4": 0,
   "seats": 3,
   "persistentDisk": true
  },
  "ranking": "https://battleships.dev/data/rankings/fullstack.json"
 },
 {
  "id": "employees",
  "name": "Always-on AI employees",
  "description": "Assistant agents that each live on their own machine all the time (one per employee or customer, like OpenClaw or Hermes): they keep their memory and files, hold logins to your tools, answer messages, run scheduled jobs and use a browser. They read untrusted web pages and messages all day, so no shared-kernel containers. Mostly idle, so waking on a message and sleeping in between matters more than Docker.",
  "required": [
   "strong_isolation",
   "persistent_disk",
   "browser"
  ],
  "workload": {
   "vcpu": 2,
   "ram": 4,
   "disk": 20,
   "sessions": 0,
   "sessionMin": 0,
   "concurrency": 0,
   "alwaysOn": 50,
   "snapshotGiB": 0,
   "egress": 100,
   "ipv4": 0,
   "seats": 2,
   "persistentDisk": true
  },
  "ranking": "https://battleships.dev/data/rankings/employees.json"
 },
 {
  "id": "interp",
  "name": "Code interpreter bursts",
  "description": "An AI app that runs short pieces of code for its users: lots of one-minute runs, each on a small machine.",
  "required": [],
  "workload": {
   "vcpu": 1,
   "ram": 2,
   "disk": 5,
   "sessions": 200000,
   "sessionMin": 1,
   "concurrency": 100,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 20,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/interp.json"
 },
 {
  "id": "platform",
  "name": "Sandboxes for your users",
  "description": "Your product gives each of your users a sandbox for a short session, created through an API.",
  "required": [],
  "workload": {
   "vcpu": 2,
   "ram": 4,
   "disk": 10,
   "sessions": 30000,
   "sessionMin": 23,
   "concurrency": 300,
   "alwaysOn": 0,
   "snapshotGiB": 100,
   "egress": 300,
   "ipv4": 0,
   "seats": 2,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/platform.json"
 },
 {
  "id": "rl",
  "name": "RL rollouts",
  "description": "Reinforcement-learning training: a million runs of about 3 minutes, a thousand at a time, each keeping its machine fully busy. Cheap interruptible (spot) machines are fine.",
  "required": [
   "fast_boot"
  ],
  "workload": {
   "vcpu": 2,
   "ram": 4,
   "disk": 10,
   "sessions": 1000000,
   "sessionMin": 3,
   "concurrency": 1000,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 50,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/rl.json"
 },
 {
  "id": "evals",
  "name": "Agent evals",
  "description": "Benchmarking an agent or a model on a suite of tasks (SWE-bench style): each task starts from its own prepared image, the agent works on it for about 20 minutes (mostly waiting on the model), then it is scored and thrown away. Big bursts: a 500-task suite, 3 trials each, about 10 runs a month, 250 at once. A failed task is simply retried, so interruptible (spot) machines are fine.",
  "required": [
   "custom_image"
  ],
  "workload": {
   "vcpu": 4,
   "ram": 8,
   "disk": 20,
   "sessions": 15000,
   "sessionMin": 20,
   "concurrency": 250,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 50,
   "ipv4": 0,
   "seats": 2,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/evals.json"
 },
 {
  "id": "ci",
  "name": "CI runners",
  "description": "Build and test jobs from your CI pipeline: each job gets a fresh 8 vCPU machine for about 12 minutes, then it is thrown away.",
  "required": [],
  "workload": {
   "vcpu": 8,
   "ram": 16,
   "disk": 80,
   "sessions": 6000,
   "sessionMin": 12,
   "concurrency": 40,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 200,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/ci.json"
 },
 {
  "id": "devbox",
  "name": "24/7 dev boxes",
  "description": "Cloud machines kept on all the time and reached over SSH: a developer’s box that sits idle most of the day, or an agent working on it non-stop (slide “How busy the CPU is” up).",
  "required": [
   "ssh"
  ],
  "workload": {
   "vcpu": 4,
   "ram": 8,
   "disk": 50,
   "sessions": 0,
   "sessionMin": 0,
   "concurrency": 0,
   "alwaysOn": 1,
   "snapshotGiB": 0,
   "egress": 50,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": true
  },
  "ranking": "https://battleships.dev/data/rankings/devbox.json"
 },
 {
  "id": "cua",
  "name": "Computer-use agents",
  "description": "Agents that use a computer the way a person does: they look at a desktop and a browser, then click and type. Sessions of about 15 minutes.",
  "required": [
   "desktop",
   "browser"
  ],
  "workload": {
   "vcpu": 4,
   "ram": 8,
   "disk": 20,
   "sessions": 20000,
   "sessionMin": 15,
   "concurrency": 50,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 300,
   "ipv4": 0,
   "seats": 2,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/cua.json"
 },
 {
  "id": "browseruse",
  "name": "Browser-use agents",
  "description": "Agents that do tasks on websites for your users: open a real browser, read the page, click and fill forms. Sessions of about 10 minutes.",
  "required": [
   "browser",
   "browser_control"
  ],
  "workload": {
   "vcpu": 2,
   "ram": 4,
   "disk": 10,
   "sessions": 30000,
   "sessionMin": 10,
   "concurrency": 50,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 300,
   "ipv4": 0,
   "seats": 2,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/browseruse.json"
 },
 {
  "id": "scrape",
  "name": "Scraping & bots (startup scale)",
  "description": "A startup collecting data from websites with headless browsers: about 100,000 short visits a month, 50 at a time.",
  "required": [
   "browser"
  ],
  "workload": {
   "vcpu": 1,
   "ram": 2,
   "disk": 5,
   "sessions": 100000,
   "sessionMin": 3,
   "concurrency": 50,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 500,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/scrape.json"
 },
 {
  "id": "scrapemass",
  "name": "Mass scraping & bots (undetectable)",
  "description": "Millions of browser visits a month to sites that try to block bots: needs stealth browsers, CAPTCHA solving and residential IP addresses, 1,000 at a time.",
  "required": [
   "browser",
   "anti_bot",
   "captcha_solving",
   "residential_ip"
  ],
  "workload": {
   "vcpu": 1,
   "ram": 2,
   "disk": 5,
   "sessions": 3000000,
   "sessionMin": 2,
   "concurrency": 1000,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 5000,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/scrapemass.json"
 },
 {
  "id": "redteam",
  "name": "Parallel red teaming",
  "description": "Many security agents attacking your own app at once, each on its own throwaway machine. Much like QA, they drive a real browser through your app (logins, forms, flows) and run scanners and raw-socket tools next to it: a real VM with root, so they can also route traffic through your proxy (nftables). They only attack what they are told to, so provider-side egress rules are optional. 200 at a time, 30 minutes each.",
  "required": [
   "vm_isolation",
   "root",
   "browser"
  ],
  "workload": {
   "vcpu": 2,
   "ram": 4,
   "disk": 20,
   "sessions": 5000,
   "sessionMin": 30,
   "concurrency": 200,
   "alwaysOn": 0,
   "snapshotGiB": 20,
   "egress": 100,
   "ipv4": 0,
   "seats": 2,
   "persistentDisk": false
  },
  "ranking": "https://battleships.dev/data/rankings/redteam.json"
 },
 {
  "id": "gpu",
  "name": "GPU eval jobs",
  "description": "Model evaluation jobs that each need one H100 GPU for about 30 minutes.",
  "required": [],
  "workload": {
   "vcpu": 8,
   "ram": 32,
   "disk": 100,
   "sessions": 500,
   "sessionMin": 30,
   "concurrency": 10,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 50,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false,
   "gpu": "H100",
   "gpuCount": 1
  },
  "ranking": "https://battleships.dev/data/rankings/gpu.json"
 },
 {
  "id": "mac",
  "name": "macOS agents",
  "description": "Agents that need a real macOS machine, for example to build and test iPhone or Mac apps. Sessions of about 20 minutes.",
  "required": [],
  "workload": {
   "vcpu": 4,
   "ram": 8,
   "disk": 60,
   "sessions": 1000,
   "sessionMin": 20,
   "concurrency": 5,
   "alwaysOn": 0,
   "snapshotGiB": 0,
   "egress": 50,
   "ipv4": 0,
   "seats": 1,
   "persistentDisk": false,
   "os": "macos"
  },
  "ranking": "https://battleships.dev/data/rankings/mac.json"
 }
]