# Specification

### Hardware requirements

Disk space depends on the [pruning strategy](https://hub.cosmos.network/main/gaia-tutorials/join-mainnet.html#pruning-of-state) of your choice.

There are four strategies for pruning state. These strategies apply only to state and do not apply to block storage. To set pruning, adjust the `pruning` parameter in the `~/.firmachain/config/app.toml` file. The following pruning state settings are available:

1. `everything`: Prune all saved states other than the current state.
2. `nothing`: Save all states and delete nothing.
3. `default`: Save the last 100 states and the state of every 10,000th block.
4. `custom`: Specify pruning settings with the `pruning-keep-recent`, `pruning-keep-every`, and `pruning-interval` parameters.

<table><thead><tr><th width="228.33333333333331">Pruning strategy	</th><th>Minimum disk space</th><th>Recommended disk space</th></tr></thead><tbody><tr><td>everything</td><td>20 GB</td><td>40 GB</td></tr><tr><td>default</td><td>80 GB</td><td>120 GB</td></tr><tr><td>nothing</td><td>120 GB</td><td>> 240 GB</td></tr></tbody></table>

By default, every node is in `default` mode which is the recommended setting for most environments.

Apart from disk space, the following requirements should be met.

| Minimum CPU cores | Recommended CPU cores |
| ----------------- | --------------------- |
| 2                 | 4                     |

| Minimum RAM | Recommended RAM |
| ----------- | --------------- |
| 4 GB        | 8 GB            |

### Service Ports

<table><thead><tr><th>Type</th><th width="178.37007626758634">Port number</th><th width="349.9763569256051">Description</th></tr></thead><tbody><tr><td>SSH</td><td>22</td><td>for connect ssh</td></tr><tr><td>API</td><td>1317</td><td>http api</td></tr><tr><td>P2P</td><td>26656</td><td>for peer communication</td></tr></tbody></table>

### Increase maximum open files

In general, most operating systems limit the maximum number of files that can be opened.\
(The document was written based on `Ubuntu 20.04 LTS`, and the default value of this OS is 1024.)\
However, if you open `/etc/security/limits.conf` and modify the value as can be seen in the code below, you can raise the limit of the nofile feature

```
*                soft    nofile          65535
*                hard    nofile          65535
```


---

# 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://firmachain-1.gitbook.io/firmachain/getting-started/install-firmachain/specification.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.
