coldpass

damianvtran/local-operator-ui

GitHub ↗ · How this check works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/damianvtran--local-operator-ui.svg).

agentic-aiassistant-chat-botschatbotlocalpython

Not tested

Only older checks are saved; no current product test.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Needs keys or browser
None seen
Setup time
2 min 10 s to install, 28 s to first use

Safety: no observations were recorded for the selected revision. Functional results do not establish a safety result.

Repair history and test corrections
Earlier diagnoses and Coldpass test changes
Run details

Haiku 5.5

Native agent · Not tested

Checked operation /opt/lo-venv/bin/local-operator serve --port 1111 · local HTTP start + response check

Agent-reported scope: Start the Local Operator backend API with `local-operator serve` (README Troubleshooting fallback) and GET /v1/capabilities, which returned HTTP 200 with the backend's feature list.

Run details
run
damianvtran--local-operator-ui-claude-haiku-5-5-1792283939702053193
date
Oct 17, 2026
time to working
360.3s
product hosting / execution
Local HTTP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.011833
Recorded source
https://github.com/damianvtran/local-operator-ui
Tool transport
mcp-assigned-vm
Test version
readme-508462a99ba6c45473094c91c7b73d8090c06158165b92f97626e2d7928c0d56
revision
393ddd86cabee9516ad51615d7e74f0cc91de3d3
Current diagnosis: unknown · resolved

Rerun on the current test runtime (guest-exec return, credential guard removed, admission/verifier fixes, egress); earlier row predates them

Repair record fix-9cf5ef5b4ee3e11dc3f8 · current status JSON. Original run outcomes remain unchanged.

Failed run: damianvtran/local-operator-ui · Oct 17, 2026 · Recorded operation failed.

Repair development: damianvtran/local-operator-ui · Oct 17, 2026 · Repair work (development) · not an initial-trial result.

Test-repair rerun: damianvtran/local-operator-ui · Oct 17, 2026 · Not tested.

Double-checks failed run: damianvtran/local-operator-ui · Oct 17, 2026.

Fix: fix-9cf5ef5b4ee3e11dc3f8.

Agent-reported additional finding (agent-reported): For the desktop UI: allow the Electron binary download (or set ELECTRON_MIRROR) and provide an X display (e.g. xvfb-run) and a non-root user, or run with a sandbox setup the user accepts. The backend path needs no change.

What the agent did

Start the Local Operator backend API with `local-operator serve` (README Troubleshooting fallback) and GET /v1/capabilities, which returned HTTP 200 with the backend's feature list.

apt-get install curl ca-certificates xz-utils; downloaded Node v22.13.1 linux-x64 to /opt/node22 (README: Node.js 22.13.1 or newer)
npx --yes local-operator-ui (README: Run with npx) -> exit 1, no output
apt-get install build-essential; npm install -g local-operator-ui (README: Install with npm) -> added 63 packages, version 0.34.55
local-operator-ui (README: Install with npm, run the application) -> Electron binary download failed (fetch failed), exit 1
python3 -m venv /opt/lo-venv; /opt/lo-venv/bin/pip install local-operator (README: Troubleshooting, manual backend fallback) -> ok
/opt/lo-venv/bin/local-operator serve --port 1111 -> Application startup complete, listening on 127.0.0.1:1111
curl http://127.0.0.1:1111/v1/capabilities -> HTTP 200, JSON with desktop_contract, features
stopped the test server (pid 2622) so the checker can start its own
Earlier attempts (1)

Haiku 5.5

Native agent · Recorded operation failed

Operation / attempted scope pnpm build

Agent-reported scope: README/docs/BUILD.md documented build (pnpm build, run via pnpm dist in BUILD.md) of the Local Operator desktop app; the build was attempted and stopped at the credential check.

Run details
run
damianvtran--local-operator-ui-claude-haiku-5-5-1792244969574987498
date
Oct 17, 2026
time to working
not recorded
product hosting / execution
Local command in the guest
recorded operation scope
Not completed. Install succeeded. The build stops at scripts/check-build-env.mjs because VITE_GOOGLE_CLIENT_ID is unset (Google and Microsoft OAuth client IDs/secrets are required for the build). The README's run path (npx/npm install -g local-operator-ui) is a desktop Electron GUI and needs a display and the Electron runtime, so no MCP start or tools/list applies. No browser was installed; the shared CDP endpoint was not used. No credentials were obtained.
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.013146
Recorded source
https://github.com/damianvtran/local-operator-ui
Tool transport
mcp-assigned-vm
Test version
readme-0ba1bd83ee992e5266da14bd927c1b522fe2316cb76209abff7d5896636bdaef
revision
393ddd86cabee9516ad51615d7e74f0cc91de3d3
Current diagnosis: unknown · resolved

Rerun on the current test runtime (guest-exec return, credential guard removed, admission/verifier fixes, egress); earlier row predates them

Repair record fix-9cf5ef5b4ee3e11dc3f8 · current status JSON. Original run outcomes remain unchanged.

Failed run: damianvtran/local-operator-ui · Oct 17, 2026 · Recorded operation failed.

Repair development: damianvtran/local-operator-ui · Oct 17, 2026 · Repair work (development) · not an initial-trial result.

Test-repair rerun: damianvtran/local-operator-ui · Oct 17, 2026 · Not tested.

Fix: fix-9cf5ef5b4ee3e11dc3f8.

Recorded blocker / warning

Step: pnpm build (electron-vite build, electron.vite.config.js via scripts/check-build-env.mjs)

Build requires VITE_GOOGLE_CLIENT_ID (and related OAuth client IDs/secrets) that are not provided in the VM.

Suggested next step (agent-reported): Provide VITE_GOOGLE_CLIENT_ID, VITE_GOOGLE_CLIENT_SECRET, VITE_MICROSOFT_CLIENT_ID in .env (see .env.template / .env.build.example), then rerun pnpm build. Also set NODE_USE_ENV_PROXY=1 on Node >=22.21 or use a curl-based Electron download, since Node 22.13 fetch ignores the proxy so install-electron fails in this VM.

What the agent did

README/docs/BUILD.md documented build (pnpm build, run via pnpm dist in BUILD.md) of the Local Operator desktop app; the build was attempted and stopped at the credential check.

node 22.13.1 via npm i -g [email protected] (apt node 18 is below .nvmrc/engines >=22.13.1)
pnpm i -g pnpm@10
pnpm install --frozen-lockfile --network-concurrency=4 --fetch-retries=8 (succeeded after registry 500/504 retries)
pnpm build -> prebuild: install-electron failed (Node fetch ignores HTTPS proxy); manually extracted official Electron 44.3.0 linux-x64 zip into node_modules/electron/dist
pnpm build -> FAILED: Error: VITE_GOOGLE_CLIENT_ID is not set

No product verdict. Run record.

Repair work and diagnoses (1)

Haiku 5.5

Native agent · Repair work (development) · not an initial-trial result

Operation / attempted scope limited checks

Agent-reported scope: Documented build from source: `pnpm build` (README -> docs/BUILD.md 'Building from source'), which runs electron-vite build for the desktop app. Exercised as far as possible: dependency install, then the build's config load, which is where the repo's own credential guard fires.

Run details
run
damianvtran--local-operator-ui-claude-haiku-5-5-1792249190216000224
date
Oct 17, 2026
time to working
not recorded
product hosting / execution
Not recorded
recorded operation scope
limited checks
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.024049
Recorded source
https://github.com/damianvtran/local-operator-ui
Tool transport
mcp-assigned-vm
Test version
readme-e355d210a5597d62817363bd9e09cb7c249f34e243f03b2f9fa6e292f457cfd0
revision
393ddd86cabee9516ad51615d7e74f0cc91de3d3
Current diagnosis: unknown · resolved

Rerun on the current test runtime (guest-exec return, credential guard removed, admission/verifier fixes, egress); earlier row predates them

Repair record fix-9cf5ef5b4ee3e11dc3f8 · current status JSON. Original run outcomes remain unchanged.

Failed run: damianvtran/local-operator-ui · Oct 17, 2026 · Recorded operation failed.

Repair development: damianvtran/local-operator-ui · Oct 17, 2026 · Repair work (development) · not an initial-trial result.

Test-repair rerun: damianvtran/local-operator-ui · Oct 17, 2026 · Not tested.

Double-checks failed run: damianvtran/local-operator-ui · Oct 17, 2026.

Fix: fix-9cf5ef5b4ee3e11dc3f8.

Recorded blocker / warning

Step: pnpm build (README 'Building from source' -> docs/BUILD.md). It fails first at the prebuild Electron fetch, and after that at the electron-vite config load, which requires the OAuth build variables.

Missing build credentials: VITE_GOOGLE_CLIENT_ID is not set (also VITE_GOOGLE_CLIENT_SECRET, VITE_MICROSOFT_CLIENT_ID, VITE_MICROSOFT_TENANT_ID). This is a prerequisite, not a repo defect: the guard is intentional and documented in scripts/check-build-env.mjs.

Install / setup / connection checks
[
  {
    "status": "PASS",
    "details": {
      "working": false,
      "argv": [
        "pnpm",
        "install",
        "--frozen-lockfile",
        "--offline"
      ],
      "kind": "cli",
      "returncode": 0,
      "stdout": "Lockfile is up to date, resolution step is skipped\nAlready up to date\n\n. postinstall$ node ./bin/postinstall.js\n. postinstall: Done\n. prepare$ node scripts/hooks-install.mjs --tolerate-failure && node scripts/evidence-fold.mjs --install --tolerate-failure\n. prepare: hooks: git is not available here, so no push hook can be wired (nothing to do).\n. prepare: evidence-fold: git config --local merge.evidence-fold.driver failed, so a fold would still stop on a manifest conflict\n. prepare: evidence-fold: this is the `prepare` path, so the install is NOT failed by it. Run `pnpm evidence:fold:check` for the read-only answer, and `pnpm evidence:fold:install` once the cause is fixed.\n. prepare: Done\n\u256d Warning \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502                                                                              \u2502\n[excerpt truncated]",
      "stderr": "",
      "needs_credentials": false,
      "needs_browser": false,
      "scope": "partial: install"
    },
    "check": "install",
    "optional": false
  },
  {
    "status": "FAIL",
    "details": {
      "working": false,
      "argv": [
        "pnpm",
        "exec",
        "electron-vite",
        "build"
      ],
      "kind": "cli",
      "returncode": 1,
      "stdout": "",
      "stderr": "failed to load config from /workspace/electron.vite.config.js\nerror during build:\nError: VITE_GOOGLE_CLIENT_ID is not set\n    at replaceBackendConfigPlugin (/workspace/electron.vite.config.js:5193:11)\n    at Object.<anonymous> (/workspace/electron.vite.config.js:5258:7)\n    at Module._compile (node:internal/modules/cjs/loader:1562:14)\n    at _require.extensions.<computed> [as .js] (file:///workspace/node_modules/.pnpm/[email protected][email protected]_@[email protected][email protected][email protected][email protected]_/node_modules/electron-vite/dist/chunks/lib-DyJQBCfr.mjs:1186:24)\n    at Module.load (node:internal/modules/cjs/loader:1313:32)\n    at Function._load (node:internal/modules/cjs/loader:1123:12)\n    at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)\n    at Module.require (node:internal/modules/cjs/loader:1335:12)\n[excerpt truncated]",
      "needs_credentials": false,
      "needs_browser": false,
      "blocker": "product did not produce a clear credential error: {\"returncode\": 1, \"stdout\": \"\", \"stderr\": \"failed to load config from /workspace/electron.vite.config.js\\nerror during build:\\nError: VITE_GOOGLE_CLIENT_ID is not set\\n    at replaceBackendConfigPlugin (/workspace/electron.vite.config.js:5193:11)\\n    at Object.<anonymous> (/workspace/electron.vite.config.js:5258:7)\\n    at Module._compile (node:internal/modules/cjs/loader:1562:14)\\n    at _require.extensions.<computed> [as .js] (file:///workspace/node_modules/.pnpm/[email protected][email protected]_@[email protected][email protected][email protected][email protected]_/node_modules/electron-vite/dist/chunks/lib-DyJQBCfr.mjs:1186:24)\\n    at Module.load (node:internal/modules/cjs/loader:1313:32)\\n    at Function._load (node:internal/modules/cjs/loader:1123:12)\\n    at TracingChannel.traceSync (node:diagnostics_channel:322:14)\\n    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)\\n    at Module.require (node:internal/modules/cjs/loader:1335:12)\\n    at require (node:internal/modules/helpers:136:16)\\n\", \"needs_credentials\": false, \"needs_browser\": false}"
    },
    "check": "credentials_error",
    "optional": false
  }
]

Suggested next step (agent-reported): Provide the four OAuth build variables (for example in a .env at the repo root, based on .env.template / .env.build.example) from the project's OAuth apps, then run `pnpm build`. Also make the Electron runtime reachable: either allow github.com egress from the VM, or run `node bin/ensure-electron.js` with a Node that honours HTTPS_PROXY (Node 22.21+ with NODE_USE_ENV_PROXY=1), or pre-place electron-v44.3.0-linux-x64.zip in the electron cache. A non-credential smoke check is the install plus the 'VITE_GOOGLE_CLIENT_ID is not set' config-load failure recorded in probe.json.

What the agent did

Documented build from source: `pnpm build` (README -> docs/BUILD.md 'Building from source'), which runs electron-vite build for the desktop app. Exercised as far as possible: dependency install, then the build's config load, which is where the repo's own credential guard fires.

Read README.md, .env.template, .env.build.example, scripts/check-build-env.mjs, scripts/vite-plugins/replace-backend-config.ts, docs/BUILD.md
Installed Node v22.13.1 from nodejs.org tarball (matches .nvmrc) and xz-utils via apt
npm i -g pnpm@10 (pnpm 10.34.7)
pnpm install --frozen-lockfile: failed on registry 500/504 three times, then succeeded on the 4th retry
Installed build-essential and python3 via apt, because node-pty's native build needed make/g++ (first attempt failed: 'not found: make')
pnpm build: failed in prebuild (node ./bin/ensure-electron.js) with 'Electron runtime is missing ... could not be fetched' (TypeError: fetch failed, EAI_AGAIN github.com)
pnpm exec electron-vite build (same build, prebuild skipped): failed in config load with 'Error: VITE_GOOGLE_CLIENT_ID is not set' (replace-backend-config plugin)
Did not download Electron through the proxy or substitute placeholder OAuth values, since that would fake the credentials the build guards; no product source changed