DePIN capacity utilisation

How much deployed hardware is actually being used · 6 networks · generated 2026-10-05T03:53:38Z

Why this and not node counts. Node count is the number most DePIN dashboards lead with, and it is the easiest to grow without demand. The question that separates infrastructure from subsidy is what fraction of that deployed capacity is doing paid work — capacity growing faster than utilisation is overcapacity, not growth. Every figure below is computed from the network’s own public endpoint, and every row links to it.

Capacity utilisation

What fraction of deployed capacity is doing work right now.

NetworkResourceUtilisationIn use DeployedAs ofCheck it
ThreeFold
⚠ HRU_USED has not changed in 42 days — the numerator is not a live reading.
Storage0.0%0.0 B4.1 PiB2026-10-05T02:53:03verify
FLUX
⚠ Benchmarked hardware, converted from bench `totalstorage` at 1e9. Those values cluster exactly on the published tier requirements 220/440/880, i.e. they are enforced plan sizes rather than raw disk geometry.
Storage3.9%116.0 TiB2.9 PiB2026-10-05T03:26:04verify
FLUX
⚠ Benchmarked hardware, converted from the node bench `ram` field at 2**30. That field is a MEASURED MemTotal in GiB: tier medians are 7.7/31/62 against Flux's official 8/32/64 GB Cumulus/Nimbus/Stratus requirements. FluxO
Memory6.6%12.3 TiB184.8 TiB2026-10-05T03:26:04verify
AkashStorage10.5%64.0 TiB611.5 TiB2026-10-05T03:47:01verify
FLUX
⚠ Benchmarked hardware. FluxOS reserves part of each node for the OS and daemon, so cores actually rentable to apps are fewer than this.
CPU12.7%7,16656,5712026-10-05T03:26:04verify
ThreeFoldMemory14.8%7.8 TiB52.7 TiB2026-10-05T02:53:03verify
ThreeFoldCPU17.8%1,4718,2762026-10-05T02:53:03verify
AkashCPU22.1%3,27814,8092026-10-05 03:41:09verify
SCStorage30.9%2.0 PiB6.5 PiB2026-10-05T03:47:01verify
GLM
⚠ Same field and same caveats as GLM_PROVIDERS_ONLINE_UTIL — written by the depin_first_party collector rather than golem_utilisation.py; verified 2026-08-24 by matched-timestamp comparison (both wrote 1029 at 19:59Z, 17s
providers32.6%2587922026-10-05 03:46:33verify
AkashMemory36.4%27.9 TiB76.5 TiB2026-10-05 03:41:33verify
io.net
⚠ io.net's 'active' means connected through its worker, hired or idle, NOT in use: /v1/io-explorer/devices/hardware lists exactly the active population (1,275 at 2026-09-25T15:07Z, equal per model for all 20 models) and sp
Devices55.3%9851,7802026-10-05 02:46:33verify
AkashGPUs84.5%3384002026-10-05T03:44:01verify

Pending queue — demand the fleet has not absorbed

What “pending” is. Workload that has been ordered on Akash but not yet placed on a provider — demand sitting in the queue, from the network’s own console API. Read it next to the utilisation table above: rising utilisation with a rising pending queue is demand arriving faster than deployed capacity is absorbing it. CPU is shown in cores (Akash reports millicpu; divided by 1,000). Each trend point is that day’s last observation; days with no observation are absent, never carried forward or interpolated. No predictive claim is made.
NetworkResourcePending now3-day median vs prior 7-day14-day trendAs ofCheck it
Akash
akash_console
CPU40 cores70 cores+16%Akash CPU pending: daily close, 2026-09-21 → 2026-10-04 (14 observed days; absent days are gaps, not interpolated)2026-10-05T03:44:01verify
Akash
akash_console
Memory140.9 GiB219.6 GiB+115%Akash Memory pending: daily close, 2026-09-21 → 2026-10-04 (14 observed days; absent days are gaps, not interpolated)2026-10-05T03:44:01verify

Node liveness — a different question

These are not utilisation. They answer “what fraction of registered nodes are switched on?”, which is fleet health, not busy hardware. We separate them because publishing both in one table invites a false reading: a network showing 99% liveness is not “better utilised” than one showing 27% CPU utilisation — the two numbers answer different questions. Where a network’s denominator is cumulative registrations rather than a live fleet, that is flagged inline.
NetworkResourceOnline shareOnline RegisteredAs ofCheck it
TITAN
⚠ cumulative registrations, NOT live network size. The same endpoint reports online_node_count=14,631 against total_node_count=2,990,100 (a 0.49% online ratio it publishes itself). Ranking this against networks that report
Nodes0.5%13,6532,992,6272026-10-05 03:41:33verify
ThreeFoldNodes5.3%4007,5042026-10-05 02:46:33verify
ThreeFoldgateways7.5%101332026-10-05 02:46:33verify
StorjNodes25.1%31,161124,2182026-10-05 03:31:33verify
FLUXNodes95.3%6,5716,8962026-09-28 14:16:33verify
Refused: IO gpus utilisation.
io.net's GPU_TOTAL is NOT registered GPU supply — it equals DEVICES_ACTIVE exactly on every archived day (1,213/1,213 ... 1,199/1,199), and GPU_HIRED + GPU_IDLE == GPU_TOTAL exactly. So hired/total is a FILL RATE on the already-active pool, near-tautological, and it excludes every passive device. It reads 96.7% while the share of registered devices that are active (active/registered) is 46.2% and FALLING — io.net's 'active' means connected through its worker, hired or idle, not in use (2026-09-25: the worker list matches active exactly, 1,275, of which 1,260 hired) — registered devices grew 2,057 -> 2,594 (+26%) in 7 days while active stayed flat near 1,200. Publishing 96.7% beside Akash's 30.5% (utilisation of REGISTERED capacity) would invert the actual story: io.net is the network accumulating idle supply fastest, not the one running hottest.
Refused: NOS devices utilisation.
NOSANA HAS NO PUBLISHABLE DENOMINATOR (probed 2026-08-24, recorded so the next agent does not re-probe it). The numerator is free and clean — dashboard.k8s.prd.nos.ci/api/jobs?state=RUNNING reports totalJobs=947 running jobs and each Nosana job occupies exactly one node. The denominator is not: /api/nodes and /api/nodes/stats require an authorization header (401 with one, 422 without), and no unauthenticated sibling exposes a node count. Two tempting substitutes were REFUSED. (1) running + queued NODES from /api/markets: that per-market queue holds only IDLE nodes and is 0 across all 47 markets while 43 jobs sit QUEUED, so the denominator would equal the numerator by construction and publish a tautological 100%. (2) per-market access-SFT supply on Solana (231 for the nvidia-3070 market): a node joining three markets holds three SFTs and nothing burns them when it leaves, so the sum counts memberships and departed nodes, not live nodes. The numerator is collected anyway (collectors_clean/nosana_utilisation.py writes NOS JOBS_RUNNING/JOBS_QUEUED/MARKET_IDLE_NODES) so the pair can complete the day Nosana publishes a node count; no ratio until then.
Refused: SC devices utilisation.
SIACOIN'S DENOMINATOR IS CUMULATIVE, NOT LIVE (measured 2026-08-24). Both halves flow — SC_ACTIVE_HOSTS ~530, SC_TOTAL_HOSTS ~87,048 — so the pair LOOKS complete and would auto-publish a 0.6% utilisation figure. It is not a utilisation figure: TOTAL_HOSTS counts every host ever announced to the Sia network and is monotonically non-decreasing across all 19 archived days (87,032.7 → 87,048.0, never once falling), while ACTIVE_HOSTS moves both ways in the 514-556 band. A denominator that can only grow makes the ratio a function of the network's AGE, so it would fall forever regardless of how the network performs — the Storj denominator trap in a new costume. The numerator is honest and stays queryable; no ratio until Sia publishes a currently-announced host count.
Refused: STORJ storage_bytes utilisation.
STORJ PUBLISHES NO CAPACITY DENOMINATOR (measured 2026-08-24). Everything public is the numerator: stats.storjshare.io/data.json gives bytes stored by customers (53.4 PB) and the node-side footprint after erasure coding (92.2 PB, 1.73x), and the per-satellite node counts are memberships, not capacity — a node serving three satellites is counted three times, which is the same double-count that already inflated STORJ node totals. Nothing upstream states how many bytes the network could hold, so any utilisation ratio would need a denominator we invented. The numerator stays collected and is now correctly labelled storage_bytes_in_use rather than storage_bytes_total, which is what it had been resolving to.
Scope, stated plainly. This covers the 6 networks where we hold both sides of the ratio from a first-party endpoint — not all 171 networks we track. Utilisation is undefined without a published capacity denominator, and most networks do not publish one. We are adding them as we verify them; the count above is the honest current number, and we would rather show 6 real rows than 171 modelled ones.

Ratios we refused to publish: one network reports storage-used exceeding storage-total by 64x, and another reports a lifetime-cumulative denominator that would yield a meaningless 0.1%. Both are excluded until the upstream fields are understood.

Query it

curl "https://kairossignal.com/v1/network/AKT"    # every metric, with source and as_of
curl "https://kairossignal.com/v1/supply"        # free 12-network sample
curl "https://kairossignal.com/v1/history?network=AKT&metric=CPU_PENDING&days=14"   # the pending-queue series above

Case study: two networks, eleven days, opposite directions — what the denominator reveals that node counts hide.

No predictive or performance claim is made anywhere on this site. This is measurement. Pricing · All networks · Sources & what we don’t cover

Kairos Signal · provenance-first DePIN telemetry
Preregistration manifest: da83aaa5 · verify · root history