# Running a Node

The basic requirements in order of importance:

* 1gbps+ stable internet connection
* modern CPU with AVX512 (7950x is best value for $)
* 2TB+ diskspace
* UDP port 36969 open

The basic system configuration required anything less will degrade performance:

```
/etc/sysctl.conf
```

```
net.core.wmem_max = 268435456
net.core.rmem_default = 212992
net.core.rmem_max = 268435456
net.core.netdev_max_backlog = 300000
net.core.optmem_max = 268435456
net.ipv4.udp_mem = 3060432 4080578 6120864

net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
```

```
/etc/security/limits.conf
```

```
root hard nofile 1048576
root soft nofile 1048576
* hard nofile 1048576
* soft nofile 1048576
root hard nproc unlimited
root soft nproc unlimited
* hard nproc unlimited
* soft nproc unlimited
root hard memlock unlimited
root soft memlock unlimited
* hard memlock unlimited
* soft memlock unlimited
```

To run a node download the latest `amadeusd` release from github <https://github.com/amadeus-robot/node/releases/latest> and run it like:

```
./amadeusd
```

Multiple .envvars are supported. For the best up-to-date list check <https://github.com/amadeus-robot/node/blob/main/ex/config/runtime.exs>\
\
Here are a few important ones with their respective defaults:

```
WORKFOLDER=~/.cache/amadeusd/    # where the blockchain + all data is stored
OFFLINE=false                    # run the node without connecting to any peers

UDP_IPV4=0.0.0.0                 # ip address(es) to listen on for protocol.
                                 # default listen on all interfaces
UDP_PORT=36969                   # mainnet port

PUBLIC_UDP_IPV4=stun             # if behind complex NAT, what IP do you want to advertise
                                 # default - obtain ip via STUN

ANR_NAME=nil                     # (optional) name of your validator
ANR_DESC=nil                     # (optional) description of your validator
                                 # stored in https://nodes.amadeus.bot/api/peer/anr

HTTP_IPV4=off                    # HTTP RPC API (useful for integrations)
HTTP_PORT=80

ARCHIVALNODE=false               # if this node is expected to store all chainstate
                                 # for integrations enable this
                                 
COMPUTOR=false                   # if this node will also solve (for mainnet disable)
```

Your seed for your public key is stored in `$WORKFOLDER/sk`.

Syncing currently takes a long time as the entire chainstate is pulled including contract states + transactions since genesis. This is just over 170G compressed as of September 19th, 2025.  Do not attempt syncing unless you have stable 1gbps connection.

Here is a systemd service that will restart the node as required and run it on a `screen`:

```
/etc/systemd/system/amadeusd.service
```

```
[Unit]
Description=AmadeusD
After=network-online.target

[Service]
Type=forking
LimitNOFILE=1048576
KillMode=control-group
Restart=always
RestartSec=3
User=root
WorkingDirectory=/root/
Environment="UDP_IPV4=0.0.0.0"
ExecStart=/usr/bin/screen -UdmS amadeusd bash -c './amadeusd'

[Install]
WantedBy=default.target
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ama.one/validator/running-a-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
