# hermai-cli **English** · [繁體中文](./README.zh-Hant.md) · [简体中文](./README.zh-Hans.md) > Discover, contribute, and call structured website APIs from your terminal. `hermai` is the open-source CLI for the [Hermai registry](https://hermai.ai) — a community catalog of website API schemas for AI agents. Probe a site to document its endpoints, push the schema to the catalog, or pull an existing schema and call it — including authenticated writes with per-request signing. ### Install ```bash # macOS and Linux via Homebrew brew install hermai-ai/hermai/hermai # Anywhere Node is installed (no Go toolchain needed) npm install -g hermai-cli # or: npx hermai-cli --help # Go developers go install github.com/hermai-ai/hermai-cli/cmd/hermai@latest # Prebuilt binaries for every OS × arch # https://github.com/hermai-ai/hermai-cli/releases/latest ``` Already installed? Upgrade in place without re-running any of the above: ```bash hermai update ``` ## Agent skill Running in Claude Code, Codex, Cursor, or another agent? Install the Hermai skill so the agent knows how to use this CLI: ```bash npx skills add hermai-ai/hermai-skills --skill hermai ``` One skill covers both audiences. When a user asks for data from a site, the agent pulls the schema and calls it. When a user wants to add a new site, the skill's contributor references (loaded on demand via progressive disclosure) walk the agent through discovery, schema authoring, and push. Repo: [hermai-ai/hermai-skills](https://github.com/hermai-ai/hermai-skills). ## Call a site as an API ```bash # Pull a schema (API key required, GitHub sign-in at hermai.ai/dashboard) hermai registry login hermai registry pull x.com --intent "drafting a post from my agent" # Read endpoints: call them directly with curl / fetch / any HTTP client. # Authenticated writes: `hermai action` handles sessions + signing for you. hermai action x.com CreateDraftTweet --arg text="drafted by hermai" ``` `hermai action` loads the schema, resolves the user's session (cookies from disk, or pulled from an installed browser on first run), runs any schema-declared bootstrap JS to compute per-session state, runs any per-request signer JS, fires via a Chrome-TLS fingerprinted HTTP client, and rotates `Set-Cookie` back on 2xx responses. Works against sites that require per-request signing (X's `x-client-transaction-id`, TikTok's `X-Bogus`) without opening a browser. Useful flags: - `--dry-run` — print the fully-signed request, don't hit the network - `--schema ` — use a local schema JSON instead of the registry cache - `--arg key=value` — repeatable, fills `{{var}}` placeholders in the schema's URL/body templates ## Registry ```bash hermai registry login # GitHub OAuth, stores API key hermai registry list # browse the catalog hermai registry pull --intent "..." # download a schema hermai registry push schema.json # contribute a schema ``` ## Discovery toolkit Deterministic subcommands for composing a new schema. No LLM key — each prints JSON the next step can consume. ```bash hermai detect # platform + anti-bot classification hermai wellknown # robots, sitemap, RSS, GraphQL hermai probe --body | hermai extract # 13 named embedded-data patterns plus # any