Skip to main content
holo ships with the hai-agents package and also installs as hai. holo alone opens an interactive session. To use H agents from Claude Code, Cursor, or Codex, run holo mcp install.
1

Install

For an agent that drives this machine, add the workstation extra: pip install "hai-agents[cli,workstation]".
2

Sign in

This opens the H Platform in your browser and saves an API key. Scripts can set HAI_API_KEY instead.
3

Run a task

This starts a session on h/web-surfer-flash, prints each step, then the answer. Pick another agent with --agent, or change the default with holo agents use h/web-surfer-pro.

Interactive sessions

holo alone opens a prompt. Each message continues the same session, so the agent keeps its browser and context. Press Enter to message the agent while it works, Esc to pause it, and Ctrl+D to leave. Type / for commands and ? for keys. All keys: Chat.

Where it runs

The agent decides what it drives: a cloud browser, or your browser or desktop. --local decides where the agent loop runs, through the local runtime. The table above shows each pair. Model calls go to H in every case, unless you run the model yourself.

Drive your desktop

h/holo-desktop uses your screen, mouse, keyboard, shell, and files. It drives the primary display, so keep the target app there. The first run on macOS may ask for permissions. One agent drives the desktop at a time. A second one waits up to 10 seconds, then fails. To build your own desktop agent instead, see Your desktop. The agent only sees the task. Name the app, the account when it matters, the action, and what done looks like. See Write a good task. A run that drives this machine stops after 150 steps or 30 minutes by default.

Stop a run

The notice above lists every way to stop. holo local stop stops every run on this machine, including runs a coding agent started.

Models

Override the model for one run, for example with the faster holo4-35b-a3b. All IDs: Models API.

Desktop permissions

Grant these to the app that starts holo: your terminal, or your coding agent.
In System Settings, Privacy & Security:
  • Screen Recording, to see the screen.
  • Accessibility, to click and type.
  • Input Monitoring, for the Esc twice kill switch. Without it, use holo local stop.
Restart that app after granting. holo doctor shows missing Accessibility and Screen Recording grants.

Customize every run

holo adds two optional things from ~/.holo/ to every agent it runs, from the terminal and from coding agents. Edits apply to the next session. They go wherever the task text goes: see Security and privacy. ~/.holo/agents.md holds standing instructions, added after the agent’s own:
~/.holo/agents.md
~/.holo/skills/<name>/SKILL.md holds your skills, one folder each. Format rules: Files.
~/.holo/skills/file-an-expense/SKILL.md

Run the agent loop locally

--local fetches the agent from H and runs it in the local runtime. It works with any agent. Model calls and cloud environments, such as a cloud browser, still go to H.
The first run downloads the runtime. Supported platforms: Runtime.

Run the model yourself

With --local, an agent that runs on this machine, such as h/holo-desktop, can send its model calls to your own server. Start a server with Local inference, then:
HAI_AGENT_RUNTIME_MODEL is your server’s model name, and agent.model the Holo version you serve. See Two model names. For coding agents, set the two variables in the host’s MCP env block, and have the host pass model to run_agent.

Reference

holo --help lists every command, and holo <command> --help its options.

Commands

Global options

Put these before the command, as in holo --json sessions list.

Run

Chat

holo chat, or holo alone, takes --agent and --local.
  • A session stays open for 10 minutes after each answer.
  • While an agent drives this machine, your typing goes to your apps, so the prompt only listens for Esc twice.
  • With --local, /resume, /live, and /share are off, since they need a cloud session.

Login

holo local

These commands serve this machine to a session started elsewhere, such as a registered agent or the web app. Each prints the session ID it serves: set it on the agent’s user_device environment. See Your browser and Your desktop. holo local desktop downscales and recompresses screenshots before upload. The desktop environment’s screenshot_max_width caps width again on the agent’s side, so the smaller limit applies. In an interactive terminal, desktop and workstation also stop on Esc twice. If the kill switch cannot arm, they say so: use holo local stop. Requirements: Desktop permissions.

Environment variables

HAI_API_KEY is read from, in order: --api-key, the process environment, then ~/.config/hai/.env. XDG_CONFIG_HOME, when set, replaces ~/.config.

Files

Treat all of these as sensitive. holo sends agents.md and your skills as the agent.instructions and agent.skills overrides. Your own -o overrides win. A skill’s directory name is its name. SKILL.md needs YAML frontmatter with a description, which the agent matches tasks against. A file without one stops the run with an error naming it. Only SKILL.md is read. A skill with the same name as one of the agent’s replaces it.

Runtime

--local resolves hai-agent-runtime in this order:
  1. HAI_AGENT_LOCAL_BINARY_PATH
  2. hai-agent-runtime on PATH
  3. The managed install under ~/.hai/agent-runtime/bin/<version>/
  4. A sha256-verified download of the pinned version, on first run
holo doctor shows which one it will use.

Troubleshoot

Start with holo doctor. Fix the first failing row. If a coding agent’s run fails, try the smallest version in a terminal:
If that works, the problem is the host: check that holo whoami finds a saved key, and that the host’s MCP env block has the variables you need. The terminal prints each step. Hosts get the same steps as MCP log messages. holo sessions events <session-id> shows a cloud session’s full history. With --local, the runtime logs to ~/.hai/agent-runtime/logs/. Before sharing logs, see What the agent can see.