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

# Models API

> Holo vision-language models that operate real user interfaces across web, desktop, and mobile: what they do, which size to pick, open weights, pricing.

export const LocalModels = () => {
  const models = [{
    name: "Holo3.1 9B",
    icon: "server",
    fit: "18.8 GB, 24 GB GPU",
    blurb: "The most capable dense model on a single GPU.",
    href: "https://huggingface.co/Hcompany/Holo-3.1-9B"
  }, {
    name: "Holo3.1 4B",
    icon: "computer",
    fit: "10.4 GB, 16 GB GPU",
    blurb: "Fully local desktop automation with HoloDesktop CLI.",
    href: "https://huggingface.co/Hcompany/Holo-3.1-4B"
  }, {
    name: "Holo3.1 0.8B",
    icon: "microchip",
    fit: "2.2 GB, on-device",
    blurb: "Grounding and simple actions on constrained hardware.",
    href: "https://huggingface.co/Hcompany/Holo-3.1-0.8B"
  }];
  return <div className="not-prose my-6 grid gap-4 sm:grid-cols-3">
      {models.map(m => <a key={m.name} href={m.href} className="outlined card flex flex-col gap-3 rounded-xl bg-white p-4 no-underline dark:bg-zinc-950">
          <div className="flex items-start gap-3">
            <div className="inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-200">
              <Icon icon={m.icon} iconType="light" size={20} color="currentColor" />
            </div>
            <div className="ml-auto opacity-60">
              <Icon src="/images/icons/huggingface.svg" size={18} />
            </div>
          </div>
          <div>
            <div className="text-base font-semibold text-zinc-900 dark:text-zinc-100">{m.name}</div>
            <div className="mt-0.5 text-sm text-zinc-500 dark:text-zinc-400">{m.fit}</div>
          </div>
          <p className="text-sm leading-6 text-zinc-600 dark:text-zinc-400">{m.blurb}</p>
        </a>)}
    </div>;
};

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 ModelCards = () => {
  const [copied, setCopied] = useState(null);
  const copy = id => {
    navigator.clipboard.writeText(id);
    setCopied(id);
    setTimeout(() => setCopied(null), 1500);
  };
  const icons = {
    external: <svg className="h-3.5 w-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M15 3h6v6" /><path d="M10 14 21 3" /><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" /></svg>,
    hf: <img src="/images/icons/huggingface.svg" className="h-4 w-4" alt="" />
  };
  const models = [{
    id: "holo3-1-35b-a3b",
    name: "Holo3.1 35B",
    tags: ["Free tier", "Open weights"],
    blurb: "Start here. Fast, with native function calling, so it suits interactive agent loops.",
    specs: [["Architecture", "MoE, 35B total, 3B active"], ["Context", "65,536 tokens"], ["Max output", "8,192 tokens"], ["Images", "Up to 5 per request (JPEG, PNG, WebP)"], ["Input price", "$0.25 per 1M tokens"], ["Output price", "$1.80 per 1M tokens"], ["Access", "Free tier, 10 requests per minute"], ["Tool use", "Native function calling, structured outputs"], ["License", "Apache 2.0"]],
    links: [["Hugging Face", "https://huggingface.co/Hcompany/Holo-3.1-35B-A3B", icons.hf], ["Blog", "https://hcompany.ai/holo3.1", icons.external]]
  }, {
    id: "holo3-122b-a10b",
    name: "Holo3 122B",
    tags: ["Paid tier", "API only"],
    blurb: "For long multi-step tasks, novel environments, and dense reasoning.",
    specs: [["Architecture", "MoE, 122B total, 10B active"], ["Context", "65,536 tokens"], ["Max output", "8,192 tokens"], ["Images", "Up to 5 per request (JPEG, PNG, WebP)"], ["Input price", "$0.40 per 1M tokens"], ["Output price", "$3.00 per 1M tokens"], ["Access", "Paid tier, higher rate limits"], ["Tool use", "Structured outputs"], ["License", "Research only"]],
    links: [["Blog", "https://hcompany.ai/holo3", icons.external]]
  }];
  return <div className="not-prose grid gap-5 md:grid-cols-2">
      {models.map(m => <div key={m.id} className="flex flex-col gap-4 rounded-xl border border-zinc-200 bg-white p-5 dark:border-zinc-800 dark:bg-zinc-950">
          <div className="flex flex-wrap items-start justify-between gap-2">
            <div>
              <div className="text-lg font-semibold text-zinc-900 dark:text-zinc-100">{m.name}</div>
              <button type="button" onClick={() => copy(m.id)} title="Click to copy" className={`${copied === m.id ? "mt-0.5 font-mono text-xs text-emerald-600 dark:text-emerald-400" : "mt-0.5 font-mono text-xs text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100"}`}>
                {m.id}
              </button>
            </div>
            <div className="flex flex-wrap gap-1.5">
              {m.tags.map(t => <span key={t} className="pill">{t}</span>)}
            </div>
          </div>
          <p className="min-h-12 text-sm leading-6 text-zinc-600 dark:text-zinc-400">{m.blurb}</p>
          <dl className="flex-1 divide-y divide-zinc-100 text-sm dark:divide-zinc-800">
            {m.specs.map(([k, v]) => <div key={k} className="flex items-baseline justify-between gap-4 py-2">
                <dt className="shrink-0 text-zinc-500 dark:text-zinc-400">{k}</dt>
                <dd className="text-right font-medium text-zinc-800 dark:text-zinc-200">{v}</dd>
              </div>)}
          </dl>
          <div className="flex flex-wrap gap-1">
            {m.links.map(([label, href, icon]) => <a key={href} href={href} className="outlined inline-flex items-center gap-2 rounded-lg p-2 text-sm font-medium text-zinc-800 no-underline dark:text-zinc-200">
                {icon}
                {label}
              </a>)}
          </div>
        </div>)}
    </div>;
};

export const capabilities = [["Drive an agent loop", "Screenshot and history in, the next action out, until the task is done.", "/models-api/build-an-agent/core-concepts", "Multi-turn", "arrows-rotate"], ["Ground a click", "Describe an element, get its coordinates. No history, one call, temperature 0.", "/models-api/element-localization", "Single-turn", "crosshairs"], ["Read a page", "A rendered document in, Markdown out: headings, tables, equations, in reading order.", "/models-api/document-ocr", "Single-turn", "file-lines"], ["Call your tools", "Declare click, type, and scroll as functions. Holo3.1 returns tool_calls you execute.", "/models-api/build-an-agent/function-calling", "Function calling", "wrench"], ["Extract structured data", "Constrain the answer to your JSON schema: prices, fields, table rows, coordinates.", "/models-api/build-an-agent/structured-outputs", "Structured outputs", "brackets-curly"], ["Think before acting", "Turn on thinking and Holo plans the step first. The trace comes back as a read-only field.", "/models-api/chat-completions", "Reasoning", "brain"]];

export const CapabilityGallery = () => <div className="not-prose my-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
    {capabilities.map(([title, body, href, mode, icon]) => <a key={href} href={href} className="outlined card flex flex-col overflow-hidden rounded-xl bg-white no-underline dark:bg-zinc-950">
        <div className="flex flex-1 flex-col gap-1.5 p-4">
          <div className="mb-1 inline-flex h-9 w-9 items-center justify-center rounded-lg bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-200">
            <Icon icon={icon} iconType="light" size={20} color="currentColor" />
          </div>
          <div className="text-xs font-medium uppercase tracking-wide text-zinc-400 dark:text-zinc-500">{mode}</div>
          <div className="text-base font-semibold text-zinc-900 dark:text-zinc-100">{title}</div>
          <div className="text-sm leading-6 text-zinc-600 dark:text-zinc-400">{body}</div>
        </div>
      </a>)}
  </div>;

## Models

<ModelCards />

Start with `holo3-1-35b-a3b`. It is on the free tier, has native function calling, and its latency suits interactive loops. Move to `holo3-122b-a10b` for complex multi-step tasks and novel environments. Switching is a model ID change. IDs are stable: before a model is removed, its [`deprecation_date`](/models-api/list-models) is set in `GET /v1/models` and a notice appears on this page, so pin an ID in production and check `deprecation_date` when you upgrade.

## What Holo does

<CapabilityGallery />

Prefer to try Holo without writing code? [HoloTab](/holotab/introduction) runs it in your browser with no setup.

## Benchmarks

Holo3.1 35B-A3B against the previous generation and comparable open models. Best score per row in bold.

<div className="bench">
  |                   | Holo3.1<br />35B-A3B | Holo3<br />35B-A3B | Qwen3.5<br />397B-A17B | Qwen3.5<br />122B-A10B | Qwen3.5<br />35B-A3B | Kimi<br />K2.5 | Claude<br />Sonnet 4.6 |
  | ----------------- | :------------------: | :----------------: | :--------------------: | :--------------------: | :------------------: | :------------: | :--------------------: |
  | **Overall**       |       **78.3**       |        73.3        |          70.9          |          67.0          |         65.9         |      69.5      |          67.4          |
  | OSWorld           |       **80.0**       |        77.8        |          62.1          |          61.6          |         54.2         |     63.3\*     |         72.5\*         |
  | Android World     |       **79.3**       |        67.2        |          69.0          |                        |        71.0\*        |                |                        |
  | E-Commerce        |       **97.8**       |        94.1        |          92.2          |          83.3          |         80.7         |      84.4      |          61.1          |
  | Business Software |       **90.1**       |        86.3        |          82.4          |          62.9          |         69.7         |      84.7      |          66.4          |
  | Collaboration     |         75.3         |      **76.0**      |          66.3          |          60.3          |         57.7         |      69.7      |          52.8          |
  | Multi-Apps        |         65.5         |        50.0        |          61.9          |          47.6          |         42.9         |      64.3      |        **69.0**        |
  | ScreenSpot-Pro    |       **71.5**       |        67.6        |          69.3          |          65.5          |         64.5         |                |                        |
  | OSWorld-G         |       **78.8**       |        77.3        |          78.4          |          77.5          |         76.9         |                |                        |
</div>

Overall averages the four H Corporate benchmarks (E-Commerce, Business Software, Collaboration, Multi-Apps) first, then takes the mean across OSWorld, Android World, H Corporate, ScreenSpot-Pro, and OSWorld-G. Baselines are evaluated by H; starred numbers are reported from the original source. OSWorld runs on H's internal implementation of the benchmark, so numbers differ slightly from the official OSWorld-Verified leaderboard.

## Smaller sizes for your own hardware

The API serves the two largest models. Three smaller Holo3.1 checkpoints are not on the API, but they are open weights under Apache 2.0: download them and run them yourself. The 35B is open too, with FP8, NVFP4, and GGUF builds for a Mac (M3 or newer, 36 GB) or a DGX Spark.

<LocalModels />

[Local inference](/models-api/local-inference) covers memory, measured speed, and server setup with llama.cpp or vLLM.

## Data retention

The API logs request time, model, and token counts. Prompts and responses are not stored: zero data retention by default. H runs its own models, so inputs and outputs are never shared with third parties. See the [privacy policy](https://hcompany.ai/privacy-policy).

<Cta title="Get an API key" body="Holo3.1 35B is free to use. Log in, create a key, and point your OpenAI client at it." primary={["Create an API key", "https://portal.hcompany.ai/?product=modelsapi&source=docs"]} secondary={["Read the quickstart", "/models-api/quickstart", "bolt"]} />
