> ## Documentation Index
> Fetch the complete documentation index at: https://hub.hcompany.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> H Platform has four products: the Agents API (managed computer-use agents, base URL https://agp.eu.hcompany.ai/api/v2 or https://agp.hcompany.ai/api/v2 for the US), the Models API (OpenAI-compatible Holo vision-language models at https://api.hcompany.ai/v1), HoloDesktop CLI (Holo on the user's own desktop), and HoloTab (a free no-code Chrome extension that runs Holo in the user's browser, with recordable routines and schedules).
> Authenticate with a bearer API key from the HAI_API_KEY environment variable. SDKs: `pip install hai-agents` (Python, `from hai_agents import Client`) and `npm install hai-agents` (TypeScript, `import { HaiAgentsClient } from "hai-agents"`). CLI: `hai`.
> Agents do work in a browser or on a desktop; describe the task as an imperative instruction. To run a task quickly, prefer the pre-built agent `h/web-surfer-flash`. Read results from the session's `latest_answer` after it reaches a terminal status.
> Sessions are the unit of work; wait for a terminal status (completed, failed, timed_out, interrupted) before reading the answer. Use webhooks or the `changes` long-poll endpoint to follow progress.

# HoloDesktop CLI

> HoloDesktop CLI runs H's Holo computer-use model on your own Mac, Windows, or Linux desktop from the terminal, MCP, ACP, A2A, or Python.

export const Cta = ({title, body, primary, secondary}) => <div className="not-prose mt-20 flex flex-col items-center rounded-xl border border-zinc-200 bg-white px-6 py-14 text-center dark:border-zinc-800 dark:bg-zinc-950">
    <h2 className="text-3xl font-semibold tracking-tight text-zinc-900 dark:text-zinc-50">{title}</h2>
    <p className="mt-3 max-w-xl text-lg leading-7 text-zinc-600 dark:text-zinc-400">{body}</p>
    <div className="mt-8 flex flex-wrap justify-center gap-3">
      <a href={primary[1]} className="cta-primary inline-flex items-center gap-2 rounded-lg bg-zinc-900 px-5 py-3 text-base font-semibold text-white no-underline dark:bg-white dark:text-zinc-900">
        {primary[0]}
        <Icon icon="arrow-right" size={16} color="currentColor" />
      </a>
      {secondary && <a href={secondary[1]} className="outlined card inline-flex items-center gap-3 rounded-lg bg-white p-3 text-base font-medium text-zinc-800 no-underline dark:bg-zinc-900 dark:text-zinc-100">
          <Icon icon={secondary[2]} size={16} color="currentColor" />
          {secondary[0]}
        </a>}
    </div>
  </div>;

export const Journey = ({stages}) => <div className="not-prose mt-6">
    {stages.map(([title, links, blurb], i) => <div key={title} className="relative flex gap-5 pb-8 last:pb-0">
        {i < stages.length - 1 && <div className="absolute w-px bg-zinc-200 dark:bg-zinc-800" style={{
  left: 15,
  top: 32,
  bottom: 0
}} />}
        <div className="relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-zinc-300 bg-white text-sm font-semibold text-zinc-700 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-200">
          {i + 1}
        </div>
        <div className="min-w-0 flex-1">
          <div className="pt-1 text-lg font-semibold text-zinc-900 dark:text-zinc-100">{title}</div>
          {blurb && <p className="mt-1 text-sm text-zinc-600 dark:text-zinc-400">{blurb}</p>}
          <div className="mt-3 grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
            {links.map(([label, href, icon]) => <a key={href} href={href} className="outlined card flex items-center gap-3 rounded-lg bg-white px-4 py-3 text-sm font-medium text-zinc-800 no-underline dark:bg-zinc-950 dark:text-zinc-200">
                <Icon icon={icon} size={15} color="currentColor" />
                {label}
              </a>)}
          </div>
        </div>
      </div>)}
  </div>;

export const YouTube = ({id, title}) => <iframe className="aspect-video w-full rounded-xl border-0" src={`https://www.youtube-nocookie.com/embed/${id}?rel=0&modestbranding=1`} title={title} loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />;

<Frame>
  <YouTube id="iHfKP7tLewU" title="Introducing HoloDesktop CLI" />
</Frame>

## Five ways to run it

Pick the surface that matches where the task comes from.

| Surface | Command                                          | When                                                                           |
| ------- | ------------------------------------------------ | ------------------------------------------------------------------------------ |
| CLI     | `holo run "task"`                                | One-shot tasks from your terminal                                              |
| MCP     | `holo install`, or `holo mcp` in the host config | Delegate from Claude Code, Cursor, Codex                                       |
| ACP     | `holo acp`                                       | Hermes, OpenClaw, Zed, other [ACP](https://agentclientprotocol.com) hosts      |
| A2A     | `holo serve`                                     | An [A2A](https://a2a-protocol.org) HTTP server on loopback for your own agents |
| Python  | `holo_desktop.agent_client`                      | Sessions and event streams from your own code                                  |

Inference is your call too: H's hosted Models API by default, or any OpenAI-compatible server on your own hardware with `--base-url`, in which case no screenshot, keystroke, or app content leaves your machine. See [Hosted or local models](/holo-desktop-cli/getting-started/hosted-or-local-models).

## Start here

Install, pick how you launch it, then tune it to your setup.

<Journey
  stages={[
["Get started", [
  ["Quickstart", "/holo-desktop-cli/getting-started/quickstart", "rocket"],
  ["Hosted or local models", "/holo-desktop-cli/getting-started/hosted-or-local-models", "server"],
  ["Desktop permissions", "/holo-desktop-cli/getting-started/quickstart#desktop-permissions", "shield-check"],
  ["Architecture", "/holo-desktop-cli/architecture", "diagram-project"],
  ["Security and privacy", "/holo-desktop-cli/security-and-privacy", "lock"],
], "Install, connect a model, and run your first task."],
["Use it", [
  ["From the terminal", "/holo-desktop-cli/getting-started/quickstart#write-good-task-strings", "terminal"],
  ["From Claude Code, Cursor, or Codex", "/holo-desktop-cli/integrations/agent-hosts", "plug"],
  ["As a skill", "/holo-desktop-cli/integrations/use-as-skill", "book-open"],
  ["From Python", "/holo-desktop-cli/how-to/embed-with-python", "code"],
], "Launch it from a terminal, an agent host, or your own code."],
["Customize and debug", [
  ["Customize", "/holo-desktop-cli/how-to/customize", "sliders"],
  ["Debug a failed run", "/holo-desktop-cli/how-to/debug-failed-run", "bug"],
  ["CLI reference", "/holo-desktop-cli/reference/cli", "terminal"],
  ["Environment variables", "/holo-desktop-cli/reference/environment-variables", "gear"],
  ["Paths and files", "/holo-desktop-cli/reference/paths-and-files", "folder"],
]],
["Learn from examples", [
  ["Fix a UI bug with Claude Code", "/holo-desktop-cli/examples/claude-code-ui-qa", "wrench"],
  ["Automate an expense report", "/holo-desktop-cli/examples/expense-report-automation", "receipt"],
]],
]}
/>

## Supported platforms

The `holo` client is pure Python and runs anywhere Python does. The `hai-agent-runtime` binary it drives is downloaded on first run where H publishes it, and bring-your-own elsewhere.

<CardGroup cols={2}>
  <Card title="macOS, Apple Silicon" icon="apple">
    Runtime downloaded on first run. Needs Screen Recording and Accessibility permissions.
  </Card>

  <Card title="Windows, x86_64 and ARM64" icon="windows">
    Runtime downloaded on first run. No extra permissions.
  </Card>

  <Card title="Linux, x86_64" icon="linux">
    Runtime downloaded on first run. Needs an X11 session. Wayland is not supported.
  </Card>

  <Card title="macOS, Intel" icon="apple">
    Bring your own runtime. Put `hai-agent-runtime` on `PATH`, or set a download URL.
  </Card>
</CardGroup>

On bring-your-own platforms, install the `holo` client normally, then put a `hai-agent-runtime` executable on `PATH`, or point `HAI_AGENT_RUNTIME_DOWNLOAD_URL` and `HAI_AGENT_RUNTIME_DOWNLOAD_SHA256` at a trusted build. The CLI checks `PATH` first, so your binary wins over the managed one. See [Runtime cache](/holo-desktop-cli/reference/paths-and-files#runtime-cache).

## Roadmap

Two things are coming, with no firm dates yet:

* **Background mode.** Today the agent drives the screen in front of you and shares your mouse and keyboard. Next, it binds to its own window so you keep using your machine while it works.
* **Native app.** The same agent as a desktop app beside your daily workflow, no terminal needed.

Have a request that isn't here? Send it to [support@hcompany.ai](mailto:support@hcompany.ai).

<Cta title="Get an API key" body="HoloDesktop CLI runs on hosted Holo models. Create your account and API key on the platform, then sign in once with holo login." primary={["Log in to the platform", "https://portal.hcompany.ai/?product=modelsapi&source=docs"]} secondary={["Read the quickstart", "/holo-desktop-cli/getting-started/quickstart", "bolt"]} />
