> ## Documentation Index
> Fetch the complete documentation index at: https://docs.peaq.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet Registry

> Understand how `peaq_tether_node` stores wallet secrets locally and why ROS remains address-only.

`peaq_tether_node` stores wallet secrets locally in a single shared registry file on the robot/machine. This design keeps ROS APIs **address-only** while allowing the node to sign EVM transactions when you call transfer services.

## Why a Registry Exists

* ROS services must never receive mnemonics or private keys.
* Transfers must still be signed somewhere; the node signs locally by loading the mnemonic from disk.
* A single file registry fits the “single robot / single host” assumption and simplifies operations.

## Configuration

In `peaq_robot.yaml`:

```yaml theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
tether:
  wallet_registry:
    path: "~/.peaq_robot/tether_wallets.json"
    unsafe_export_mnemonic: false
```

### Enabling mnemonic export (unsafe)

Mnemonic export is **disabled by default**. If you explicitly enable:

```yaml theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
tether:
  wallet_registry:
    unsafe_export_mnemonic: true
```

then `wallet/create` will return a mnemonic **only when** the request sets `export_mnemonic: true`.

## Security Invariants

* The EVM `address` is the only identifier used by services.
* Mnemonics are stored locally and are never emitted over ROS by default.
* Keep the registry file restricted (e.g., mode `0600`) and treat it like a keystore.

## Operational Tips

* Back up the registry if addresses control real funds (secure storage only).
* If you rotate machines, migrate the registry file with care.
* If multiple ROS 2 environments run on one host, isolate with `ROS_DOMAIN_ID` to prevent service collisions.
* To keep `peaq_tether_node` running without tying up your terminal, start it in `tmux` (detach with `Ctrl-b` then `d`) or run it in the background and `disown` it.
