Get started
Install
holo ships with the hai-agents package and also installs as hai. For an agent that drives this machine, add the desktop extra, or browser to drive your Chrome: pip install "hai-agents[cli,desktop,browser]".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.holo mcp install.
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.
Drive your desktop
- Kill switch: press Esc twice quickly. Works even while Holo holds focus, once permissions are granted.
- Terminal: Ctrl+C where you launched it, or
holo local stopfrom any terminal. - MCP host: cancel from your client. If the run keeps going, use
holo local stop. - Limits:
--max-stepsand--max-timebound a risky task up front.
h/holo-desktop 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. A run that drives this machine stops after 150 steps or 30 minutes by default.
Task-writing tips are in Coding agents. To build your own desktop agent, start from Your desktop.
Models
Override the model for one run, for example with the fasterholo4-35b-a3b from Models.
Desktop permissions
Grant these to the app that startsholo: your terminal, or your coding agent.
macOS
In System Settings, Privacy & Security:- Screen Recording, to see the screen.
- Accessibility, to click and type.
- Input Monitoring, for the
Esctwice kill switch.
holo doctor shows missing Accessibility and Screen Recording grants.
Windows
No permission needed. To drive an app running as administrator, start your terminal as administrator.Linux
No permission needed. Run in a normal desktop session so the agent can reach the display. TheEsc twice kill switch needs pip install pynput and an X11 session. Wayland has no global key listener, so use holo local stop there.
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 go to H in every case, unless you run the model yourself.
Run the model yourself
With--local, an agent that runs on this machine, such as h/holo-desktop, can send its model calls to a server you start with Local inference:
HAI_AGENT_RUNTIME_MODEL is your server’s model name, and agent.model the Holo version you serve, as explained in Local runtime.
Security and privacy
An agent that drives this machine takes control of your desktop. What leaves your machine depends on where the agent loop and the model run.What H receives
Cloud agents such as
h/web-surfer-flash drive a browser on H’s infrastructure in every mode, so they cannot use your own model server.
What the Models API keeps of each model request, and H’s certifications, are in Data retention.
What the agent can see
Anything on screen can end up in a screenshot: other apps and tabs, documents, chats, account names, file paths, and secrets. The terminal output and the runtime log under~/.hai/agent-runtime/logs/ can contain the same things. They stay on your machine, but review them before you share them.
When a coding agent runs holo, the host decides when to call it and what task to send. The server asks the host to confirm with the user before an agent sends, deletes, pays, or changes settings, but the host still decides, so this is not a safety boundary. Check whether the host asks before tool calls, and whether its MCP config is global or per project. The data still goes where the mode above sends it.
Before a sensitive run
- Close unrelated windows, tabs, chats, and password managers.
- Use
--localwith your own model if the task must not reach H. - Use a separate browser profile for web apps, away from your personal cookies.
- Keep the task narrow, so the agent opens fewer apps.
- Rotate any credential that showed up in shared logs or screenshots.
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, as described in 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, in the format described in Files.
~/.holo/skills/file-an-expense/SKILL.md