Tell your computer what to do. Holo gets it done. holo-desktop-cli puts H Company's Holo desktop agent on your machine, as a CLI and an MCP server. Use the hosted models, or run everything on your own hardware for full privacy.
Docs: hub.hcompany.ai/holo-desktop-cli has the setup guides, examples, troubleshooting, host integrations, and the full CLI reference.
Quickstart
curl -fsSL https://install.hcompany.ai/install.sh | bash # Windows: irm https://install.hcompany.ai/install.ps1 | iex
holo login
holo run "Open Calculator and compute 2+2"
On first run, the hai-agent-runtime binary downloads itself to ~/.hai/agent-runtime/ (sha256-verified), and macOS asks you to grant your terminal Accessibility and Screen Recording. See holo run --help or the CLI reference for all flags.
Stopping the agent
Once the agent is driving the screen it is hard to take back control, so Holo has an out-of-band panic stop: press Esc twice quickly, or run holo stop from any terminal. holo run arms the Esc listener itself; for holo mcp, which has no terminal, holo install registers the always-on holo guard with the OS. The listener inspects Esc timing only, never keystroke content. Wayland has no global key listener; bind holo stop to a compositor hotkey.
Run the model yourself
Point --base-url at any OpenAI-compatible server and name the model it serves with --model. No holo login needed, and no screenshots, keystrokes, or app content leave your machine.
holo run --base-url http://localhost:8000/v1 --model holo4-35b-a3b "Open Safari and go to hcompany.ai"
Serving configs are in docs/self-hosting.md.
Use inside another agent
Holo runs as a sub-agent of Claude Code, Cursor, Codex, and other MCP hosts: when your main agent needs to read a screen or click through an app, it delegates to Holo and gets the answer back.
holo install # every host detected on this machine
holo install cursor # one host
holo install list # see what's available
Each host gets the MCP server in its config, plus a Skill where supported, which teaches the parent when to delegate to Holo.
| id | host | skill auto-load |
|---|---|---|
antigravity |
Antigravity (Google) | — |
claude-code |
Claude Code | ~/.claude/skills/ |
claude-desktop |
Claude Desktop | — |
codex |
Codex | ~/.agents/skills/ |
copilot |
GitHub Copilot CLI | — |
cursor |
Cursor | — |
grok-build |
Grok Build (xAI) | ~/.grok/skills/ |
hermes |
Hermes | — |
openclaw |
OpenClaw | ~/.openclaw/skills/ |
opencode |
OpenCode | ~/.config/opencode/skills/ |
Holo drives one desktop: parallel MCP calls queue, and a second holo run exits while another task is driving. Stopping the turn in the host does not abort a run already executing on your machine; use the kill switch.
Use from Python
holo is a thin shell over the hai-agents SDK, so you can drive the same agent directly:
from hai_agents import Client
with Client.local() as client:
result = client.run_session(
agent={
"name": "holo",
"description": "Desktop agent",
"environments": [{"id": "desktop", "kind": "desktop", "host": "user_device"}],
},
messages="Tell me how many unread emails I have",
)
print(result.answer)
The same agent runs in the cloud, alongside browsers and workstations, through the Agents API.
Develop
git clone https://github.com/hcompai/holo-desktop-cli && cd holo-desktop-cli
make setup
uv run holo run "Open Calculator and compute 2+2"
make check # ruff + mypy + pytest
make install-dev installs the checkout as a global holo command. See CONTRIBUTING.md.
License
This client is Apache-2.0-licensed. The hai-agents SDK it builds on is open source. The hai-agent-runtime binary the SDK downloads, which hosts the agent, is closed-source and distributed under H Company's own terms.
Resources
- Models: Holo on Hugging Face
- Docs: HoloDesktop CLI · Agents API · Models API
- H Company
Metadata
Release files for holo-desktop-cli 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| holo_desktop_cli-1.0.0.tar.gz | 75.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| holo_desktop_cli-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 178.6 kB
Release files / holo_desktop_cli-1.0.0.tar.gz
| Download URL | holo_desktop_cli-1.0.0.tar.gz |
|---|---|
| Size | 75.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e276baf6ce5447279b482555be567863540486fcd129eebe543ba1b8a49f6308
|
|
BLAKE2b-256 checksum How to use checksums |
3730ffefc2fbccce40a7c7df3229ccd8f04d5cb9d54bb1cc54b0777e3209495c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / holo_desktop_cli-1.0.0-py3-none-any.whl
| Download URL | holo_desktop_cli-1.0.0-py3-none-any.whl |
|---|---|
| Size | 103.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f7f9a50283949610f5b7b48bdf180f105089e0dfc8e6d130dbd9d7ea3812a20
|
|
BLAKE2b-256 checksum How to use checksums |
2a797cc84b91e9c3c9dab0558fe3ff70b98b0ffac8dd39c40f2ce2c9af15f339
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log