{
  "generatedBy": "bench.mjs",
  "startedAt": "2026-10-05T12:37:08.754Z",
  "finishedAt": "2026-10-05T12:37:08.867Z",
  "machine": {
    "cpu": "Apple M1",
    "os": "Darwin 26.3",
    "arch": "arm64",
    "node": "v22.18.0",
    "python": "Python 3.13.5"
  },
  "metricCount": 21,
  "metrics": [
    {
      "metric": "ollama_version",
      "value": "0.35.1",
      "unit": "",
      "note": "native macOS binary"
    },
    {
      "metric": "open_webui_version",
      "value": "0.11.4",
      "unit": "",
      "note": "GET /api/version"
    },
    {
      "metric": "docker_vm_memory_limit",
      "value": "3.828GiB",
      "unit": "",
      "note": "docker stats MEM LIMIT (Docker Desktop VM)"
    },
    {
      "metric": "host_swap_used_at_start",
      "value": "11351.06M",
      "unit": "",
      "note": "sysctl vm.swapusage before the Open WebUI capture; the Mac was already under memory pressure"
    },
    {
      "metric": "open_webui_idle_mib",
      "value": 989.7,
      "unit": "MiB",
      "note": "docker stats MEM USAGE, 3 samples 10 s apart after 60 s idle, no browser tab open; min 989.7, max 990.0",
      "n": 3
    },
    {
      "metric": "open_webui_during_chat_max_mib",
      "value": 990.2,
      "unit": "MiB",
      "note": "max docker stats MEM USAGE sampled while one chat completion ran through Open WebUI",
      "n": 6
    },
    {
      "metric": "open_webui_chat_seconds",
      "value": 9.6,
      "unit": "s",
      "note": "non-streaming /api/chat/completions round trip, cold model load included",
      "n": 1
    },
    {
      "metric": "ollama_rss_while_open_webui_chat_max_mib",
      "value": 1129.7,
      "unit": "MiB",
      "note": "ps RSS of ollama serve + llama-server runner, max sample during the Open WebUI chat",
      "n": 6
    },
    {
      "metric": "ollama_ps_during_open_webui_chat",
      "value": "1.2 GB 100% GPU",
      "unit": "",
      "note": "`ollama ps` SIZE and PROCESSOR"
    },
    {
      "metric": "ollama_idle_no_model_rss_mib",
      "value": 8.1,
      "unit": "MiB",
      "note": "ps RSS of ollama serve with no model loaded, Open WebUI stopped",
      "n": 1
    },
    {
      "metric": "ollama_alone_chat_max_rss_mib",
      "value": 1041.4,
      "unit": "MiB",
      "note": "ps RSS of ollama serve + runner, max sample during the same prompt sent straight to /api/chat",
      "n": 14
    },
    {
      "metric": "ollama_alone_chat_footprint",
      "value": "204MB+15MB",
      "unit": "",
      "note": "macOS footprint (runner+serve), mid-run sample; excludes clean file-backed model pages, which is why it is far below RSS"
    },
    {
      "metric": "ollama_alone_eval_tps",
      "value": 44.07,
      "unit": "tok/s",
      "note": "eval_count 438 / eval_duration",
      "n": 1
    },
    {
      "metric": "hollama_version",
      "value": "0.35.4",
      "unit": "",
      "note": "ghcr.io/fmaclen/hollama:0.35.4 (node build/index.js on port 4173)"
    },
    {
      "metric": "hollama_image_disk",
      "value": "223MB",
      "unit": "",
      "note": "docker image ls SIZE"
    },
    {
      "metric": "hollama_pull_s",
      "value": 40.37,
      "unit": "s",
      "note": "docker pull wall time",
      "n": 1
    },
    {
      "metric": "hollama_http_status",
      "value": 200,
      "unit": "HTTP",
      "note": "GET / on the published port"
    },
    {
      "metric": "hollama_idle_mib",
      "value": 17.37,
      "unit": "MiB",
      "note": "docker stats MEM USAGE after 30 s idle; Hollama runs chats in the browser, so the server stays idle during use",
      "n": 3
    },
    {
      "metric": "open_webui_v0_11_4_compressed_mb",
      "value": 1492.1,
      "unit": "MB",
      "note": "linux/arm64 manifest layer sum on ghcr.io, 2026-10-05"
    },
    {
      "metric": "open_webui_v0_11_4_slim_compressed_mb",
      "value": 175.9,
      "unit": "MB",
      "note": "linux/arm64 manifest layer sum on ghcr.io, 2026-10-05"
    },
    {
      "metric": "open_webui_v0_11_4_image_disk",
      "value": "5.85GB",
      "unit": "",
      "note": "docker image ls SIZE after pull (containerd store)"
    }
  ],
  "log": [
    ""
  ]
}
