The node count you quote is not the node count that is running.

A DePIN network's node count is the number that ends up in research notes, token models and sector dashboards. Usually it arrives as one integer with nothing to compare it against. Of the 317 networks we currently hold live data for, 5 are verified here as publishing both a cumulative total and a currently-live count on public endpoints that need no key. Where both exist, they diverge by 1.2× to 225×.

Generated 2026-10-30T07:38:13Z · every row re-fetched from the network's own API during generation

NetworkHeadline / cumulativeCurrently live RatioNot liveSource
Titan Network
TITAN
2,993,345
total_node_count
13,285
online_node_count
225.3× 99.56% check it yourself →
Titan publishes the ratio itself as t_node_online_ratio.
Sia
SC
87,155
totalHosts
526
activeHosts
165.7× 99.40% totalHosts →
activeHosts →
Two endpoints of the same public API. The block payload also carries 3,565,796 failed contracts against 1,634,762 successful — 69% of all Sia storage contracts have failed.
ThreeFold Grid
TFT
7,506
nodes
392
nodes (status=up)
19.1× 94.78% nodes →
nodes (status=up) →
Two queries of the same public endpoint: /stats counts every registered node, /stats?status=up only the nodes that are up now.
Storj (us1 satellite)
STORJ
124,728
total_nodes
31,019
active_nodes
4.0× 75.13% check it yourself →
The same payload also carries disqualified, exited, offline and suspended counts, which sum exactly to the total.
io.net
IO
1,820
total
1,566
active
1.2× 13.96% check it yourself →
Devices, not nodes — io.net's unit is a GPU device. The same payload breaks both figures down per GPU model.

Nobody here is being caught out

Every number above is published by the network itself, on an endpoint that needs no key and no account. Titan even publishes the ratio directly, as t_node_online_ratio. These operators are the transparent end of the market — they are legible precisely because they ship both figures.

The gap opens one hop downstream. An aggregator that carries total_nodes and drops active_nodes destroys the distinction, and from there the larger number travels alone. For the other 312 networks we track, this page shows no pair: either we have not found both figures published, or we have not yet verified the pair at source. Where a network publishes a single count, the question cannot be asked from public data at all — which is not an accusation against it either, just the shape of what is available.

Check every row without taking our word for it

No key, no account, no Kairos in the path. If a value below disagrees with what we publish, we are the stale one — tell us and we will publish the correction with the timestamp of the miss.

# TITAN — expect total_node_count ≈ 2,993,345, online_node_count ≈ 13,285
curl -s 'https://test1.titannet.io/api/v2/get_index_info'
# SC — expect totalHosts ≈ 87,155
curl -s 'https://api.siascan.com/metrics/block'
# SC — expect activeHosts ≈ 526
curl -s 'https://api.siascan.com/metrics/host'
# TFT — expect nodes ≈ 7,506
curl -s 'https://gridproxy.grid.tf/stats'
# TFT — expect nodes (status=up) ≈ 392
curl -s 'https://gridproxy.grid.tf/stats?status=up'
# STORJ — expect total_nodes ≈ 124,728, active_nodes ≈ 31,019
curl -s 'https://stats.storjshare.io/nodes.json'
# IO — expect total ≈ 1,820, active ≈ 1,566
curl -s 'https://api.io.solutions/v1/io-explorer/network/inventory-aggregated'

Why this page exists

Kairos Signal carries both numbers for every network on this page, with source, as_of and a verify_url on each value. Nothing is estimated, back-filled or zero-filled: a value that has stopped updating is returned flagged stale, and a metric with no verified value is omitted, never reported as zero. That is the entire product, and this page is the smallest honest demonstration of it.

Buy the rest of it

This page is 5 networks because those are the 5 whose published total and live counts we have verified at source; a network is added only when its pair reproduces the same way. We hold first-party supply telemetry for 146 in-scope networks, read from each network's own endpoint or chain: node counts, capacity and utilisation where a network publishes them, while most carry only token-contract reads such as total supply and holders. Every value carries source, as_of and a verify_url; withheld or stale series are listed under withheld_not_live, never served. Three ways in, cheapest first, and none of them is a contact form.

# 1 · free key. $5 in credits on signup — no card, no human. Limit 3 per originating IP per 30 days; past that a new key is created at $0 and says so.
curl -sX POST https://kairossignal.com/v1/credits/register \
  -H 'Content-Type: application/json' -d '{"agent_name":"your-agent"}'

# 2 · the first-party supply snapshot (every in-scope network /v1/supply serves)
#     $0.49 — 146-network first-party supply snapshot: every in-scope DePIN network /v1/supply serves (the free tier rotates a 40-network window). Infrastructure series (node counts, capacity, utilisation, chain state) only where a network publishes them; for most networks the only series are token supply and holder counts read from the token contract. Every value carries verify_yourself and as_of (as_of_basis says whose clock). Series under a quality incident or not read in 26 h are listed under withheld_not_live, symbols ruled out of DePIN scope under excluded_by_scope. DefiLlama figures are not in this SKU.
curl -sX POST https://kairossignal.com/v1/credits/purchase \
  -H 'X-API-Key: YOUR_KEY' -H 'Content-Type: application/json' \
  -d '{"product_key":"depin_provenance"}'
#     delivery is inline in the response; the receipt carries the SHA-256 of
#     exactly what shipped, and a curl that re-reads the receipt with your key

No account, no crypto, no agent: $4.99 (posts as $4.99 API credits, $1 = 1 credit) — API credits by card, not a dataset: a key holding the credits is provisioned at checkout, for any product, e.g. depin_provenance ($0.49), the 146-network first-party supply snapshot. the checkout redirect shows your key (that is the first retrieval). GET /v1/credits/by_session?session_id=<id> serves it again only from the same IP address within 30 minutes of that first retrieval; after that the link does not serve the key: email [email protected] with the session id and a human re-issues it.

Every network, every day: $199/mo — full network breadth, 30-day daily history, active engines and cross-network views; Watchtower, exports and webhooks excluded, rate locked for the life of the subscription. Pay: https://buy.stripe.com/dRm00b9zT81o5a50Na1ZS20

API documentation · Pricing · Live network list