@honeyhive/cli) is a single-binary client that maps one-to-one to the HoneyHive REST API. Use it to script datasets, experiments, and trace events from your terminal, CI, shell pipelines, or AI coding agents like Cursor and Claude Code.
The CLI is organized into namespaces: honeyhive datasets, honeyhive datapoints, honeyhive experiments, etc. JSON-shaped flags accept JSON literals; scalar flags take their natural shell type. Run honeyhive --help to discover namespaces, honeyhive <namespace> --help to discover commands, or honeyhive <namespace> <command> --help to discover flags.
Installation
macOS (Homebrew)
Linux/WSL (install script)
The install script downloads the linux-x64 or linux-arm64 binary from the corresponding GitHub Release, verifies its SHA256, and installs it to/usr/local/bin (falling back to ~/.local/bin if /usr/local/bin isn’t writable). To install to a different directory, set the INSTALL_DIR environment variable.
brew tap honeyhiveai/tap then brew install honeyhive) work on Linux as well.
Authorization
The HoneyHive API authenticates requests using an API key sent as a Bearer token in theAuthorization header. Which key a command needs depends on what it does: most data plane commands take a project API key, the ingestion commands also accept an ingestion key, and the control plane commands take a fine-grained key. Each can be supplied by environment variable or by flag.
Environment variable (recommended)
Set theHH_PROJECT_API_KEY environment variable. The CLI reads it automatically when no --project-api-key flag is provided:
—project-api-key flag
Pass the key directly on the command line.Never hard-code the key or commit it to source control. Always read it from a secret store or environment variable.
—ingestion-api-key flag
An ingestion API key (hh_ingst_) can be supplied alongside the project key, in the HH_INGESTION_API_KEY environment variable or with --ingestion-api-key. The commands that create sessions and create or update events send it when it is set, and fall back to the project key otherwise. Every other command uses the project key and never the ingestion key.
HH_INGESTION_API_KEY or --ingestion-api-key that is not an hh_ingst_ key is rejected the same way, naming where the value came from and the expected prefix.
Control plane commands
honeyhive projects, honeyhive alerts, honeyhive workspaces, and honeyhive virtual-dataplanes talk to the HoneyHive control plane, which accepts only a fine-grained API key (hh_fgcp_) created at workspace or organization scope. Supply it in the HH_CONTROL_PLANE_API_KEY environment variable or with --control-plane-api-key. A project key is not accepted there, and the data plane commands never use this key, so you only need it for the commands you run.
404 from the server.
Data plane URL
By default the CLI talks tohttps://api.dp1.us.honeyhive.ai. To point at a self-hosted deployment or a staging environment, set the HH_DATA_PLANE_URL environment variable or pass --data-plane-url:
Control plane URL
The control plane commands talk tohttps://api.cp.us.honeyhive.ai by default. To point them at a self-hosted deployment, set the HH_CONTROL_PLANE_URL environment variable or pass --control-plane-url:
Verbose logging
Pass--verbose (or set HH_VERBOSE=true) to log the resolved URL for the command’s plane, its masked API keys, and the CLI version on startup. Useful when debugging “is this hitting prod or staging?” or “did the right HH_PROJECT_API_KEY get picked up?”.
hh_ for a project key, hh_ro_ for a read-only project key) and the last 4 characters; anything else renders as 8 fixed-width asterisks. An ingestion key renders as hh_ingst_<key id>_******, showing its id and none of its secret. For the control plane commands, the output reports the control plane URL and masks the fine-grained key the same way, as hh_fgcp_<key id>_******.
Schema introspection
Every command that takes arguments supports two read-only flags for tooling and AI agents:--show-file-schema: print the JSON Schema for the full request object (the same shape--filenameaccepts). See Using a file for upload arguments for the file format.--show-argument-schema <flag-name>: print the JSON Schema for a single argument’s value (e.g.,honeyhive sessions create --show-argument-schema user-properties). Pass the kebab flag name without the leading--.
Example: Creating and deleting a dataset
Given adatapoint.json file:
Using a file for upload arguments
Instead of passing data via command line arguments, you can read from a file using the--filename/-f flag:
snake_case or camelCase, not --kebab-case like the CLI flags.
Related
Config as Code
Define evaluators and datasets in your repo and apply them with
--filename.Use with Coding Agents
Combine the CLI with HoneyHive Skills and Docs MCP.
CLI Reference
Browse the full auto-generated command reference.
TypeScript API SDK
The programmatic counterpart to the CLI for TypeScript/Node.js.