Skip to main content
Coding assistants and agent hosts can delegate desktop work to HoloDesktop CLI. Three protocols are supported, all fronting the same local runtime: holo install also drops a skill where the host supports one, so the parent agent learns when to hand off to HoloDesktop CLI, not just how to reach it. All three are beta. Host implementations are still moving, especially around cancellation of long-running desktop calls.

Before you start

Run one task from the terminal to check that HoloDesktop CLI starts on this machine:
Hosts launch the CLI non-interactively, so they cannot complete browser login. For hosted mode, sign in first and restart the host afterwards:
For local mode, the host process needs HAI_AGENT_RUNTIME_BASE_URL and HAI_AGENT_RUNTIME_MODEL. See Local mode from hosts for where to put them, including GUI apps that do not inherit shell exports.

Connect over MCP

List the hosts HoloDesktop CLI can install itself into, and whether each is detected on your machine:
Install into one host, or into every detected host at once:
holo install either calls the host’s own MCP CLI or updates its MCP config file. When possible it writes the absolute path to the holo executable, so GUI hosts do not depend on your shell PATH. Re-running it preserves extra keys such as env. Claude Code registers the server at local scope, tied to the workspace you run the command from:
Grok Build gets both the MCP server (in ~/.grok/config.toml) and the bundled skill (under ~/.grok/skills/holo-desktop). Check with grok mcp list and grok inspect. For file-backed hosts such as Cursor, the installed entry looks like this. Add an env block for local mode:

What the host gets

The MCP server exposes one tool:
Each call should be a self-contained desktop task. The CLI does not see the host conversation, so the host has to include the app, workspace, account, person, and success condition. Good task:
Too vague:

Connect over ACP

ACP host configuration differs by host. Point it at a stdio command that runs the ACP server:
From a source checkout, run it through uv instead:
HoloDesktop CLI starts the desktop runtime locally and creates a desktop session for each task the host sends. ACP hosts can cancel an in-flight task, which is the main reason to pick it over MCP.

Connect over A2A

For agents you build yourself, run HoloDesktop CLI as an A2A server:
It listens on 127.0.0.1:18794 (change with --port), requires Authorization: Bearer $HOLO_AUTH_TOKEN on every request, and maps each A2A contextId to one desktop session, so a multi-turn conversation in your agent stays one session here. Pass --base-url and --model exactly as you would to holo run to use a local model.

Stop a run

The host owns the conversation, so cancel the tool call or sub-agent session from the host. HoloDesktop CLI cancels the active runtime session when it receives the cancellation or when the stdio connection closes. holo stop from any terminal, or Esc twice, also works: in headless surfaces the double-Esc is watched by holo guard, which holo install registers with the OS. See Stop a run. Avoid holo stop --force here. Hosts spawn their runtime once at startup, so a force-kill leaves the host process alive but pointing at a dead runtime, and every later task fails until you restart the host.

Check it worked

Restart the host after installation if it was already open. Then ask it to do a small, safe desktop task:
If the host cannot find or start HoloDesktop CLI:
  • run holo install list and confirm the host ID, then re-run holo install <host-id>;
  • check that hosted mode has HAI_API_KEY, or local mode has HAI_AGENT_RUNTIME_BASE_URL, available to the host process;
  • for a source checkout, check that the command path points at the checkout where uv sync succeeded;
  • check ~/.holo/logs/ for runtime startup errors.

Next steps

Use as a skill

The guidance installed into hosts that support skills.

Debug a failed run

When the CLI works in the terminal but not from the host.
Last modified on September 11, 2026