Coding agents are real users of the Hugging Face Hub. Claude Code, Codex, Cursor, and a growing list of harnesses are searching for models, building and pushing datasets, training models on Jobs, spinning up Spaces — tens of millions of requests so far (hf CLI for agents). Now there's public data on which ones.
Requests made through the huggingface_hub library (including the hf CLI) carry an agent/<name> User-Agent token identifying the harness. This dataset publishes each harness's share of that agent-attributed traffic, month by month and day by day, updated by a scheduled HF Job.

Named harnesses ranked by share of requests, data through 2026-07 · updated 2026-08-03. The Dataset Viewer at the top of this page lets you browse, sort, and filter both tables — no code needed.
daily config picks up what monthly numbers smooth over: launch spikes, growth curves, weekday-vs-weekend patterns.If you build a harness, register it to make sure your agent isn't missed — unregistered tools are counted only as unknown.
Attribution is automatic: huggingface_hub detects registered harnesses from environment variables and reports them in the User-Agent. To register, follow Register your agent harness — a Pull Request adding your tool to agent-harnesses.ts. No release is needed on either side: installed clients refresh the registry within a day, and your harness appears from the next monthly snapshot.
Only traffic through the Python huggingface_hub library (including the hf CLI) is attributed; direct HTTP calls to the Hub API are not counted. To confirm detection works, run inside your harness:
python -c "from huggingface_hub.utils import build_hf_headers; print(build_hf_headers()['user-agent'])"
# should contain agent/<your-id>
| column | description |
|---|---|
month / day | period the share is computed over |
agent | harness name from the agent/<name> token; unknown = token present but no registered name |
pct_requests | harness's share of agent-attributed huggingface_hub requests in the period (0–100; sums to 100 per period) |
pct_users | same, for distinct authenticated users — someone using two harnesses counts once for each |
from datasets import load_dataset
monthly = load_dataset("huggingface/agent-usage", "monthly", split="train")
-- DuckDB: full monthly history in one query
SELECT month, agent, pct_requests
FROM 'hf://datasets/huggingface/agent-usage/data/monthly/*.parquet'
WHERE agent != 'unknown'
ORDER BY month, pct_requests DESC;
import polars as pl
daily = pl.scan_parquet("hf://datasets/huggingface/agent-usage/data/daily/*.parquet")
New months append as new parquet files, so these queries always return the full history unchanged.
agent/ token rolled out April 3 and harnesses added detection at different times, so April reflects the rollout, not relative usage.Built by build_local.py (bundled in this repo) on a scheduled HF Job — only relative shares are published.
3 commits
Coding agents are real users of the Hugging Face Hub. Claude Code, Codex, Cursor, and a growing list of harnesses are searching for models, building and pushing datasets, training models on Jobs, spinning up Spaces — tens of millions of requests so far (hf CLI for agents). Now there's public data on which ones.
Requests made through the huggingface_hub library (including the hf CLI) carry an agent/<name> User-Agent token identifying the harness. This dataset publishes each harness's share of that agent-attributed traffic, month by month and day by day, updated by a scheduled HF Job.

Named harnesses ranked by share of requests, data through 2026-07 · updated 2026-08-03. The Dataset Viewer at the top of this page lets you browse, sort, and filter both tables — no code needed.
daily config picks up what monthly numbers smooth over: launch spikes, growth curves, weekday-vs-weekend patterns.If you build a harness, register it to make sure your agent isn't missed — unregistered tools are counted only as unknown.
Attribution is automatic: huggingface_hub detects registered harnesses from environment variables and reports them in the User-Agent. To register, follow Register your agent harness — a Pull Request adding your tool to agent-harnesses.ts. No release is needed on either side: installed clients refresh the registry within a day, and your harness appears from the next monthly snapshot.
Only traffic through the Python huggingface_hub library (including the hf CLI) is attributed; direct HTTP calls to the Hub API are not counted. To confirm detection works, run inside your harness:
python -c "from huggingface_hub.utils import build_hf_headers; print(build_hf_headers()['user-agent'])"
# should contain agent/<your-id>
| column | description |
|---|---|
month / day | period the share is computed over |
agent | harness name from the agent/<name> token; unknown = token present but no registered name |
pct_requests | harness's share of agent-attributed huggingface_hub requests in the period (0–100; sums to 100 per period) |
pct_users | same, for distinct authenticated users — someone using two harnesses counts once for each |
from datasets import load_dataset
monthly = load_dataset("huggingface/agent-usage", "monthly", split="train")
-- DuckDB: full monthly history in one query
SELECT month, agent, pct_requests
FROM 'hf://datasets/huggingface/agent-usage/data/monthly/*.parquet'
WHERE agent != 'unknown'
ORDER BY month, pct_requests DESC;
import polars as pl
daily = pl.scan_parquet("hf://datasets/huggingface/agent-usage/data/daily/*.parquet")
New months append as new parquet files, so these queries always return the full history unchanged.
agent/ token rolled out April 3 and harnesses added detection at different times, so April reflects the rollout, not relative usage.Built by build_local.py (bundled in this repo) on a scheduled HF Job — only relative shares are published.
3 commits