# subnet-tao-flows (/docs/query/subnet-tao-flows)

TAO flow is the chain's running measure of user stake activity on a
subnet: every stake adds to the accumulator and every unstake subtracts,
so a positive value means TAO is (on average) flowing into the subnet
and a negative value means it is flowing out. The chain smooths the
per-block accumulator (`SubnetTaoFlow`) into an exponential moving
average (`SubnetEmaTaoFlow`); this read returns that EMA per netuid.
Subnets with no recorded flow are omitted.

**Category:** Subnets

## Parameters [#parameters]

This read takes no parameters.

## CLI [#cli]

```bash
btcli query subnet-tao-flows --json
```

## Python [#python]

Namespace method (autocomplete, signature help):

```python
import bittensor as bt

sub = bt.Subtensor()
result = sub.subnets.subnet_tao_flows()
```

Or dispatch by name, as an agent would:

```python
result = sub.read("subnet_tao_flows")
```

Async is the same surface awaited: `async with bt.Subtensor() as client:`.

## On-chain implementation [#on-chain-implementation]

* Storage [`SubtensorModule.SubnetEmaTaoFlow`](/code/pallets/subtensor/src/lib.rs#L1877)

Every file is browsable under [/code](/code) exactly as built into the runtime.
