holo run, holo mcp, or holo acp starts but does not finish the desktop task.
Quick checklist
Run through these first. Most first-run failures are one of them.Start with doctor
holo doctor is read-only. It checks the runtime binary, hosted or local model credentials, the agent API port, and the ~/.holo directory. Fix the first failing check before moving on.
Reproduce with the CLI
If the failure happened from MCP or ACP, reproduce the smallest version from a terminal first:Stop a bad run first
If HoloDesktop CLI is acting in the wrong app, typing in the wrong place, or looping, cancel the active run before debugging. The fastest stop is pressingEsc twice quickly, a global kill switch that works even while Holo holds focus. You can also press Ctrl+C in the launching terminal, or run holo stop from any terminal (holo stop --force also kills the runtime). For MCP or ACP runs, run holo stop or cancel the request from the host. To bound runs ahead of time, pass --max-steps or --max-time-s.
Check model mode
For hosted mode:--base-url. Local mode does not require holo login.
Check host environment
MCP and ACP hosts launch HoloDesktop CLI non-interactively. Hosted mode needsHAI_API_KEY available to that process, usually from ~/.holo/.env after holo login.
Local mode needs:
Check runtime resolution
HoloDesktop CLI resolveshai-agent-runtime in this order:
hai-agent-runtimeonPATH- managed install under
~/.holo/runtime/ - download-on-first-run
binary row shows which runtime path HoloDesktop CLI will use. If you are testing a local runtime build, put a deliberate hai-agent-runtime wrapper on PATH. Otherwise, let the CLI use the managed runtime.
Check logs
Runtime startup logs live under:Understand run logs
Each run writes a JSONL event log under:holo run, the run directory usually contains events.jsonl. Observation events inside that file can include the raw screenshot HoloDesktop CLI saw as a base64 JPEG, plus metadata such as viewport size, cursor position, and sometimes accessibility data. Treat run logs as sensitive: they may contain screenshots, task text, app content, and model reasoning.
Do not post
events.jsonl, ~/.holo/runs/, or screenshots from a run publicly without review. They can include what the model saw on screen, including account names, local paths, messages, documents, and secrets.
Example event lines:
Open Calculator and compute 2+2:
answer_event, but the event sequence shows the runtime never clicked =. That distinction matters: the runtime completed from the agent’s perspective, but the task was not fully done.
Use the sequence to localize the failure:
For timing summaries, prefer:
--profile reads the event log and prints per-step observe, model, tool, and total timings.