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.
Install
workstation extra: pip install "hai-agents[cli,workstation]".Sign in
HAI_API_KEY instead.Run a task
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 fasterholo4-35b-a3b. All IDs: Models API.
Desktop permissions
Grant these to the app that startsholo: your terminal, or your coding agent.
- macOS
- Windows
- Linux
In System Settings, Privacy & Security:
- Screen Recording, to see the screen.
- Accessibility, to click and type.
- Input Monitoring, for the
Esctwice kill switch. Without it, useholo local stop.
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.
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 inholo --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
Esctwice. - With
--local,/resume,/live, and/shareare 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’suser_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:
HAI_AGENT_LOCAL_BINARY_PATHhai-agent-runtimeonPATH- The managed install under
~/.hai/agent-runtime/bin/<version>/ - A sha256-verified download of the pinned version, on first run
holo doctor shows which one it will use.
Troubleshoot
Start withholo doctor. Fix the first failing row.
If a coding agent’s run fails, try the smallest version in a terminal:
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.