> For the complete documentation index, see [llms.txt](https://docs.hypertensor.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hypertensor.org/subnet-template/quick-starts/dht.md).

# DHT

In order to coordinate, peers form a Distributed Hash Table: a distributed "dictionary" where each peer can store and get values. To initialize the first DHT node, run

```python
from subnet import DHT, get_dht_time

dht = DHT(start=True)
# create the first DHT node that listens for incoming connections from localhost only

print("For incoming connections, use:", dht.get_visible_maddrs())
```

You can now start more peers that connect to an existing DHT node using its listen address:

```python
dht2 = DHT(initial_peers=dht.get_visible_maddrs(), start=True)
```

Note that `initial_peers` contains the address of the first DHT node. This implies that the new node will share the key-value data with the first node, **as well as any other nodes connected to it.** When the two nodes are connected, subsequent peers can use any one of them (or both) as `initial_peers` to connect to the shared "dictionary".
