{
  "buildinfo": {
    "_hints": {
      "related": [
        "/health",
        "/workspace/health",
        "/ports"
      ],
      "usage": "Compare build_sha to `git rev-parse HEAD` of the commit you built. Equal = running code is the code you shipped. Unequal = STALE build; rebuild before testing behavior."
    },
    "build_dirty": "true",
    "build_epoch": "1793212240",
    "build_local": "Oct 28 1:30 PM",
    "build_sha": "778d0341b2e41d6c68fd4d730e67ebb878543640",
    "build_stamp": "778d0341b2e41d6c68fd4d730e67ebb878543640-dirty-1793212240",
    "dev": false,
    "flavor": "public",
    "narrative": "Running exe IS build 778d0341b2e41d6c68fd4d730e67ebb878543640-dirty (built Oct 28 1:30 PM). If this equals the SHA you pushed, your build shipped; if not, it's STALE — rebuild before trusting any behavior.",
    "ok": true,
    "update_channel": "stable"
  },
  "context": "app",
  "doctor": {
    "_hints": {
      "note": "The Doctor: full diagnostics + port integrity, and (fix=true) the safe wake-heal cascade, re-diagnosed. If recommend_workspace_restart is true, the safe heal didn't clear it: offer the user the gated workspace restart (POST /container-restart) which drops their session."
    },
    "actions": [],
    "after": null,
    "before": {
      "checks": [
        {
          "check": "mac-disk",
          "duration_ms": 3,
          "message": "164.8 GB free on this Mac",
          "ok": true
        },
        {
          "check": "mac-memory",
          "duration_ms": 3,
          "message": "Memory pressure is elevated; quit unused apps if the workspace stalls",
          "ok": true
        },
        {
          "check": "vm-running",
          "duration_ms": 65,
          "message": "Workspace VM and machine running",
          "ok": true
        },
        {
          "check": "vm-disk",
          "details": {
            "df": "/                 25951539200  45%\n/var/lib/machines 21018218496  45%\n/boot               805163008   8%"
          },
          "duration_ms": 61,
          "message": "Workspace disks have room",
          "ok": true
        },
        {
          "check": "vm-fs",
          "duration_ms": 77,
          "message": "No filesystem errors since the VM booted",
          "ok": true
        },
        {
          "check": "vm-memory",
          "duration_ms": 130,
          "message": "No out-of-memory kills in the last hour",
          "ok": true
        },
        {
          "check": "editor-config",
          "duration_ms": 105,
          "message": "Could not check: THEME\nadom.adom-agent-bar-0.2.7\nadom.adom-theme-2.3.7\nadom.adom-vscode-1.1.113\nanthropic.claude-code-2.1.312-linux-arm64\nextensions.json\ngoogle.google-antigravity-1.2.1\nmoonshot-ai.kimi-code-0.7.5\nopenai.chatgpt-26.5903.61454",
          "ok": true
        },
        {
          "check": "extension-host",
          "duration_ms": 100,
          "message": "Extension host running",
          "ok": true
        },
        {
          "check": "docker",
          "details": {
            "runtime": "macos"
          },
          "duration_ms": 0,
          "message": "N/A — backend is the Adom-Workspace machine (not Docker)",
          "ok": true
        },
        {
          "check": "api-key",
          "duration_ms": 89,
          "error": "Cannot read API key: ",
          "fix": "Inject the api-key into the workspace machine (POST /setup/step/inject-api-key).",
          "message": "api-key failed",
          "ok": false
        },
        {
          "check": "env-vars",
          "details": {
            "ADOM_BRIDGE_MODE": "local",
            "ADOM_CARBON_URL": "http://adom-host:47083",
            "ADOM_HYDROGEN_URL": "http://adom-host:47083",
            "VSCODE_PROXY_URI": "http://localhost:7380/proxy/{{port}}/"
          },
          "duration_ms": 88,
          "message": "All 4 required vars set",
          "ok": true
        },
        {
          "check": "adom-cli",
          "details": {
            "output": "/usr/local/bin/adom-cli\n{\n  \"carbon_url\": null,\n  \"hydrogen_url\": null,\n  \"api_token\": null\n}\ntoken_source: none"
          },
          "duration_ms": 146,
          "message": "adom-cli installed and configured",
          "ok": true
        },
        {
          "check": "adom-cli-api",
          "details": {
            "output": "Checking Carbon API at http://adom-host:47083...\nHydrogen proxy is up at http://adom-host:47083; carbon.adom.inc reachable: yes\n{\n  \"browser_connected\": true,\n  \"carbon_reachable\": true,\n  \"ok\": true,\n  \"service\": \"hydrogen-proxy\",\n  \"sse_connections\": 1,\n  \"window_mode\": \"webview\"\n}"
          },
          "duration_ms": 245,
          "message": "Carbon API reachable via adom-cli",
          "ok": true
        },
        {
          "check": "sse",
          "details": {
            "browser_connected": true,
            "sse_connections": 1,
            "window_mode": "webview"
          },
          "duration_ms": 1,
          "message": "1 SSE connection(s), browser_connected=true",
          "ok": true
        },
        {
          "check": "webview",
          "details": {
            "latency_ms": 0,
            "method": "read-only GET (no test tab)"
          },
          "duration_ms": 0,
          "message": "Workspace tab API reachable (0ms)",
          "ok": true
        },
        {
          "check": "code-server",
          "details": {
            "port": 7380,
            "status": 200
          },
          "duration_ms": 4,
          "message": "200 on :7380",
          "ok": true
        },
        {
          "check": "extensions",
          "details": {
            "count": 7,
            "extensions": [
              "adom.adom-agent-bar-0.2.7",
              "adom.adom-theme-2.3.7",
              "adom.adom-vscode-1.1.113",
              "anthropic.claude-code-2.1.312-linux-arm64",
              "google.google-antigravity-1.2.1",
              "moonshot-ai.kimi-code-0.7.5",
              "openai.chatgpt-26.5903.61454"
            ]
          },
          "duration_ms": 84,
          "message": "adom.adom-vscode + anthropic.claude-code installed",
          "ok": true
        },
        {
          "check": "skills",
          "details": {
            "skill_count": 297,
            "skill_md_exists": true
          },
          "duration_ms": 163,
          "message": "297 skills deployed",
          "ok": true
        },
        {
          "check": "relay",
          "details": {
            "connectedClients": 1,
            "httpPort": 8766,
            "status": "ok",
            "tokenWarning": "This relay accepts the well-known DEVELOPMENT token, which is published in the              adom-bridge docs. Anyone who knows this relay's URL can join it and drive every              desktop connected to it. Rotate: restart with `adom-bridge-cli serve --supervise --token              <secret>` (or set ADOM_AUTH_TOKEN) and update each desktop's server entry auth_token to match.",
            "usingDefaultToken": true,
            "wsPort": 8765
          },
          "duration_ms": 73,
          "message": "Relay healthy on :8766 inside container",
          "ok": true
        },
        {
          "check": "ports",
          "details": {
            "ports": [
              {
                "accessible": true,
                "name": "code-server",
                "port": 7380
              }
            ]
          },
          "duration_ms": 8,
          "message": "All 1 Docker ports accessible",
          "ok": true
        },
        {
          "check": "identity",
          "details": {
            "source": "adom-cli carbon user get",
            "user": "<email>"
          },
          "duration_ms": 301,
          "message": "user=<email> (from adom-cli; no legacy adom-identity.json, expected on macOS)",
          "ok": true
        },
        {
          "check": "adom-bridge",
          "details": {
            "ping_ok": true,
            "ping_roundtrip_ms": 2,
            "relay_health": {
              "connectedClients": 1,
              "httpPort": 8766,
              "status": "ok",
              "tokenWarning": "This relay accepts the well-known DEVELOPMENT token, which is published in the              adom-bridge docs. Anyone who knows this relay's URL can join it and drive every              desktop connected to it. Rotate: restart with `adom-bridge-cli serve --supervise --token              <secret>` (or set ADOM_AUTH_TOKEN) and update each desktop's server entry auth_token to match.",
              "usingDefaultToken": true,
              "wsPort": 8765
            },
            "relay_http_ok": true,
            "relay_uptime": null,
            "relay_version": null
          },
          "duration_ms": 8,
          "message": "Relay HTTP healthy (via code-server proxy)",
          "ok": true
        },
        {
          "check": "port-integrity",
          "details": {
            "code_server_port": 7380,
            "code_server_serving": true,
            "control_default": 47084,
            "control_drifted": false,
            "control_port": 47084,
            "proxy_port": 47083
          },
          "duration_ms": 4,
          "message": "Control API on its default port and code-server serving",
          "ok": true
        }
      ],
      "duration_ms": 711,
      "failed": 1,
      "ok": false,
      "passed": 15,
      "total": 16
    },
    "duration_ms": 920,
    "fix_ran": false,
    "ok": false,
    "recommend_workspace_restart": false,
    "still_failing": 1
  },
  "health": {
    "_hints": {
      "eval": "POST /eval with {\"js\":\"...\"} returns the JS result. Use for DOM queries. Never use /eval to click buttons — use /ai-cursor/click instead.",
      "next": "Check /workspace/health for the editor, /container-status for Docker state, /claude/status for Claude auth, /diagnostics/all for full system health",
      "related": [
        "/workspace/health",
        "/buildinfo",
        "/ports",
        "/container-status",
        "/claude/status",
        "/diagnostics/all",
        "/docker/status"
      ]
    },
    "build_dirty": "true",
    "build_epoch": "1793212240",
    "build_local": "Oct 28 1:30 PM",
    "build_sha": "778d0341b2e41d6c68fd4d730e67ebb878543640",
    "narrative": "Hydrogen control API is up. Running exe is build 778d0341b2e41d6c68fd4d730e67ebb878543640 (built Oct 28 1:30 PM). Compare build_sha to `git rev-parse HEAD` to confirm it's the code you shipped.",
    "ok": true,
    "port": 47084,
    "service": "adom-hydrogen-control"
  },
  "hydrogen": {
    "build_stamp": "778d0341b2e41d6c68fd4d730e67ebb878543640-dirty-1793212240",
    "channel": null,
    "flavor": null,
    "tier": null,
    "version": "0.1.422"
  },
  "machine": {
    "arch": "aarch64",
    "chip": "",
    "macos_build": "25G83",
    "macos_version": "26.6.2",
    "mem_gb": 0,
    "model": ""
  },
  "setup": {
    "steps": [],
    "total_ms": null
  },
  "setup_state": {
    "_hints": {
      "note": "Setup state: 'never-run' | 'in-progress' | 'complete' | 'error'. POST /setup/state to update. POST /setup/run-all to re-trigger full setup.",
      "related": [
        "/setup-status",
        "/setup/trigger",
        "/setup/step/<id>"
      ]
    },
    "ok": true,
    "state": "complete"
  },
  "updater": {
    "_hints": {
      "note": "Hydrogen frontend update status. `current_version` vs `latest_version`; `update_available`=true means a newer Hydrogen exists. `staged`=true means it's already downloaded+verified, so POST /updater/install is an INSTANT relaunch. Tell the user both versions and ask before installing.",
      "related": [
        "/updater/install",
        "/buildinfo"
      ]
    },
    "ok": true,
    "updater": {
      "below_floor": false,
      "changelog_url": null,
      "channel": "stable",
      "current_version": "0.1.422",
      "flavor": "public",
      "floor": null,
      "floor_notice": null,
      "last_check_at": "2026-10-30T12:46:10.373232+00:00",
      "last_check_error": null,
      "latest_version": "0.1.422",
      "staged": false,
      "staged_version": null,
      "tier": "insiders",
      "update_available": false
    }
  }
}