> ## 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.

# Run the model on your own GPUs

> Point Client.local() at your own Holo4 server: the agent and the model both run on hardware you control.

export const Notice = ({kind = "note", title, children}) => {
  const kinds = {
    warning: {
      label: "User notice",
      icon: <>
          <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" />
          <path d="M12 9v4" />
          <path d="M12 17h.01" />
        </>
    },
    gotcha: {
      label: "Gotcha",
      icon: <>
          <circle cx="12" cy="12" r="10" />
          <path d="M12 16v-4" />
          <path d="M12 8h.01" />
        </>
    },
    note: {
      label: "Note",
      icon: <>
          <circle cx="12" cy="12" r="10" />
          <path d="M12 16v-4" />
          <path d="M12 8h.01" />
        </>
    }
  };
  const k = kinds[kind];
  return <div className="notice my-6 rounded-xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-950">
      <div className={`${kind === "warning" ? "not-prose flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-red-400/80 dark:text-red-400/70" : kind === "gotcha" ? "not-prose flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-amber-500/80 dark:text-amber-400/70" : "not-prose flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-zinc-400 dark:text-zinc-500"}`}>
        <svg className="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          {k.icon}
        </svg>
        {k.label}
      </div>
      {title && <div className="not-prose mt-2 text-base font-semibold text-zinc-900 dark:text-zinc-100">{title}</div>}
      <div className="notice-body mt-3 text-sm leading-6 text-zinc-700 dark:text-zinc-300">{children}</div>
    </div>;
};

[Local mode](/agents-api/local-mode) with your own model server. No H API key needed.

```text theme={"system"}
your code ──► Client.local() ──► local runtime ──► your model server
                                      └──► your browser or desktop
```

<Notice kind="note" title="Where things run">
  The runtime needs macOS (Apple silicon) or Windows (x64), with `hai-agents` 1.2.1+. The model server can run anywhere, including Linux.
</Notice>

<Steps titleSize="h3">
  <Step id="serve" title="Serve Holo4">
    <Tabs>
      <Tab title="GPU server (vLLM)">
        ```bash vLLM theme={"system"}
        vllm serve Hcompany/Holo4-35B-A3B-FP8 \
          --served-model-name holo4-35b-a3b \
          --max-model-len 262144 \
          --enable-prefix-caching \
          --chat-template-content-format openai \
          --enable-auto-tool-choice \
          --tool-call-parser qwen3_coder \
          --reasoning-parser qwen3 \
          --limit-mm-per-prompt '{"image": 5, "video": 0}'
        ```

        Base URL: `http://localhost:8000/v1`.
      </Tab>

      <Tab title="Mac (llama.cpp)">
        ```bash llama.cpp theme={"system"}
        brew install llama.cpp
        llama-server -hf Hcompany/Holo4-35B-A3B-GGUF
        ```

        Base URL: `http://localhost:8080/v1`. Any model ID works.
      </Tab>
    </Tabs>

    Other sizes and precisions: [Local inference](/models-api/local-inference).
  </Step>

  <Step id="run" title="Run a session">
    ```bash Install theme={"system"}
    pip install "hai-agents[browser]"
    ```

    ```python Python theme={"system"}
    from hai_agents import Client
    from hai_agents_local.runtime import Inference

    agent = {
        "name": "local-web",
        "description": "Drives Chrome on this machine.",
        "model": "holo4-35b-a3b",
        "environments": [{"id": "browser", "kind": "web", "host": "user_device"}],
    }
    inference = Inference.self_hosted("http://localhost:8000/v1", model="holo4-35b-a3b")

    with Client.local(inference=inference) as client:
        result = client.run_session(agent=agent, messages="Open example.com and tell me the page heading.")
        print(result.status, result.answer)
    ```
  </Step>
</Steps>

## Two model names

| Field | Value |
| - | - |
| Agent `model` | The Holo version you serve: `holo4-35b-a3b`, `holo4-27b`, or `holo3-1-35b-a3b`. Sets the prompt format. |
| `Inference.self_hosted(model=...)` | Your server's model name. |

<Notice kind="warning" title="Always set the agent's model">
  Without it, the agent uses the Holo3.1 format.
</Notice>

## GPUs on another machine

No API key is sent to your server, so keep it private. Use an SSH tunnel and keep `http://localhost:8000/v1`:

```bash SSH tunnel theme={"system"}
ssh -N -L 8000:localhost:8000 you@gpu-host
```

## Troubleshooting

| Error | Fix |
| - | - |
| `No health endpoint at http://.../health` | The base URL must end in `/v1`, and the server must answer `GET /health`. |
| `inference selection cannot reconfigure an existing runtime` | Close the other client, or pass `local_options={"port": 18796}`. |
| `Unknown model '...'` | Use an agent `model` from [Two model names](#two-model-names). |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.