# nodectl Command Reference

{% hint style="warning" %}
**⚠️ DEPRECATED:** The `nodectl` utility is no longer supported. This guide is archived for reference only.

New and existing node operators should use the **Node Pilot** utility. **Click here to view the Node Pilot Setup Guide**
{% endhint %}

## Introduction[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-introduction) <a href="#introduction" id="introduction"></a>

This document serves as a companion to the `nodectl help` command reference, which is available when running the `nodectl` utility on your node.

### What is an option and parameter?[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#what-is-an-option-and-parameter) <a href="#what-is-an-option-and-parameter" id="what-is-an-option-and-parameter"></a>

In `nodectl`, a **command-line option** is a modifier added to the end of a command to customize its behavior.\
It follows the syntax:

```
sudo nodectl <command> <option>
```

An **option** may be accompanied by one or more **parameters**, which are specific values or instructions the option uses to perform its task.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples)

`sudo nodectl <command> <option> <parameter>`

`sudo nodectl <command> <option> <parameter> <option> <parameter>`

`sudo nodectl <command> <option> <parameter> <option> <option>`

### **Option without parameters**

Some **options** do not require a **parameter** be supplied afterwards. The option may need to be supplied alone.

\| As a simple example, the command

```
sudo nodectl status -p dag-l0
```

* The `status` is the **command**
* The `-p` is a **option**
* The `dag-l0` is a **parameter**.

{% hint style="info" %}
This reference guide will explore the `status` command in greater detail.

In the example provided earlier, the option `-p` specifies **which profile** you would like to check the status of, and the parameter `dag-l0` identifies the **specific profile** being queried.

**Example:**

```
sudo nodectl status -p dag-l0
```

* `-p` is the **option** (profile selector)
* `dag-l0` is the **parameter** (the profile you want to review)
  {% endhint %}

### What Is Pagination?

When accessing your node via a remote shell, some commands may produce output that exceeds the visible height of your terminal window.\
In such cases, `nodectl` uses **pagination**, which pauses the output once it fills the screen, allowing you to view it in manageable sections.

You’ll be prompted with options to **continue** or **quit** the output stream.

* Press **any key** to continue scrolling
* Press **`q`** to quit and return to the command prompt

If you prefer to display the full output without pauses, many paginated commands support the `-np` (**no pagination**) option to disable this behavior.

**Example:**

```
sudo nodectl peers -np
```

{% hint style="info" %}
This reference guide will explore the `peers` command in greater detail.
{% endhint %}

### **Final Note**

If an `option` requires a `parameter`, it must be entered directly after the `option` is supplied on the command line. However, the order of the `options` that do not require parameters does **not** matter.

`option1` requires `parameter1`, `option2` does not require a parameter.

```
sudo nodectl -option1 parameter1 -option2
```

Is the same as:

```
sudo nodectl -option2 -option1 parameter1
```

***

## :gear: Command References[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-command-references) <a href="#command-references" id="command-references"></a>

### getting\_started[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#getting_started) <a href="#getting_started" id="getting_started"></a>

***

The **`getting_started`** command will display a simple readme file with the most used commands found within the nodectl utility.

|      Command     | Shortcut |  Version |
| :--------------: | :------: | :------: |
| getting\_started |   None   | >v2.14.0 |

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-1)

* Show getting started readme.

```
sudo nodectl getting-started  
```

### help[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#help) <a href="#help" id="help"></a>

***

The **`help`** command will offer help for most commands available by the nodectl utility.

Node Operators can issue the `help` command by itself to see a basic rundown of all **options** and **parameter** requirements.

```
sudo nodectl help
```

```
NODECTL INSTALLED: [v2.7.1]
TESSELLATION INSTALLED: [v2.8.0]
Code Name: Princess Warrior
----------------------
```

Issuing the `help` command with the actual command you are seeking help from, will show a more detailed explanation of that command. *Similar to this document, except from the command line itself.*

```
sudo nodectl status help
```

## :gear: Service Change Commands[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-service-change-commands) <a href="#service-change-commands" id="service-change-commands"></a>

### start[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#start) <a href="#start" id="start"></a>

***

The **`start`** command takes a single option.

This command **requires** the `<profile_name>` to be provided and will not execute without it.

<table><thead><tr><th width="85.88885498046875" align="center">option</th><th width="151.111083984375" align="center">parameter</th><th width="372.77783203125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>starts the service related to the profile name supplied.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-2)

* Help screen

```
sudo nodectl start -p dag-l0 help  
```

* Start profile named `dag-l0`

```
sudo nodectl start -p dag-l0
```

### stop[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#stop) <a href="#stop" id="stop"></a>

***

The **`stop`** command takes a single parameter.

**Stop** the service related to a configured profile name. This command will not work without the `<profile_name>` supplied.

<table><thead><tr><th width="147" align="center">option</th><th width="148.888916015625" align="center">parameter</th><th width="324.888916015625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>stops the service related to the profile name supplied.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>--leave</code> | <code>-l</code></td><td align="center">none</td><td>You may use <code>-l</code> or the long option <code>--leave</code> to force a leave against a cluster (recommended) in the event that the profile's cluster is in a state where it is recommended to <code>leave</code> the cluster first.</td><td align="center">no</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-3)

* Show the help screen.

```
sudo nodectl stop help 
```

* Stop profile named `dag-l0`.

```
sudo nodectl stop -p dag-l0
```

* Stop profile named `dag-l0` and force a `leave`.

```
sudo nodectl stop -p dag-l0 --leave
```

### restart[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#restart) <a href="#restart" id="restart"></a>

***

The `restart` command takes a single parameter and is used to restart the service associated with a specified profile.

This command **requires** either a specific `<profile_name>` or the special parameter `all`. It will not function without one of these.

#### Actions Performed (in order):

1. Leave the cluster
2. Stop the service
3. Start the service
4. Re-join the cluster

<table><thead><tr><th width="155.88885498046875" align="center">option</th><th width="155.3333740234375" align="center">parameters</th><th width="298.5555419921875">description</th><th align="center">require</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code> | <code>all</code></td><td>restarts the service related to the profile name in question.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>--slow-restart</code></td><td align="center"></td><td><p>functions <strong>similarly</strong> to the <code>restart</code> command, but with a deliberate <strong>10-minute delay</strong> (600 seconds) built into the process.</p><p></p><p>The <code>--slow_restart</code> is designed to help resolve issues where a node is:</p><ul><li>Stuck in an undesirable or unstable state</li><li>Unresponsive to cluster activity</li><li>Experiencing other unexpected behavior.</li></ul></td><td align="center">no</td></tr><tr><td align="center"><code>--restart-only</code></td><td align="center">Noe</td><td>Use <code>--restart_only</code> when you want to restart a profile’s service <strong>without immediately rejoining the cluster</strong>. This is useful for performing maintenance or troubleshooting before re-establishing cluster participation. After execution, the profile will end in a <strong><code>ReadyToJoin</code></strong> state.</td><td align="center">no</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-4)

* Help screen

```
sudo nodectl restart -p dag-l0 help  
```

* Restart **all** the profiles configured on the node, in proper order of operations.

```
sudo nodectl restart -p all
```

* Restart profile named `dag-l0`

```
sudo nodectl restart -p dag-l0
```

* Restart but do not join `dag-l0`

```
sudo nodectl restart --restart-only -p dag-l0
```

### leave[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#leave) <a href="#leave" id="leave"></a>

***

The **`leave`** command takes a single parameter.

**Leave** the Hypergraph or metagraphs related to a configured profile name. This command will not work without the `<profile_name>` parameter supplied.

Issuing a `leave` against your node will allow your node to complete any processes on the Hypergraph or metagraph that it may be involved in **before** your node exits the cluster.

It is appropriate and will improve your node's **PRO** score to `leave` the cluster before you issue a `stop` command.

<table><thead><tr><th width="84.77777099609375" align="center">option</th><th width="151" align="center">parameters</th><th width="377.111083984375">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center">-p</td><td align="center"><code>&#x3C;profile_name></code></td><td>leaves the cluster related to the profile parameter supplied.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-5)

* Help screen

```
sudo nodectl leave -p dag-l0 help  
```

* Leave profile named `dag-l0`

```
sudo nodectl leave -p dag-l0
```

### join[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#join) <a href="#join" id="join"></a>

***

The `join` command takes a single required parameter and is used to join a **Hypergraph** or **metagraph** network using a configured profile.

#### Requirements:

* The `<profile_name>` must be supplied—this command will not function without it.
* The associated profile must be **started**.
* The node's status must be **`ReadyToJoin`** before issuing the command.

<table><thead><tr><th width="82.22222900390625" align="center">option</th><th width="153.5555419921875" align="center">parameters</th><th width="404.77783203125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center">-p</td><td align="center"><code>&#x3C;profile_name></code></td><td>join the cluster related to the profile name parameter supplied.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-6)

* Help screen

```
sudo nodectl join -p dag-l0 help  
```

* Join profile named `dag-l0`

```
sudo nodectl join -p dag-l0
```

## :gear: Node Operations[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-node-operations) <a href="#node-operations" id="node-operations"></a>

### auto\_restart[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#auto_restart) <a href="#auto_restart" id="auto_restart"></a>

***

The **`auto_restart`** command takes several parameters.

This feature is **disabled**, by default. You can enable this feature by issuing:

```
sudo nodectl configure -e -cb -d
```

Option <kbd>r</kbd>

The `auto_restart` feature in `nodectl` is a specialized background service that continuously monitors your node to ensure all configured profiles.  Whether on the **Hypergraph** or **metagraphs,** `auto_restart` attempts to remain connected to the cluster.

If a profile is detected to be offline or in an undesirable state, `auto_restart` will attempt to automatically recover and rejoin the profile to its respective network, helping to maintain uptime and stability.

<table><thead><tr><th width="174.77783203125" align="center">option</th><th width="127.4444580078125" align="center">parameter</th><th width="314.3333740234375">description</th><th align="center">requried</th></tr></thead><tbody><tr><td align="center"></td><td align="center"><code>enable</code></td><td>enable the <code>auto_restart</code> feature.</td><td align="center">no</td></tr><tr><td align="center"></td><td align="center"><code>disable</code></td><td>disable the <code>auto_restart</code> feature.</td><td align="center">no</td></tr><tr><td align="center"></td><td align="center"><code>restart</code></td><td>disable and then enable the <code>auto_restart</code> feature</td><td align="center">no</td></tr><tr><td align="center"></td><td align="center"><code>status</code></td><td>display the <code>auto_restart</code> and <code>auto_upgrade</code> feature status</td><td align="center">no</td></tr><tr><td align="center"></td><td align="center"><code>check_pid</code></td><td>display the <code>process ID</code> of the process that is currently running the <code>auto_restart</code> feature.</td><td align="center">no</td></tr><tr><td align="center"><code>--auto_upgrade</code></td><td align="center"></td><td>enable the <code>auto_upgrade</code> feature with the <code>auto_restart</code> service. <em>Must be accompanied by the <code>enable</code> option.</em></td><td align="center">no</td></tr></tbody></table>

* list of monitoring
* timing
* Manual interoperability
* auto\_upgrade
* passphrase requirement

{% hint style="danger" %}
Do not rely entirely on the `auto_restart` feature. While auto\_restart is a useful tool for keeping your node consistently up, it is not foolproof. You should still manually monitor your node to ensure it stays online and connected to the correct cluster session.
{% endhint %}

* Help screen

```
sudo nodectl auto_restart help
sudo nodectl auto_upgrade help
```

* Manual enable auto\_restart services

```
sudo nodectl auto_restart enable
```

* Manual enable auto\_restart services with auto\_upgrade

```
sudo nodectl auto_restart enable --auto_upgrade
```

* Manual disable auto\_restart services

```
sudo nodectl auto_restart disable
```

* Manual restart auto\_restart services

```
sudo nodectl auto_restart restart
```

* Check if auto\_restart is running by searching for the process ID (pid) of the auto\_restart service. The command will also show status of auto features set in the configuration.

```
sudo nodectl auto_restart check_pid
sudo nodectl auto_restart status
```

### clean\_files[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#clean_files) <a href="#clean_files" id="clean_files"></a>

***

The **`clean_files`** command will offers the Node Operator the ability to clear specified logs or special stored files that may not be needed anymore.

Once the command is executed the Node Operator will be offered a CLI menu of removal options to choose.

The option will be carried out and the Node Operator will be offered a visual confirmation of the files:

* To be removed
* number of files
* Size to be freed by their removal.

|     Command    | Shortcut | Version |
| :------------: | :------: | :-----: |
| clean\_file`s` |    -cf   | >v2.7.x |

<table><thead><tr><th width="80.3333740234375" align="center">option</th><th width="120.888916015625" align="center">parameters</th><th width="409.6666259765625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-t</code></td><td align="center"><code>&#x3C;log_type></code></td><td>enter the log type that is desired.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

<table><thead><tr><th width="217.333251953125" align="center">Type of Logs</th><th>Description</th></tr></thead><tbody><tr><td align="center">logs</td><td>clear logs located in the default or specified log directories. Logs command handles <code>json_logs</code> and <code>archived</code> logs.</td></tr><tr><td align="center">uploads</td><td>clear uploads located in the default or specified log directories.</td></tr><tr><td align="center">backups</td><td>clear backups located in the default or specified log directories.</td></tr></tbody></table>

* Help file

```
sudo nodectl clean_files help
```

* Clean logs of type logs

```
sudo nodectl clean_files -t logs
```

* or

```
sudo nodectl -cf -t logs
```

### check\_minority\_fork[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_minority_fork) <a href="#check_minority_fork" id="check_minority_fork"></a>

***

The **`check_minority_fork`** command will execute a check against your node's status on the cluster in an attempt to determine if the node is in a minority fork.

|        Command        | Shortcut |  Version |
| :-------------------: | :------: | :------: |
| check\_minority\_fork |   -cmf   | >v2.12.0 |

<table><thead><tr><th width="89.22222900390625" align="center">option</th><th width="154.5555419921875" align="center">parameters</th><th width="375.3333740234375">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which cluster related to the profile name in question do we want to review.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

**If node shows MINORITY FORK `True`**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#if-node-shows-minority-fork-true)

You should restart your node in order to return of the majority fork. `auto_restart` has the ability to automatically detect a minority fork and restart your node for you.

***

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-9)

* Help menu

```
sudo nodectl check_minority_fork help 
sudo nodectl -cmf help 
```

* Check the Hypergraph profile `dag-l0` for a minority fork

```
sudo nodectl check_minority_fork -p dag-l0
```

### check\_connection[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_connection) <a href="#check_connection" id="check_connection"></a>

***

The `check_connection` command performs a diagnostic check on the currently connected **Hypergraph** or m**etagraph** cluster.

It compares the list of nodes discovered from a **source peer** against those found on an **edge peer**, helping to identify connectivity inconsistencies or potential issues in peer discovery.

|      Command      | Shortcut | Version |
| :---------------: | :------: | :-----: |
| check\_connection |    -cc   | >v1.x.x |

<table><thead><tr><th width="95.888916015625" align="center">option</th><th width="175.88885498046875" align="center">parameters</th><th width="345.77783203125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which cluster related to the profile name in question do we want to review.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-s</code></td><td align="center"><code>&#x3C;ip_address or hostname></code></td><td>identify a <strong>source</strong> node to use specifically by the <code>check_connection</code> command, to test against the <strong>edge</strong> node.</td><td align="center">no</td></tr><tr><td align="center"><code>-e</code></td><td align="center"><code>&#x3C;ip_address or hostname></code></td><td>identify an <strong>edge</strong> node to compare against the <strong>source</strong> node.</td><td align="center">no</td></tr></tbody></table>

* The **`-s`** option may be supplied to request a lookup on a specific peer. If not specified, nodectl will pick a random peer on the cluster; specified by the `-p` profile (required) parameter.
* The **`-e`** option may be supplied to request a lookup on a specific peer edge device that is not the local node. If not specified, nodectl will pick a random peer on the cluster; specified by the `-p` profile (required) parameter.

If the nodes connected to each do not match, the command will display those nodes that are missing between the two.

**Dictionary**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#dictionary)

<table><thead><tr><th width="133.99993896484375" align="center">symbol</th><th>description</th></tr></thead><tbody><tr><td align="center">*</td><td>Indicates the ip searched against was either the edge and source ip</td></tr><tr><td align="center">i</td><td>Initial State</td></tr><tr><td align="center">rtj</td><td>ReadyToJoin State</td></tr><tr><td align="center">ss</td><td>StartingSession State</td></tr><tr><td align="center">s</td><td>SessionStarted State</td></tr><tr><td align="center">rtd</td><td>ReadyToDownload State</td></tr><tr><td align="center">wfd</td><td>WaitingForDownload State</td></tr><tr><td align="center">wfr</td><td>WaitingForReady State</td></tr><tr><td align="center">dip</td><td>DownloadInProgress State</td></tr><tr><td align="center">ob</td><td>Observing State</td></tr><tr><td align="center"></td><td>Ready</td></tr><tr><td align="center">l</td><td>Leaving State</td></tr><tr><td align="center">o</td><td>Offline State</td></tr><tr><td align="center">ar</td><td>ApiNotReady State (nodectl only)</td></tr><tr><td align="center">anr</td><td>ApiNotResponding State (nodectl only)</td></tr></tbody></table>

**If node shows `False`**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#if-node-shows-false)

There may be circumstances where your node is showing a False positive. The network may still be converging or another node may be causing your node to show False.

In some cases you may need to wait a little longer and then check again if:

* Your node is showing `False`.
* If you are seeing many nodes "missing".

The node may be off the network and a restart is required. You can use the restart command to attempt to restart and join the network.

**Troubleshooting**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#troubleshooting)

* You may review your log files to see if you can find an issue
* You can contact a System Administrator to review log files which may help to figure out if your issue is correctable. They may request you send\_logs feature.

***

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-10)

* Scenario for help
  * `<profile_name>` will be **dag-l0**
  * Node you joined to originally (source) : **`10.1.1.1`**
  * The IP of your node (edge) : **`10.2.2.2`**
  * The IP of another node (other) : **`10.3.3.3`**
  * The IP of another node (other) : **`10.4.4.4`**
* Help menu

```
sudo nodectl check_connection help 
```

* Check random "source" against the local "edge" node

```
sudo nodectl check_connection -p dag-l0
```

* Check random "source" node against "other" node

```
sudo nodectl check_connection -p dag-l0 -e 10.3.3.3
```

* Check "any other node" against "any other node"

```
sudo nodectl check_connection -p dag-l0 -s 10.3.3.3 -s 10.4.4.4
```

### check\_consensus[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_consensus) <a href="#check_consensus" id="check_consensus"></a>

***

The **`check_consensus`** command will execute a check against your node's status on the cluster in an attempt to determine if the node participating in consensus rounds.

|      Command     | Shortcut |  Version |
| :--------------: | :------: | :------: |
| check\_consensus |   -con   | >v2.12.0 |

<table><thead><tr><th width="111.4444580078125" align="center">option</th><th width="179.77777099609375" align="center">parameters</th><th width="322.4444580078125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which cluster related to the profile name in question do we want to review.</td><td align="center">no</td></tr><tr><td align="center"><code>-s</code></td><td align="center"><code>&#x3C;ip_address></code></td><td>nodectl will check the ip address supplied instead of the localhost.</td><td align="center">no</td></tr><tr><td align="center"><code>-w</code></td><td align="center"><code>&#x3C;seconds></code></td><td>watch mode: nodectl will continuously check if the node is in consensus every X seconds, until the <kbd>q</kbd> if hit to exit watch mode.</td><td align="center">no</td></tr><tr><td align="center"><code>--id</code></td><td align="center"><code>&#x3C;node_id></code></td><td>nodectl will check the node ID supplied instead of the localhost.</td><td align="center">no</td></tr><tr><td align="center"><code>--brief</code></td><td align="center"></td><td>Offer output in a more simplified form.</td><td align="center">no</td></tr><tr><td align="center"><code>--file</code></td><td align="center"><code>&#x3C;path_to_csv_file></code></td><td>option is requested the consensus will be checked against the file that contains at least one node ID public key or multiple node IDs formatted in one line per node ID public key. <strong>The <code>--file</code> command cannot coincide with the -w option.</strong></td><td align="center">no</td></tr></tbody></table>

If the `-p` parameter is not supplied, nodectl will offer you a menu of known profiles to choose from.

The `--file` command expects a csv (comma separated values) file that is populated with node IDs. Each node ID must be on its own line.

**If node shows IN CONSENSUS `False`**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#if-node-shows-in-consensus-false)

You should restart your node in order to return of the majority fork. auto\_restart has the ability to automatically detect a node that is out of consensus and restart your node for you.

***

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-11)

* Help menu

```
sudo nodectl check_consensus help 
```

```
sudo nodectl -con help 
```

* Check if the Hypergraph profile `dag-l0` is in consensus

```
sudo nodectl check_consensus -p dag-l0
```

* Execute consensus check against node with profile name `dag-l0` and IP address `10.10.10.10`.

```
sudo nodectl check_consensus -p dag-l0 -s 10.10.10.10  
```

* Execute consensus check against list of node IDs with profile name `dag-l0` and file containing the node ID list called `test.csv` located in the the '/tmp/' directory on the node.

```
sudo nodectl check_consensus -p dag-l0 --file /tmp/test.csv  
```

* Execute consensus in brief format.

```
sudo nodectl check_consensus -p dag-l0 --brief  
```

* Execute consensus in brief format refreshing and checking again every `120` seconds.

```
sudo nodectl check_consensus -p dag-l0 --brief -w 120  
```

### check\_source\_connection[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_source_connection) <a href="#check_source_connection" id="check_source_connection"></a>

***

The **`check_source_connection`** command takes a profile parameter.

|          Command          | Shortcut | Version |
| :-----------------------: | :------: | :-----: |
| check\_source\_connection |   -csc   | >v1.x.x |

<table><thead><tr><th width="88.11114501953125" align="center">option</th><th width="155.6666259765625" align="center">parameters</th><th width="364.22216796875">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which cluster related to the profile name in question do we want to review.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

When executed the `check_source_connection` command will attempt to find a random node on the current known Hypergraph or metagraph cluster.

{% hint style="warning" %}
The random node **needs** to be joined into the **consensus of the cluster**, and **must** be on the cluster and in **`Ready`** state.

nodectl should take care of this for us.
{% endhint %}

example output

```
States: Initial, ReadyToJoin, StartingSession, SessionStarted,                                         
        ReadyToDownload, WaitingForDownload, DownloadInProgress, Observing, 
        WaitingForReady, WaitingForObserving, Ready, Leaving, 
        Offline, ApiNotReady, SessionIgnored, SessionNotFound, 
          
Source: Server this node is joined to
        Edge: This node

Note: If the SOURCE is on a different network it will show ApiNotReady

FULL CONNECTION              PROFILE                                                                   
True                         dag-l0                     
SOURCE -> STATE              EDGE -> STATE              
True | Ready                 True | Ready               
  
Node restart service does not need to be restarted because pid
[4157840] was found already. 
```

<table><thead><tr><th width="180.66668701171875" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">Full Connection</td><td>Both the source node picked by nodectl and the local <strong>edge</strong> node that executed the <code>check_source_connection</code> command can see each other <strong><code>True</code></strong> or cannot <strong><code>False</code></strong>.</td></tr><tr><td align="right">Profile</td><td>The profile that this command was run against.</td></tr><tr><td align="right">Source -> State</td><td>Can the <strong>SOURCE</strong> node see the edge node <strong><code>True</code></strong> or <strong><code>False</code></strong>. The source node's state is in <strong><code>Ready</code></strong> state.</td></tr><tr><td align="right">Edge -> State</td><td>Can the <strong>EDGE</strong> node see itself <strong><code>True</code></strong> or <strong><code>False</code></strong>. The edge node's state is in <strong><code>Ready</code></strong> state.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-12)

* Help screen

```
sudo nodectl check_source_connection help
```

* Execute the check\_source\_connection command

```
sudo nodectl check_source_connection
```

### check\_seedlist[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_seedlist) <a href="#check_seedlist" id="check_seedlist"></a>

***

The **`check_seedlist`** command takes one parameter.

|     Command     | Shortcut | Version |
| :-------------: | :------: | :-----: |
| check\_seedlist |   -csl   | >v2.x.x |

<table><thead><tr><th width="117" align="center">option</th><th width="155.5555419921875" align="center">parameters</th><th width="294.77783203125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>related to the profile to verify access permissions.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-id</code></td><td align="center"><code>&#x3C;node_id></code></td><td>node ID of the node you would like to verify seed list participation (if not local to the node)</td><td align="center">no</td></tr></tbody></table>

**`check_seedlist`** will pull your `node ID` out of your p12 file and compare it to the seedlist downloaded from **Constellation Network's** authorized list.

<table><thead><tr><th width="227.3333740234375">Title</th><th>Description</th></tr></thead><tbody><tr><td>ip address</td><td>The <code>ip address</code> of the node in question</td></tr><tr><td>p12 filename</td><td>The name of the <code>p12</code> file on the local node</td></tr><tr><td>p12 location</td><td>The location of the <code>p12</code> file on the local node</td></tr><tr><td>node ID</td><td>The <code>p12</code> public key ( <em>node ID</em> ).</td></tr><tr><td>node ID found on seed list</td><td>This will be a <code>True</code> or <code>False</code>. In the event of a <code>False</code> please contact an administrator on the Constellation Network official Discord server.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-13)

* Help screen

```
sudo nodectl check_seedlist help
```

* Execute the check\_seedlist command

```
sudo nodectl check_seedlist
```

### check\_seedlist\_participation[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_seedlist_participation) <a href="#check_seedlist_participation" id="check_seedlist_participation"></a>

***

The **`check_seedlist_participation`** command does not take any parameters.

\| Command | Shortcut | Version | | :---: | :---: | :---: | >v2.7.x | | check\_seedlist\_participation | -cslp |

<table><thead><tr><th width="294.55560302734375">Command</th><th align="center">Shortcut</th><th>Version</th></tr></thead><tbody><tr><td>chcheck_seedlist_participation </td><td align="center">-cslp</td><td>>2.7.x</td></tr></tbody></table>

<table><thead><tr><th width="100.3333740234375" align="center">option</th><th width="161.66668701171875" align="center">parameters</th><th width="356.4444580078125">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>related to the profile to verify access permissions.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

This command can be used to review seed list access-list participation for any/all given profile(s) in the configuration that has a seed-list setup.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-14)

* Help screen

```
sudo nodectl check_seedlist_participation help
```

* Execute the check\_seedlist\_participation command

```
sudo nodectl check_seedlist_participation -p <profile_name>
```

### check\_tcp\_ports[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_tcp_ports) <a href="#check_tcp_ports" id="check_tcp_ports"></a>

***

The `check_tcp_ports` command performs a diagnostic test on your node’s **external network interface card (NIC)** to detect network activity on your node’s **API TCP ports**.

This tool is especially useful during troubleshooting to determine if there may be a **firewall or connectivity issue**.

#### What `nodectl` will do:

* **Extract** the public and peer-to-peer API ports from your node’s configuration
* **Sniff** the NIC for a short duration to observe traffic on these ports
* **Report** the results without interfering with or modifying any traffic

{% hint style="info" %}
**Sniffing** is a passive process—it simply listens to the interface and does not interact with or alter any UDP/TCP packets.
{% endhint %}

{% hint style="warning" %}
If the node does not have the protocol up and running for a given profile, nodectl will not see any traffic and If the protocol is not actively running for the specified profile, `nodectl` will not detect any traffic on the associated ports.\
As a result, the `check_tcp_ports` command will report a **failure**, indicating no observed network activity.

This does **not necessarily mean** there is a firewall issue—it could simply mean the node is not currently active on the network for that profile.
{% endhint %}

<table><thead><tr><th width="94.77777099609375" align="center">option</th><th width="128.11114501953125" align="center">parameters</th><th width="396.4444580078125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-t</code></td><td align="center"><code>&#x3C;seconds></code></td><td>How long would you like to sniff each of the TCP ports found? default <strong>10</strong> seconds.</td><td align="center">no</td></tr></tbody></table>

### console[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#console) <a href="#console" id="console"></a>

***

The **`console`** command does not take any parameters.

This is a special utility command that allows you to use a `menu driven` methodology towards issuing the most common commands on your node. There are three (*opinionated*) menus of commands.

* **Main Menu**: Hold the most common commands.
* **General Menu**: Holds commands that are commonly useful.
* **Troubleshooting Menu**: Holds common commands used for troubleshooting purposes.

Simply issue the `console` command, select the letter corresponding to the predefined commands, and that command will execute. After completion, nodectl will terminate the process and return the Node Operator to the terminal prompt.

### **mobile**

***

The mobile command is synonymous with the `console` command; however, it will return to the main menu and allow the Node Operator to issue "the next" command, as needed, in an iterative fashion.

|      Command      | Shortcut |  Version |
| :---------------: | :------: | :------: |
| console \| mobile |          | >v2.15.0 |

### download\_status[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#download_status) <a href="#download_status" id="download_status"></a>

***

The **`download_status`** command is **experimental** and may not always be accurate.

{% hint style="warning" %}
The **`download_status`** command is **experimental** and may not always be accurate.
{% endhint %}

It makes a best-effort attempt to review the node's logs in real time to estimate the progress of the `DownloadInProgress` state and how long it may take to complete.

When a node begins the process of joining the cluster for the configured profile(s), it undergoes a series of essential initialization tasks to ensure proper integration and functionality as a peer in the cluster.

After your node completes the initial phases of authentication and becomes a peer on the cluster, it must synchronize and gather knowledge of the existing blockchain before it can actively participate in consensus and earn rewards.

Constellation Network uses an incremental snapshot strategy to minimize the "cost" of downloading blockchain snapshots. When a new node joins the cluster, it undergoes an extended one-time process of learning the entire blockchain. For an existing node rejoining the cluster, the node calculates the differences between its previous state and the current blockchain state.

|      Command     | Shortcut |  Version |
| :--------------: | :------: | :------: |
| download\_status |    -ds   | >v2.10.0 |

<table><thead><tr><th width="123.66668701171875" align="center">option</th><th width="153.5555419921875" align="center">parameters</th><th width="323.888916015625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>monitor the cluster that relates to the requested profile.</td><td align="center">no</td></tr><tr><td align="center"><code>--estimate</code></td><td align="center"></td><td>This is a <code>develper_mode</code> option that will attempt to estimate how much time is left before the <code>DownloadInProgress</code> stage may complete.</td><td align="center">no</td></tr></tbody></table>

### execute\_starchiver[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#execute_starchiver) <a href="#execute_starchiver" id="execute_starchiver"></a>

***

[**Starchive-Extractor**](https://github.com/StardustCollective/Starchive-Extractor) is a community created and supported tool.

{% hint style="warning" %}
**IMPORTANT**

Constellation Network does not support this tool.

This tool is highly useful and has been integrated into nodectl to assist with proper execution with a single command, without any extra steps. It can expedite your node’s ability to join the cluster, potentially reducing download times from days to just hours or less.
{% endhint %}

|       Command       | Shortcut |  Version |
| :-----------------: | :------: | :------: |
| execute\_starchiver |          | >v2.13.0 |

When executed on a node via nodectl

<table><thead><tr><th width="139.22222900390625" align="center">option</th><th width="172" align="center">parameters</th><th width="322.4444580078125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-d</code></td><td align="center"></td><td>Delete all snapshots before continuing.</td><td align="center">no</td></tr><tr><td align="center"><code>-o</code></td><td align="center"></td><td>Override any snapshots as necessary.</td><td align="center">no</td></tr><tr><td align="center"><code>--datetime</code></td><td align="center"><code>&#x3C;datetime_stamp></code></td><td>If you do <strong>not</strong> include a parameter after the <code>--datetime</code> option, Starchive-Extractor will automatically attempt to determine what date and time is best to begin the archival downloads. <strong>Omitting a <code>&#x3C;datetime_stamp></code> is recommended</strong>.</td><td align="center">no</td></tr><tr><td align="center"><code>--restart</code></td><td align="center"></td><td>Once the Starchiver-Extractor is complete, automatically restart the node's profile.</td><td align="center">no</td></tr></tbody></table>

* Help screen

```
sudo nodectl execute_starchiver help
```

* Execute Starchiver-Extractor using the most recommended command options.

```
sudo nodectl execute_starchiver -p <profile_name> --datetime --restart
```

### find[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#find) <a href="#find" id="find"></a>

***

The **`find`** command takes several parameters.

| Command | Shortcut | Version |
| :-----: | :------: | :-----: |
|   find  |          | >v1.x.x |

This command will attempt to find the requested peer on the current connected Hypergraph or metagraph.

The find command offers insight into the

* number of nodes on the cluster
* number of nodes in **`Observing`** state
* number of nodes in **`WaitingForObserving`** state
* number of nodes in **`DownloadInProgress`** state
* number of nodes in **`WaitingForReady`** state
* number of nodes in **`Ready`** state

It will show you the profile searched (required) and offer you confirmation that your node is seen on the cluster.

<table><thead><tr><th width="89.22222900390625" align="center">option</th><th width="143.4444580078125" align="center">parameters</th><th width="388.1112060546875">descriptio</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-s</code></td><td align="center"><code>&#x3C;source_node></code></td><td>Node on the cluster you want to use to lookup other nodes.</td><td align="center">no</td></tr><tr><td align="center"><code>-t</code></td><td align="center"><code>&#x3C;target_node></code></td><td>Node on the cluster (ip address, hostname, or node ID) you want to look up on the cluster.</td><td align="center">no</td></tr></tbody></table>

You may specify a **`source`** node that will be used as the reference point to lookup the **`target`** node (either your node *default* or a specified target) on the cluster and return a `True` or `False` depending on whether or not it is found.

You may use the **`self`** keyword for either the `source` ( `-s` ) or `target` ( `-t` ) parameters.

{% hint style="info" %}
**Note**

Choosing a **source node** that is **NOT** on the network may result in an error or false negative.
{% endhint %}

* Help screen

```
sudo nodectl find help
```

* Check if your node is listed/seen on the cluster using a random source node that is already found on the cluster.

```
sudo nodectl find -p <profile_name>
```

* Check if your node is listed/seen on the cluster using a specific source node.

```
sudo nodectl find -p <profile_name> -s <source_ip_host>
```

* Check if your node is listed/seen on the cluster using a specific source node and a specific target node (other then your own.

```
sudo nodectl find -p <profile_name> -s <source_ip_host> -t <target_ip_host>
```

**other `find` examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#other-find-examples)

If our node is `10.1.1.1` check if `10.1.1.1` is listed/seen by another random node on the cluster we are connected to identified by the profile `dag-l0`.

```
sudo nodectl find -p dag-l0 
sudo nodectl find -p dag-l0 -s 10.2.2.2 -t 10.1.1.1
```

look for a node by `node ID`

```
sudo nodectl find -p dag-l0 -t <node ID>
```

If our node is `10.1.1.1` check if `10.1.1.1` is listed/seen by a node identified by the `-s` option (`10.2.2.2`) on the cluster we are connected to.

```
sudo nodectl find -p dag-l0 -s 10.2.2.2
sudo nodectl find -p dag-l0 -s 10.2.2.2 -t 10.1.1.1
```

**Examples using `self` keyword**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-using-self-keyword)

```
sudo nodectl find -p dag-l0 -s self -t 10.2.2.2
sudo nodectl find -p dag-l0 -s 10.2.2.2 -t self
```

In this example we are asking `10.2.2.2` (our source) if it is able to identify the target `10.1.1.2` on the network cluster.

```
sudo nodectl find -p dag-l0 -s 10.2.2.2 -t 10.1.1.2
```

### health[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#health) <a href="#health" id="health"></a>

***

The **`health`** command does not take any parameters.

It displays the basic health elements of your node.

<table><thead><tr><th width="169.55548095703125" align="center">OUTPUT</th><th>Description</th></tr></thead><tbody><tr><td align="center">ok</td><td>Falls within normal operating parameters</td></tr><tr><td align="center">low</td><td>Falls outside of normal operating parameters - minimum</td></tr><tr><td align="center">warn</td><td>Falls outside of normal operating parameters - upper threshold</td></tr></tbody></table>

<table><thead><tr><th width="134" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">15M CPU</td><td>Average usage of CPU over 15 minute intervals.</td></tr><tr><td align="right">Disk Usage</td><td>How much hard drive (DISK) space is in use.</td></tr><tr><td align="right">Uptime Days</td><td>How long the operating system has been running since the last boot/reboot.</td></tr><tr><td align="right">Memory</td><td>RAM usage.</td></tr><tr><td align="right">Swap</td><td>SWAP space HD usage.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-18)

* Help screen

```
sudo nodectl health help
```

* Execute the health command

```
sudo nodectl health
```

### list[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#list) <a href="#list" id="list"></a>

***

The **`list`** command does not take any parameters and displays the details of the profiles found in the **`cn-config.yaml`** file. You can update the **`cn-config.yaml`** file with the configure command.

<table><thead><tr><th width="172.888916015625" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">Profile Name</td><td>Name of the profile on display as defined by the <strong><code>cn-config.yaml</code></strong>.</td></tr><tr><td align="right">Profile Description</td><td>Node Operator defined description of the profile.</td></tr><tr><td align="right">Public API TCP</td><td>The TCP port configured that is open to the public for API calls.</td></tr><tr><td align="right">P2P API TCP</td><td>The TCP port configured that is used for gossip peer to peer API communications.</td></tr><tr><td align="right">CLI API TCP</td><td>The TCP port configured that is used for internal API calls only.</td></tr></tbody></table>

* Help screen

```
sudo nodectl list help
```

* Execute the list command

```
sudo nodectl list
```

### market[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#market) <a href="#market" id="market"></a>

***

The **`market`** command does not take any parameters.

Performs a quick lookup for crypto markets via CoinGecko's public API.

The command will list the Top 10 Crypto markets at the current moment in time. In the event that Constellation Network is not in the top ten, it will list it's current position in relation to the rest of the known markets.

{% hint style="warning" %}
**warning**

This command is for recreation purposes **only**.

Constellation Network is not a financial advisor. Information is sourced from CoinGecko and does not represent the opinions or financial advice of Constellation Network.
{% endhint %}

<table><thead><tr><th width="138.4444580078125" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">Rank</td><td>Ranking 1 Best, > x+1 Worst</td></tr><tr><td align="right">Name</td><td>Token name</td></tr><tr><td align="right">Symbol</td><td>Token symbol</td></tr><tr><td align="right">Price</td><td>Current price at time of execution.</td></tr><tr><td align="right">Market Cap</td><td>Market Capitalization</td></tr><tr><td align="right">Total Supply</td><td>Total supply of tokens</td></tr><tr><td align="right">ATH</td><td><strong>A</strong>ll <strong>T</strong>ime <strong>H</strong>igh price of the token</td></tr></tbody></table>

### node\_last\_snapshot[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#node_last_snapshot) <a href="#node_last_snapshot" id="node_last_snapshot"></a>

***

The **`node_last_snapshot`** command takes a single option.

This command reviews the Tessellation `app.log` to find the last instance of a downloaded snapshot for the specified `<profile_name>`.

| option |    parameters    | description                                                                   | required |
| :----: | :--------------: | ----------------------------------------------------------------------------- | :------: |
|  `-p`  | `<profile_name>` | The profile name to review in order to locate the latest downloaded snapshot. |  **yes** |

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-21)

* Help screen

```
sudo nodectl node_last_snapshot -p dag-l0 help  
```

* Review snapshots for profile named `dag-l0`

```
sudo nodectl node_last_snapshot -p dag-l0
```

### peers[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#peers) <a href="#peers" id="peers"></a>

***

The **`peers`** command will attempt to list all the peers found on the cluster; as well as, list their IP addresses for review.

<table><thead><tr><th width="122.5555419921875" align="center">option</th><th width="156.888916015625" align="center">parameters</th><th width="361.77783203125">description</th><th align="center">requires</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>review the cluster that relates to the requested profile.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-t</code></td><td align="center"><code>&#x3C;target_node></code></td><td>Node on the cluster (ip or hostname) that you would like to use as your target (The node to use as reference.) for finding peers.</td><td align="center">no</td></tr><tr><td align="center"><code>--state</code></td><td align="center"><code>&#x3C;dip, ob, wfd, wfr, wfo, wfd></code></td><td>filter the peers output to only nodes that are in the requested cluster state: <code>dip</code>: DownloadInProgress, <code>ob</code>: Observing, <code>wfr</code>: WaitingForReady, <code>wfo</code>: WaitingForObserving, <code>wfd</code>: WaitingForDownload</td><td align="center">no</td></tr><tr><td align="center"><code>-c</code></td><td align="center">None</td><td>count the peers on the network.</td><td align="center">no</td></tr><tr><td align="center"><code>-np</code></td><td align="center">None</td><td>no pagination.</td><td align="center">no</td></tr><tr><td align="center"><code>--csv</code></td><td align="center">None</td><td>create csv (comma separated values) output file instead of print out to the screen.</td><td align="center">no</td></tr><tr><td align="center"><code>--output</code></td><td align="center"><code>&#x3C;file_name></code></td><td><strong>requires</strong> <code>--csv</code> --> this can only be a filename. If you would like to have your output saved to an alternate location, you can update the configuration file's <code>upload</code> location, via the configure command.</td><td align="center">no</td></tr><tr><td align="center">-<code>-basic</code></td><td align="center">None</td><td>show only the ip address and public port.</td><td align="center">no</td></tr><tr><td align="center"><code>--extended</code></td><td align="center">None</td><td>show full node ID and dag address.</td><td align="center">no</td></tr></tbody></table>

Normal output from the peers command will show all the peers seen on a given metagraph or the Hypergraph (profile dependent) this will include:

* node IP with public port
  * `10.10.10.10:1000` = `10.10.10.10` with public TCP port of `1000`
* node ID (shortened to first 8 hex values, `....`, last 8 hex values)
  * `abcd1234....efgh4567`
* DAG wallet (shortened)
  * `DAG12345...78910111`

You can utilize the **`--basic`** option to force nodectl to only show the `PEER IP:TCP PORT` column.

You can utilize the **`--extended`** option to force nodectl to only show all fields in long format.

If you do not use the `--basic` or `--extended` options, the output will be in shorten form for all elements (ip:port, dag address, node ID).

**Dictionary**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#dictionary-1)

| abbrv | Description                                                                                                                                                        |
| :---: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|   \*  | Indicates the ip found was either the `edge` and `source` ip as indicated by the `-t` option or the node that was randomly selected when the command was executed. |
|   i   | Initial State                                                                                                                                                      |
|  rtj  | ReadyToJoin State                                                                                                                                                  |
|   ss  | StartingSession State                                                                                                                                              |
|   l   | Leaving State                                                                                                                                                      |
|   s   | SessionStarted State                                                                                                                                               |
|   o   | Offline State                                                                                                                                                      |

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-22)

* Help screen

```
sudo nodectl peers help
```

* Show nodes on cluster from random peer on the cluster from a specific profile

```
sudo nodectl peers -p <profile_name>
```

* Show YOUR nodes's peers

```
sudo nodectl peers -p <profile_name> -t self
```

* Show peers on the cluster utilizing a specific target ip address.

```
sudo nodectl peers -p <profile_name> -t <ip_address or hostname>
```

* Show count of peers your node is able to see. (synonymous with `find` command) show peers on the cluster utilizing a specific.

```
sudo nodectl peers -p <profile_name> -c
```

* Source target ip address to count against.

```
sudo nodectl peers -p <profile_name> -t <ip_address or hostname> -c
```

**Other examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#other-examples)

Example usage for a profile called dag-l0

```
sudo nodectl peers -p dag-l0
```

Example usage for --basic

```
sudo nodectl peers -p dag-l0 --basic
sudo nodectl peers -p dag-l0 --extended
```

Create a csv file

```
sudo nodectl peers -p <profile_name> --csv
sudo nodectl peers -p <profile_name> --csv --output test.csv
```

### price[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#price) <a href="#price" id="price"></a>

***

The **`price`** command does not take any parameters.

This command performs a quick lookup for crypto prices via **CoinGecko's** public API.

{% hint style="warning" %}
**warning**

This command is for recreation purposes **only**.

Constellation Network is not a financial advisor. Information is sourced from CoinGecko and does not represent the opinions or financial advice of Constellation Network.
{% endhint %}

<table><thead><tr><th width="82.55560302734375" align="right">Title</th><th>Description</th><th width="78" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">$DAG</td><td>Constellation Network</td><td align="right">$LTX</td><td>Lattice Exchange</td></tr><tr><td align="right">$DOR</td><td>Dor Technologies</td><td align="right">$BTC</td><td>Bitcoin</td></tr><tr><td align="right">$ETH</td><td>Ethereum</td><td align="right">$QNT</td><td>Quant Network</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-23)

* Help screen

```
sudo nodectl price help
```

* Execute the price command

```
sudo nodectl price
```

### refresh\_binaries[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#refresh_binaries) <a href="#refresh_binaries" id="refresh_binaries"></a>

***

The **`refresh_binaries`** command does not take any parameters.

|          Command          | Shortcut | Version |
| :-----------------------: | :------: | :-----: |
| check\_source\_connection |   -rtb   | >v1.x.x |

This command will download and overwrite the existing Tessellation binaries files that are required to run your node. The result of this command will be to download the binaries from the latest release and is independent of a system upgrade.

This command can be used to refresh your binaries in the event that you have a corrupted or missing binary files.

This command should be accompanied by the restart command in order to allow your node to utilize the new binary files.

This includes a refresh of the latest local `seed-list` access list file.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-24)

* Help screen

```
sudo nodectl refresh_binaries help
```

* Execute the refresh\_binaries command

```
sudo nodectl refresh_binaries
```

### quick\_status[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#quick_status) <a href="#quick_status" id="quick_status"></a>

***

The **`quick_status`** command takes a single **optional** parameter.

**quick\_status** will review the current status of your node and offer a single output of the found **state** of your node's known clusters, as quickly as possible.

If the `-p` option is used with the `<profile_name>`, only that profile's status will appear. If the `quick_status` command is called without the `-p` option, all profiles will be shown.

The difference between `quick_status` and status are two-fold:

1. `quick_status` will only show the state of the node's known active profile(s)
2. `quick_status` will review the state of your node's known active profile(s) via the local API on the node. This should be understood and used with caution, as if your node is in `Ready` state but not on the proper cluster, you may receive a false positive. The status command; although more time costly (*expensive*), will offer a better outlook on your node by providing metics such as `sessions`.

|    Command    | Shortcut | Version |
| :-----------: | :------: | :-----: |
| quick\_status |    -qs   |  >2.9.x |

| option |    parameters    | description                                                                                                                                                                                                                                                                                                                                               | required |
| :----: | :--------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------: |
|  `-p`  | `<profile_name>` | supply profile name parameter to show quick\_status.                                                                                                                                                                                                                                                                                                      |    no    |
|  `-w`  |    `<seconds>`   | watch command. will continuously check the status of your node until <kbd>q</kbd> is pressed. *Note*: You should **not** use the <kbd>ctrl</kbd>-<kbd>c</kbd> to exit as it may cause your keyboard to stop echoing output to your terminal. If this does happen, you can simply exit the terminal session and log back in to correct the display issues. |    no    |

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-25)

* Help screen

```
sudo nodectl quick_status help  
```

* Show all profiles

```
sudo nodectl quick_status
```

* Show status of profile named `dag-l0`

```
sudo nodectl quick_status -p dag-l0
```

### sec[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#sec) <a href="#sec" id="sec"></a>

***

The **`sec`** command does not take any parameters.

sec = security

It displays the basic security elements of your node. It displays parsed elements from the `auth.log` file on your Debian operating system.

Following the table formatted output, nodectl will display a list of `date` -> `ip address` of external access requests against your node.

{% hint style="info" %}
**note**

The results will be based off the current and last "rolled" auth.log file.

This nodectl feature is currently not related to the Tessellation processes on a node. It is reviewing distribution level `auth` files.
{% endhint %}

example output

```
  LOG ERRORS          ACCESS ACCEPTED     ACCESS DENIED       MAX EXCEEDED        PORT RANGE
  10                  31                  41                  39                  1024-4000
```

<table><thead><tr><th width="161.77777099609375" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">Log Errors</td><td>How many ERROR statements were found.</td></tr><tr><td align="right">Access Accepted</td><td>Count of how many logins were requested and accepted.</td></tr><tr><td align="right">Access Denied</td><td>Count of how many Invalid logins were found.</td></tr><tr><td align="right">Max Exceeded</td><td>Count of how many Invalid logins were blocked due to excessive attempts.</td></tr><tr><td align="right">Port Range</td><td>What the minium and maximum port range for the denied attempts were identified.</td></tr><tr><td align="right">Since</td><td>The creation date of the last auth.log that was reviewed.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-26)

* Help screen

```
sudo nodectl sec help
```

* Execute the sec command

```
sudo nodectl sec
```

### show\_cpu\_memory[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_cpu_memory) <a href="#show_cpu_memory" id="show_cpu_memory"></a>

***

The **`show_cpu_memory`** command does not take any parameters.

nodectl will assess the CPU and memory to determine the percentage of usage detected.

To provide more reliable results, nodectl will perform 10 iterations of checking CPU and memory usage before averaging the results and displaying them.

|      Command      | Shortcut |  Version |
| :---------------: | :------: | :------: |
| show\_cpu\_memory |   -scm   | >v2.13.x |

<table><thead><tr><th width="249.55560302734375" align="center">Output Header</th><th>Description</th></tr></thead><tbody><tr><td align="center">CURRENT CPU</td><td>The averaged results of all iterations.</td></tr><tr><td align="center">CURRENT MEMORY</td><td>The averaged results of all iterations.</td></tr><tr><td align="center">CPU</td><td>Is there a <code>PROBLEM</code> with the CPU utilization or is the utilization <code>OK</code></td></tr><tr><td align="center">MEMORY</td><td>Is there a <code>PROBLEM</code> with the memory utilization or is the utilization <code>OK</code></td></tr><tr><td align="center">THRESHOLD</td><td>The current percentage that may be utilized on the system before changing the value of the <code>CPU</code> or <code>MEMORY</code> header from <code>OK</code> to <code>PROBLEM</code>.</td></tr><tr><td align="center">Individual Iterations Results</td><td>Static values found before averaging the results</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-27)

* Help screen

```
sudo nodectl show_cpu_memory help
sudo nodectl -scm help
```

* Execute the `show_cpu_memory` command.

```
sudo nodectl show_cpu_memory
```

### show\_current\_rewards[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_current_rewards) <a href="#show_current_rewards" id="show_current_rewards"></a>

***

The **`show_current_rewards`** command takes several parameters.

Search the Constellation Backend explorer and pull the last 50 global snapshots.

The command will output a paginated list of DAG addresses and the amount of DAG accumulated per DAG address over the course of the time between the START SNAPSHOT timestamp listed and the END SNAPSHOT timestamp listed.

{% hint style="info" %}
**note**

This only pertains to global **MainNet** rewards.

This does not apply to IntegrationNet and TestNet rewards.
{% endhint %}

|         Command        | Shortcut | Version |
| :--------------------: | :------: | :-----: |
| show\_current\_rewards |   -scr   | >v2.x.x |

<table><thead><tr><th width="119.22216796875" align="center">option</th><th width="220.111083984375" align="center">parameters</th><th width="279.5556640625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>review the cluster related to the profile name in question.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-w</code></td><td align="center"><code>&#x3C;dag_wallet_address></code></td><td>DAG wallet on the cluster. Use this option if you are interested in an alternative node that is not the local node.</td><td align="center">no</td></tr><tr><td align="center"><code>-s</code></td><td align="center"><code>&#x3C;snapshot_history_size></code></td><td><strong>default</strong>: 50, The amount of snapshots to review.</td><td align="center">no</td></tr><tr><td align="center"><code>-np</code></td><td align="center">None</td><td>no pagination.</td><td align="center">no</td></tr><tr><td align="center"><code>--csv</code></td><td align="center">None</td><td>create csv (comma separated values) output file instead of printing output to the screen.</td><td align="center">no</td></tr><tr><td align="center"><code>--output</code></td><td align="center"><code>&#x3C;file_name></code></td><td><strong>requires</strong> <code>--csv</code> --> this can only be a filename. If you would like to have your output saved to an alternate location, you can update the configuration file's <code>upload</code> location, via the configure command.</td><td align="center">no</td></tr></tbody></table>

The `--output` option can only be a filename. If you would like to have your output saved to an alternate location, you can update the configuration file via the configure command.

`sudo nodectl configure`

If a wallet address is not specified the first known wallet address obtained from the configuration will be used. If a **-p** `<profile>` is specified, the defined profile wallet address will be used for the lookup against the profile specified.

If a **-s** `<snapshot_history_size>` is specified:

* The history size entered will be used.
* Must be between `10` and `375` snapshots.
* The default value is `50`.

{% hint style="info" %}
**note**

Currently this command only searches on the **MainNet Layer0 global Hypergraph** network.

If the **-w** `<dag_wallet_address>` is used, the **-p** `<profile_name>` will be ignored unless the profile fails to be present on the node (exist in the configuration).
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-28)

* Help screen

```
sudo nodectl show_current_rewards help
sudo nodectl -scr help
```

* If the **-p** `<profile>` if not specified, nodectl will use the first known profile.

```
sudo nodectl show_current_rewards
sudo nodectl show_current_rewards -p <profile_name>
```

* If the **-w** `<dag_address>` is specified, nodectl will the requested DAG address against the MainNet explorer.

```
sudo nodectl show_current_rewards -w <dag_address>
```

* If the **-np** is not specified nodectl will attempt to paginate the output to the current known screen height. create a csv file

```
sudo nodectl show_current_rewards --csv
```

* Create a csv file and put in the designated `uploads` directory with specified name.

```
sudo nodectl show_current_rewards --csv --output test.csv
```

### show\_node\_proofs[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_node_proofs) <a href="#show_node_proofs" id="show_node_proofs"></a>

***

The `show_node_proofs` command will display the current known snapshot proofs that this node is working on.

|       Command      | Shortcut |  Version |
| :----------------: | :------: | :------: |
| show\_node\_proofs |   -snp   | >v2.10.x |

|      option     |    parameters    | description                                                                                                                       |   required   |
| :-------------: | :--------------: | --------------------------------------------------------------------------------------------------------------------------------- | :----------: |
|       `-p`      | `<profile_name>` | which profile are you attempting to display the current node proofs from.                                                         | **required** |
| `-ni` \| `--ni` |       none       | By default, the `dag` command will paginate the output, the `-np` flag will force `no pagination` during command output printing. |      no      |

The command will display the `SnapShot Transaction ID` and `SnapShot Transaction Signature` for all proofs in the current consensus round that the node is participating in.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-29)

* Help screen

```
sudo nodectl show_node_proofs help
sudo nodectl -snp help
```

* Execute `show_node_proofs`.

```
sudo nodectl show_node_proofs -p <profile_name>  
sudo nodectl -snp -p <profile_name>  
```

* Execute `show_node_proofs` without pagination.

```
sudo nodectl show_node_proofs -p <profile_name> --ni 
sudo nodectl -snp -p <profile_name> --ni 
```

### show\_node\_states[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_node_states) <a href="#show_node_states" id="show_node_states"></a>

***

The **`show_node_states`** command does not take any parameters.

This command displays the list of the known node States that you may find on the Cluster or that nodectl defines when not on the cluster.

|       Command      | Shortcut | Version |
| :----------------: | :------: | :-----: |
| show\_node\_states |   -sns   |  >2.x.x |

**nodectl only states**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#nodectl-only-states)

<table><thead><tr><th width="165.66668701171875">State</th><th width="89.888916015625" align="center">Abv</th><th>Description</th></tr></thead><tbody><tr><td>ApiNotReady</td><td align="center">ar</td><td>shown if nodectl can not reach the node's internal API server.</td></tr><tr><td>ApiNotResponding</td><td align="center">anr</td><td>show if the node running Tessellation is unable to send or receive API requests.</td></tr><tr><td>SessionNotFound</td><td align="center">snf</td><td>shown if nodectl can not read the node's session via the internal API server.</td></tr><tr><td>SessionIgnored</td><td align="center">si</td><td>shown if nodectl is not online and there is not a session to display.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-30)

* Help screen

```
sudo nodectl show_node_states help
```

* Execute the show\_node\_states command

```
sudo nodectl show_node_states
```

* Execute using shortcut option command

```
sudo nodectl -sns
```

### status[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#status) <a href="#status" id="status"></a>

***

The **`status`** command takes a single **optional** parameter.

**Status** will review the current status of your node.

If the `-p` option is used with the `<profile_name>`, only that profile's status will appear. If the `status` command is called without the `-p` option, all profiles will be shown.

| Command | Shortcut | Version |
| :-----: | :------: | :-----: |
|  status |    -s    |  >1.x.x |

<table><thead><tr><th width="85.88885498046875" align="center">option</th><th width="148.88885498046875" align="center">parameters</th><th width="389.3333740234375">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>supply profile name parameter to show status.</td><td align="center">no</td></tr><tr><td align="center"><code>-w</code></td><td align="center"><code>&#x3C;seconds></code></td><td>watch command. will continuously check the status of your node until <kbd>q</kbd> is pressed. <em>Note</em>: You should <strong>not</strong> use the <kbd>ctrl</kbd>-<kbd>c</kbd> to exit as it may cause your keyboard to stop echoing output to your terminal. If this does happen, you can simply exit the terminal session and log back in to correct the display issues. Available in version >v2.9.0</td><td align="center">no</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-31)

* Help screen

```
sudo nodectl status help  
```

* Show all profiles

```
sudo nodectl status
```

* Show status of profile named `dag-l0`

```
sudo nodectl status -p dag-l0
```

<table><thead><tr><th width="141.77783203125" align="right">Title</th><th>Description</th></tr></thead><tbody><tr><td align="right">Service</td><td>What is the status of the service that runs this profile.</td></tr><tr><td align="right">Join State</td><td>The state that the node is seen by the cluster when online.</td></tr><tr><td align="right">Profile</td><td>Which profile is being reported on.</td></tr><tr><td align="right">Public API TCP</td><td>The TCP port configured that is open to the public for API calls.</td></tr><tr><td align="right">P2P API TCP</td><td>The TCP port configured that is used for gossip peer to peer API communications.</td></tr><tr><td align="right">CLI API TCP</td><td>The TCP port configured that is used for internal API calls only.</td></tr><tr><td align="right">Current Session</td><td>What is the <strong>session</strong> number being reported on the cluster.</td></tr><tr><td align="right">Found Session</td><td>What is the <strong>session</strong> number seen by the node. If it does not match the Current Session, the node is not properly connected to the actual cluster.</td></tr><tr><td align="right">On Network</td><td>Shows <code>True</code> or <code>False</code> if the node is found on the cluster.</td></tr></tbody></table>

### sync\_node\_time[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#sync_node_time) <a href="#sync_node_time" id="sync_node_time"></a>

***

The **`sync_node_time`** command will update the node's underlining Linux Debian distribution's datetime clock. It will use the NTP service installed during nodectl installation to force an update of the node's clock.

This command displays the list of the known node States that you may find on the Cluster or that nodectl defines when not on the cluster.

|      Command     | Shortcut | Version |
| :--------------: | :------: | :-----: |
| sync\_node\_time |          | >2.14.x |

| option | parameters | description                           | required |
| :----: | :--------: | ------------------------------------- | :------: |
|  `-v`  |    none    | Sync the node's time in verbose mode. |    no    |

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-32)

* Help screen

```
sudo nodectl sync_node_time help
```

* Execute the sync\_node\_time command

```
sudo nodectl sync_node_time
```

* Execute using verbose mode

```
sudo nodectl sync_node_time -v
```

### update\_seedlist[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#update_seedlist) <a href="#update_seedlist" id="update_seedlist"></a>

***

The **`update_seedlist`** command does not take any parameters.

|      Command     | Shortcut | Version |
| :--------------: | :------: | :-----: |
| update\_seedlist |   -usl   |  v2.x.x |

<table><thead><tr><th width="95.88885498046875" align="center">option</th><th width="149.22222900390625" align="center">parameters</th><th width="391">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you seeking the update seed list.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

The **`update_seedlist`** command retrieves the latest seed list from the Constellation Network repositories. This command can be used if your node is unable to authenticate and, therefore, cannot connect to the network.

Using the `check_seedlist` command, a node Operator can confirm if the node is seen on the access lists; if not, issue the `update_seedlist` command to attempt to correct the issue.

{% hint style="warning" %}
**caution**

If you update the seed list and still receive a `False`, you may need to contact a Constellation Network support Administrator for further help. This can be done by accessing the Constellation Network official Discord server.
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-33)

* Help screen

```
sudo nodectl update_seedlist help
```

* Execute the update\_seedlist command

```
sudo nodectl update_seedlist
```

### update\_version\_object[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#update_version_object) <a href="#update_version_object" id="update_version_object"></a>

***

The nodectl utility maintains a version object file in the background, running as a service and updating every 2 minutes.

|         Command         | Shortcut | Version |
| :---------------------: | :------: | :-----: |
| update\_version\_object |          |  v2.x.x |

<table><thead><tr><th width="118.111083984375" align="center">option</th><th width="99" align="center">parameters</th><th width="392.77783203125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-v</code></td><td align="center"></td><td>This option can be used to verify that the contents of the versioning object is valid and contains the proper key pair values..</td><td align="center"><strong>optional</strong></td></tr><tr><td align="center"><code>--force</code></td><td align="center"></td><td>The version object will not be updated if it has already been updated within the last 2 minutes from when the command was issued. If the <code>--force</code> option is utilized, the version object file will be forced to update regardless of timing.</td><td align="center"><strong>optional</strong></td></tr><tr><td align="center"><code>--print</code></td><td align="center"></td><td>This option will print the contents of the version object to the console.</td><td align="center"><strong>optional</strong></td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-34)

* Help screen

```
sudo nodectl update_version_oject help
```

* Force an update to the versioning object.

```
sudo nodectl update_version_object --force  
```

* Verify the versioning object.

```
sudo nodectl update_version_object -v  
```

* Print the versioning object.

```
sudo nodectl update_version_object --print
```

### verify\_nodectl[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#verify_nodectl) <a href="#verify_nodectl" id="verify_nodectl"></a>

***

The **`verify_nodectl`** command is a *special* command that attempts to authenticate the nodectl binary with a signature file located on the official GitHub repository of nodectl.

This command will fetch the public key, digital signature file, and digital signature hash from the official Github repository. It will then use those files to hash the `nodectl` binary and produce a `binary hash` file to compare with that found on the Github respository.

If the hashes match, we are rest assured our nodectl is authentic.

{% hint style="danger" %}
**caution**

A man-in-the-middle (MITM) attack occurs when a hacker secretly intercepts communication between two parties or systems. The hacker, acting as a "middleman," can intercept the information and potentially impersonate files from nodectl's GitHub repository.

To avoid a MITM attack, it is crucial to manually access the GitHub repository and review the public key and digital signature files for verification.
{% endhint %}

<table><thead><tr><th width="211.77777099609375" align="center">HEADERS</th><th>Description</th></tr></thead><tbody><tr><td align="center">PULBIC KEY</td><td>The publicly available key used to decrypt the signature file that was created by a <code>private key</code>. The private key is owned by Constellation Network and not available or accessible.</td></tr><tr><td align="center">BINARY HASH</td><td>The hash created by using the public key to hash the <code>nodectl</code> binary.</td></tr><tr><td align="center">DIGITAL SIGNATURE</td><td>A copy of the hash value that should be identical to the BINARY HASH if the nodectl binary is valid.</td></tr><tr><td align="center">VERIFICATION RESULT</td><td>This will either be a <code>green</code> success or <code>red</code> failure.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-35)

* Verify the nodectl binary

```
sudo nodectl verify_nodectl
```

## :gear: Distribution Operations[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-distribution-operations) <a href="#distribution-operations" id="distribution-operations"></a>

### change\_ssh\_port[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#change_ssh_port) <a href="#change_ssh_port" id="change_ssh_port"></a>

***

The **`change_ssh_port`** command is a *special* command that works on the Debian distribution level. For added security, it is **recommended** that your run your **SSH** remote access through a non-commonly known port number. In the case of the **ssh** protocol, a port that is different from port `22`.

You should use an unused port between `1024` and `65535`.

<table><thead><tr><th width="107" align="center">option</th><th width="145.22222900390625" align="center">parameters</th><th width="363.666748046875">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>--port</code></td><td align="center"><code>&#x3C;port number></code></td><td>Which port number would you like to change your SSH port for use?</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-36)

* Help file

```
sudo nodectl change_ssh_port help
```

* Change SSH TCP port to port `4242`

```
sudo nodectl change_ssh_port --port 4242
```

### disable\_root\_ssh[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#disable_root_ssh) <a href="#disable_root_ssh" id="disable_root_ssh"></a>

***

The **`disable_root_ssh`** command is a *special* command that works on the Debian distribution level. It will disable the ability for access to the **root** user, via remote access.

**SECURITY**

It is **recommended** to have the **root** user's remote access (inbound/ingress) **disabled**. The only way the root user should be accessed is through the **nodeadmin** user account.

This is done by issuing a `sudo` in front of the **`nodectl`** command.

{% hint style="info" %}
**note**

If the Node Operator used the recommended settings during installation, this process should have already been completed, and no Node Operator intervention should be needed.
{% endhint %}

**Example**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#example)

```
sudo nodectl disable_root_ssh
```

### enable\_root\_ssh[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#enable_root_ssh) <a href="#enable_root_ssh" id="enable_root_ssh"></a>

***

The **`enable_root_ssh`** command is a *special* command that works on the Debian distribution level. It will enable the ability for access to the **root** user, via remote access.

**SECURITY**

It is **recommended** to have the **root** user's remote access (inbound/ingress) **disabled**. The only way the root user should be accessed is through the **Node Administrator's** user account.

This command can be used to reverse this security setting configured via nodectl's installation process.

**Example**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#example-1)

```
sudo nodectl enable_root_ssh
```

### reboot[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#reboot) <a href="#reboot" id="reboot"></a>

***

The **`reboot`** command does not take any parameters and offers the Node Operator the ability to reboot their physical or VPS (Virtual Private Server in the cloud) via a warm boot.

**Recommended**

For node Operation this command is **preferred/recommended** over normal operating system reboot command.

When issued, the nodectl `reboot` command will gracefully leave the profiles defined in the nodectl configuration file before rebooting the node.

**dictionary**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#dictionary-2)

<table><thead><tr><th width="147.3333740234375">term</th><th>definition</th></tr></thead><tbody><tr><td>warm boot</td><td>restart your entire system via software</td></tr><tr><td>cold boot</td><td>physical start and stop of your Server or VPS</td></tr></tbody></table>

* Help screen

```
sudo nodectl reboot help
```

* Execute the reboot command

```
sudo nodectl reboot
```

### upgrade\_vps[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#upgrade_vps) <a href="#upgrade_vps" id="upgrade_vps"></a>

***

The `upgrade_vps` command provides a more user-friendly, non-technical way to ensure your VPS (or bare metal server) is up-to-date with the latest packages, utilities, security patches, and core distribution elements (such as kernels, services, etc.).

|    Command   | Shortcut | Version |
| :----------: | :------: | :-----: |
| upgrade\_vps |          | v2.14.x |

<table><thead><tr><th width="105.888916015625" align="center">option</th><th width="110.6666259765625" align="center">parameters</th><th width="400.5555419921875">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>--ni</code></td><td align="center"></td><td>Issue an upgrade in non-interactive mode. nodectl will not ask any questions and will automatically select the default recommended options. <em>This does not apply to options marked in purple boxes</em>.</td><td align="center">no</td></tr><tr><td align="center"><code>--reboot</code></td><td align="center"></td><td>Force nodectl to reboot the node (if required) without interaction from the Node Operator.</td><td align="center">no</td></tr></tbody></table>

The feature will offer you instructions on how to handle any interactive requirements, including handling `purple boxes`.

{% hint style="warning" %}
**caution**

During an upgrade, the Debian distribution may require the Node Operator to handle certain service configurations interactively.

If this occurs, a purple box will appear with options and default settings already selected for you. Since we do not modify any default Debian distribution settings to run our node, you can accept the defaults. To do this, use the <kbd>Tab</kbd> key to navigate to the `OK` or `Confirm` boxes and then press <kbd>Enter</kbd> to accept.

This feature updates the package lists to ensure the VPS's Linux distribution is aware of the latest available packages, followed by upgrading and installing any necessary elements.

The `apt update` and `apt upgrade` commands will be executed through nodectl, eliminating the need for the user to run them directly from the Linux distribution.
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-38)

* Help screen

```
sudo nodectl upgrade_vps help
```

* Execute an update and upgrade.

```
sudo nodectl upgrade_vps
```

* Execute an update and upgrade in non-interactive mode.

```
sudo nodectl upgrade_vps --ni
```

* Execute an update and upgrade with a reboot.

```
sudo nodectl upgrade_vps --reboot
```

### uptime[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#uptime) <a href="#uptime" id="uptime"></a>

***

The `uptime` command provides the amount of time the cluster, the node itself, and the system supporting the node has been up and running.

| Command | Shortcut | Version |
| :-----: | :------: | :-----: |
|  uptime |          | v2.14.x |

<table><thead><tr><th width="91.44439697265625" align="center">option</th><th width="151.33331298828125" align="center">parameters</th><th width="372">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>The profile to review the <code>uptime</code> parameters from.</td><td align="center">no</td></tr></tbody></table>

<table><thead><tr><th width="158.4444580078125" align="center">HEADERS</th><th>Description</th></tr></thead><tbody><tr><td align="center">Cluster</td><td>How long the cluster the profile(s) are connected to has been up.</td></tr><tr><td align="center">Node</td><td>How long has the node been on the cluster for the given profile(s).</td></tr><tr><td align="center">System</td><td>How long has the VPS been up and running.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-39)

* Help screen

```
sudo nodectl uptime help
```

* Execute an uptime request

```
sudo nodectl uptime
```

* Execute an uptime request against the profile named `dag-l0`.

```
sudo nodectl uptime -p dag-l0
```

### whoami[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#whoami) <a href="#whoami" id="whoami"></a>

***

The **`whoami`** command displays the external ip address of your node.

Optionally, you can use the optional `-id` option to map a `node ID` to an `IP address` on a cluster.

The `external IP` of your node is the address that allows your node to communicate with the rest of the systems on the Internet.

This is the address your node will use to communicate with the other decentralized nodes that make up the Hypergraph and/or metagraphs. Your node will attempt to establish communications with other nodes through peer-to-peer (p2p) connections and public API requests.

| option |    parameters    | description                                                                                                 | required |
| :----: | :--------------: | ----------------------------------------------------------------------------------------------------------- | :------: |
|  `-p`  | `<profile_name>` | In order to use the **`-id`** option, nodectl will need to know which profile to review the `node ID` from. |    no    |
|  `-id` | `<full_node_id>` | p12 public key `node ID` to lookup.                                                                         |    no    |

{% hint style="warning" %}
**warning**

The -id option followed by the full node ID requested, will lookup the node ID and return its IP address. This command will require the `-p` with the profile name of the network you are searching.
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-40)

* Help file

```
sudo nodectl whoami help
```

* Show external ip

```
sudo nodectl whoami
```

* Show ip address of a node by `node ID` from a cluster via a profile this node is connected to

```
sudo nodectl whoami -p <profile> -id <node_id>
```

## :gear: p12 Operations[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-p12-operations) <a href="#p12-operations" id="p12-operations"></a>

### create\_p12[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#create_p12) <a href="#create_p12" id="create_p12"></a>

***

The **`create_p12`** command will create a p12 file and place it on the system in a location of the Operator's choosing.

If a location is not supplied, the global p12 configured location will be used by default.

If a username is not supplied, the global p12 username will be used by default.

|   Command   | Shortcut |  Version |
| :---------: | :------: | :------: |
| create\_p12 |          | >v2.12.0 |

<table><thead><tr><th width="121.44439697265625" align="center">option</th><th width="136.88885498046875" align="center">parameters</th><th width="353.22216796875">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>--file</code></td><td align="center"><code>&#x3C;string></code></td><td>What would you like to call the new p12 keystore file?</td><td align="center">no</td></tr><tr><td align="center"><code>--location</code></td><td align="center"><code>&#x3C;file_path></code></td><td>which profile are you seeking the update seed list.</td><td align="center">no</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-41)

show help screen

```
sudo nodectl create_p12 help
```

Build a new p12 file using the global configured Node Administrator username:

```
sudo nodectl create_p12  
```

Build a new p12 file using a keystore named `test.p12` and the file location `/tmp/my_new_p12_files`.

```
sudo nodectl create_p12 --file test.p12 --location /tmp/my_new_p12_files/  
```

### dag[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#dag) <a href="#dag" id="dag"></a>

***

The **`dag`** command will retrieve your node's wallet information for your local node.

You can specify another node by supplying the `-w` (wallet) option followed by the `dag_wallet` of the node on the cluster that is targeted.

Following general output details about your wallet, nodectl will query the DAG explorer API and retrieve details of the last 350 snapshot entries. This level of detail can be excluded by using the `-b` option.

<table><thead><tr><th width="115.888916015625" align="center">option</th><th width="155.5555419921875" align="center">parameters</th><th width="333.5555419921875">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you seeking the wallet information from.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-w</code></td><td align="center"><code>&#x3C;dag_wallet></code></td><td>retrieve remote by target wallet address.</td><td align="center">no</td></tr><tr><td align="center"><code>--balance</code></td><td align="center">Noe</td><td>show balance of DAG wallet only</td><td align="center">no</td></tr><tr><td align="center"><code>-b</code></td><td align="center"></td><td>if the <code>brief</code> option is included a detailed view of the wallet transactions will be excluded from the command's output.</td><td align="center">no</td></tr><tr><td align="center"><code>-np</code></td><td align="center"></td><td>By default, the <code>dag</code> command will paginate the output, the <code>-np</code> flag will force <code>no pagination</code> during command output printing.</td><td align="center">no</td></tr><tr><td align="center"><code>--csv</code></td><td align="center"></td><td>Export the file to default dated file name to the default uploads (see configuration file) or based on the <code>--output</code> option (below).</td><td align="center">no</td></tr><tr><td align="center"><code>--output</code></td><td align="center"><code>&#x3C;file_name></code></td><td><strong>requires</strong> <code>--csv</code> --> this can only be a filename. If you would like to have your output saved to an alternate location, you can update the configuration file's <code>upload</code> location, via the configure command.</td><td align="center">no</td></tr></tbody></table>

The `--output` option can only be a filename. If you would like to have your output saved to an alternate location, you can update the configuration file via the configure command.

<table><thead><tr><th width="141.77783203125" align="right">Output Header</th><th>Description</th></tr></thead><tbody><tr><td align="right">IP ADDRESS</td><td>External IP address of the node</td></tr><tr><td align="right">P12 Filename</td><td>Name of the p12 private key file that details were extracted from</td></tr><tr><td align="right">P12 Location</td><td>Directory location of the p12 file that details were extracted from</td></tr><tr><td align="right">DAG Address</td><td>DAG address extracted from the p12 file requested</td></tr><tr><td align="right">$DAG Balance</td><td>Balance of DAG tokens found connected to this wallet</td></tr><tr><td align="right">$USD Value</td><td>$DAG Balance converted to USD</td></tr><tr><td align="right">$DAG Price</td><td>Current value of a $DAG token in USD</td></tr></tbody></table>

<table><thead><tr><th width="167.5555419921875" align="right">SNAPSHOT HEADER</th><th>Description</th></tr></thead><tbody><tr><td align="right">Timestamp</td><td>The snapshot timestamp</td></tr><tr><td align="right">Ordinals</td><td>The ordinal of the snapshot</td></tr><tr><td align="right">Rewards</td><td>$DAG reward found for this wallet in the snapshot data</td></tr><tr><td align="right">Total Rewards</td><td>Accumulation of the rewards found during this period of time</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-42)

* Help Screen

```
sudo nodectl dag -p dag-l0 help  
```

* Retrieve local dag wallet details.

```
sudo nodectl dag -p dag-l0
```

* Retrieve dag wallet information of a node on the cluster with the DAG wallet address of `DAG0911111111111111111111111111111111111`
* (*fake address for demonstration purposes only*).

```
sudo nodectl dag -w DAG0911111111111111111111111111111111111 -p dag-l0
```

* Retrieve dag wallet information of a node on the cluster without snapshot details.

```
sudo nodectl dag -p dag-l0 -b
```

* Retrieve the node's dag wallet without pagination.

```
sudo nodectl dag -p dag-l0 -np 
```

### export\_private\_key[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#export_private_key) <a href="#export_private_key" id="export_private_key"></a>

***

The **`export_private_key`** command does not take any parameters.

`export_private_key` will expose your private key from your p12 file and print it to the screen.

{% hint style="danger" %}
**danger**

Do not share this private key with anyone that you do not completely trust with your financial assets.
{% endhint %}

<table><thead><tr><th width="82.5555419921875" align="center">option</th><th width="149.888916015625" align="center">parameters</th><th width="382.5555419921875">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you seeking the private key from.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

nodectl is designed to work with `p12` private key files that support Constellation Network `v2` keys. If you are running an older node, please refer to the v1 to v2 migration document.

Import the private key produced by this command into your **StarGazer wallet** (or other) in order to control your node's wallet.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-43)

* Help screen

```
sudo nodectl export_private_key help
```

* Expose your private key

```
sudo nodectl export_private_key -p <profile_name>
```

***

### nodeid[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#nodeid) <a href="#nodeid" id="nodeid"></a>

***

The **`nodeid`** command will retrieve your node's public key (nodeid) for either your local node or another node by supplying the `-t` (target) option followed by the `ip_address` of the node on the cluster that is targeted.

| Command | Shortcut | Version |
| :-----: | :------: | :-----: |
|  nodeid |    id    | >v2.x.x |

<table><thead><tr><th width="101.44439697265625" align="center">option</th><th width="150.5555419921875" align="center">parameters</th><th width="370.2222900390625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you seeking the nodeid from.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-t</code></td><td align="center"><code>&#x3C;ip_address</code></td><td>retrieve remote by target IP address.</td><td align="center">no</td></tr><tr><td align="center"><code>-l</code></td><td align="center"></td><td>Display the node ID in long format.</td><td align="center">no</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-44)

* Help Screen

```
sudo nodectl nodeid help  
```

* Retrieve local node ID

```
sudo nodectl nodeid
```

* Retrieve node ID of a node on the cluster with the IP address of `113.113.113.113`.

```
sudo nodectl nodeid -t 113.113.113.113
```

### nodeid2dag[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#nodeid2dag) <a href="#nodeid2dag" id="nodeid2dag"></a>

***

The **`nodeid2dag`** command will take in a required public node id or public key ( `128 byte` hexadecimal string ) and converts it into its associated Constellation Network DAG wallet address.

<table><thead><tr><th width="84.77777099609375" align="center">option</th><th width="109.888916015625" align="center">parameters</th><th width="424.8887939453125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center">None</td><td align="center"><code>&#x3C;node_id></code></td><td>128 byte node ID (public key) to derive DAG wallet from.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

{% hint style="warning" %}
**warning**

The `<node_id>` is required and does not have a related option.
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-45)

* Help file

```
sudo nodectl nodeid2dag help
```

* Convert node ID to DAG wallet

```
sudo nodectl nodeid2dag <node_id>
```

{% hint style="info" %}
**note**

Due to the cryptographic nature of a DAG wallet, you can only 1-way hash a node ID to the DAG wallet, and not visa-versa.
{% endhint %}

### passwd12[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#passwd12) <a href="#passwd12" id="passwd12"></a>

***

The **`passwd12`** command does not take any parameters.

This command offers the Node Operator the ability to change their p12 keystore file's passphrase through an interactive experience.

{% hint style="warning" %}
**warning**

**`passwd12`** will not update the cn-config.yaml file.

Please run the `sudo nodectl configure` command to update your passphrase (if necessary) after completing the passphrase update utility command.
{% endhint %}

{% hint style="danger" %}
**IMPORTANT**

**BACKUP** your **p12** prior to using the **passwd12** command
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-46)

* Help File

```
sudo nodectl passwd12 help
```

* Go through the p12 passphrase change process

```
sudo nodectl passwd12
```

### show\_p12\_details[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_p12_details) <a href="#show_p12_details" id="show_p12_details"></a>

***

The **`show_p12_details`** command will show the nodes p12 keystore details.

|       Command      | Shortcut |  Version |
| :----------------: | :------: | :------: |
| show\_p12\_details |   -spd   | >v2.12.x |

<table><thead><tr><th width="81.44439697265625" align="center">option</th><th width="150.88885498046875" align="center">parameters</th><th width="384.7777099609375">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you seeking the private keystore details from.</td><td align="center"><strong>yes</strong></td></tr></tbody></table>

{% hint style="info" %}
**NOTE**

This command will not show the private key of our p12's primary Constellation Network wallet.
{% endhint %}

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-47)

* Help File

```
sudo nodectl show_p12_details help
```

* View p12 details for the profile `dag-l0`.

```
sudo nodectl show_p12_details -p dag-l0
sudo nodectl -spd -p dag-l0
```

## :gear: Configuration[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-configuration) <a href="#configuration" id="configuration"></a>

### configure[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#configure) <a href="#configure" id="configure"></a>

***

The **`configure`** command will attempt to guide the Node Operator through the **creating** or **editing** the **`cn-config.yaml`** file.

The `cn-config.yaml` file is an extremely important file that nodectl uses to determine how it should control and configure your Constellation Network Validator Node.

The `configure` command will offer a relatively detailed explanation of all configuration options, unless the `-a` (*advanced*) option is used.

*nodectl will confirm if you want to enter advanced mode if not specified.*

<table><thead><tr><th width="80.33331298828125" align="center">option</th><th width="94.22222900390625" align="center">parameters</th><th width="444.888916015625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-a</code></td><td align="center"></td><td>enable advanced mode.</td><td align="center">no</td></tr><tr><td align="center"><code>-e</code></td><td align="center"></td><td>enter directly into <strong>edit</strong> configuration mode for existing configurations.</td><td align="center">no</td></tr><tr><td align="center"><code>-ep</code></td><td align="center"></td><td>enter directly into <strong>edit profile</strong> configuration mode for existing configurations. >v2.9.0</td><td align="center">no</td></tr><tr><td align="center"><code>-cb</code></td><td align="center"></td><td>automatically c)onfirm that we understand the location of the b)ackup and that it was backed up. <em>nodectl wants to make sure you know that there is a copy of your configuration on the node for security purposes.</em></td><td align="center">no</td></tr><tr><td align="center"><code>-n</code></td><td align="center"></td><td>enter directly into <strong>new</strong> configuration mode.</td><td align="center">no</td></tr></tbody></table>

In new configuration mode, nodectl will offer you two (2) options

1. Predefined Profile settings
2. Manual Configuration

In edit configuration mode, nodectl will offer you several options

1. Edit Profiles
2. Edit Global Settings

See the configuration guide document for more details on this command.

**Examples**

* Help screen

```
sudo nodectl configure help 
```

* Enter default configuration

```
sudo nodectl configure  
```

* Enter configurator directly to new config options

```
sudo nodectl configure -n  
```

* Enter configurator directly to edit config options

```
sudo nodectl configure -e  
```

* Enter configurator directly to edit config options in advanced mode

```
sudo nodectl configure -a -e  
```

* Enter configurator directly to edit config options in detailed mode while confirming the backup location at the same time.

```
sudo nodectl configure -a -e -cb
```

### install[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#install) <a href="#install" id="install"></a>

***

The **`install`** command will build a new node for you from a blank fresh new VPS.

|          option          |                            parameters                           | description                                                                                                                                                                            |   required   |
| :----------------------: | :-------------------------------------------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------: |
|        `--normal`        |                                                                 | If this option is supplied, during the interactive installation process, nodectl will skip the request to utilize the `--quick-install` option and confirm a normal installation only. | **optional** |
|     `--quick-install`    |                                                                 | If this option is supplied, during the interactive installation process, nodectl will skip the request to utilize the `--normal` option and confirm a quick-install installation only. | **optional** |
|    `--cluster-config`    | `mainnet`, `integrationnet`, `testnet`, `dor-metagraph-mainnet` | Setup your new node to connect with one of the several pre-defined configurations.                                                                                                     | **optional** |
|        `--confirm`       |                                                                 | Auto confirm default options.                                                                                                                                                          | **optional** |
|       `--override`       |                                                                 | Install nodectl over itself, do not remove existing files prior to installation.                                                                                                       | **optional** |
|       `--username`       |                          `<user_name>`                          | Setup your new node with the supplied username verses the default username of `nodeadmin`.                                                                                             | **optional** |
|     `--user-password`    |                            `<string>`                           | Setup your new node with the following VPS username password. You will not be prompted for it during the installation.                                                                 | **optional** |
|       `--p12-name`       |                            `<string>`                           | Setup your new node with the following p12 keystore name, verses the default p12 name of `nodeadmin.p12`.                                                                              | **optional** |
|    `--p12-passphrase`    |                            `<string>`                           | Setup your new node with the following p12 keystore passphrase. You will not be prompted for it during the installation.                                                               | **optional** |
|       `--p12-alias`      |                            `<string>`                           | Setup your new node with the following p12 keystore alias, verses the default alias of `nodeadmin-alias`.                                                                              | **optional** |
| `--p12-destination-path` |                      `<path-to-directory>`                      | Setup your new node to place the newly created p12 keystore in the fully qualified path location provided, verses the default location equal to `/home/<username>/tessellation/`.      | **optional** |
|  `--p12-migration-path`  |                  `<path-to-directory-and-file>`                 | Setup your installation to **migrate** in an existing p12 keystore file. This should include the full path to the file and the file name                                               | **optional** |

See the installation guide document(s) for more details on this command.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-49)

* Default installation

```
sudo nodectl install  
```

* Default normal installation

```
sudo nodectl install --normal  
```

* Default quick installation

```
sudo nodectl install --quick-install
```

* Default installation supplying the user password and p12 passphrase on the command line.

```
sudo nodectl install --user bob --password mypassword
```

* Default quick install installation supplying the user password and p12 passphrase on the command line.

```
sudo nodectl install --quick-install --user bob --password mypassword
```

* Default quick install installation supplying the user, user password, p12 name, p12 alias, and p12 passphrase on the command line.

```
sudo nodectl install --quick-install --user bob --password mypassword --p12-name myp12name.p12 --p12-passphrase myp12passphrase --p12-alias myp12aliasname
```

* Default quick install installation supplying the user, user password, **existing p12 for migration**, and p12 passphrase on the command line.

```
sudo nodectl install --quick-install --user bob --password mypassword  --p12-passphrase myp12passphrase --p12-alias myp12aliasname --p12-migration-path /home/ubuntu/myp12migrationfile.p12
```

### ipv6[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#ipv6) <a href="#ipv6" id="ipv6"></a>

***

The **`ipv6`** command handles enablement, disablement, and the ability to review the status of the IPv6 network configuration stack on the VPS that your node is running on.

| Command | Shortcut |  Version |
| :-----: | :------: | :------: |
|   ipv6  |          | >v2.15.x |

There are three optional parameters; however, one of the three options is required.

<table><thead><tr><th width="143.66668701171875" align="center">option</th><th width="98.77777099609375" align="center">parameters</th><th width="370.888916015625">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>status</code></td><td align="center"></td><td>Show the status of the IPv6 network stack on the VPS.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>enable</code></td><td align="center"></td><td>Enable IPv6 on the VPS.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>disable</code></td><td align="center"></td><td>Disable IPv6 on the VPS.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>--ni</code></td><td align="center"></td><td>When used in conjunction with a required option, this will force the feature into <code>non-interactive</code> mode by-passing any questions and instead using the default options/answers</td><td align="center">no</td></tr></tbody></table>

When the `enable` or `disable` options are used, the `GRUB` and `sysctl` IPv6 configuration files will be altered.

{% hint style="danger" %}
**DANGER**

This command will manipulate non-Tessellation Constellation Network files on your VPS.
{% endhint %}

If the VPS was built without IPv6 during instantiation, this command will have no effect.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-50)

* Help screen

```
sudo nodectl ipv6 help  
```

* View the status of the IPv6 stack on the VPS.

```
sudo nodectl ipv6 status
```

* Enable IPv6.

```
sudo nodectl ipv6 enable
```

* Disable IPv6.

```
sudo nodectl ipv6 disable
```

### restore\_config[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#restore_config) <a href="#restore_config" id="restore_config"></a>

***

The **`restore_config`** command does not accept any options or parameters.

When executed, `restore_config` provides a list of previously backed-up configuration files, allowing you to select and restore the desired configuration.

{% hint style="warning" %}
**caution**

Please be diligent and exercise caution when restoring a configuration, as an invalid or incompatible configuration could corrupt your node or cause issues with nodectl's functionality.
{% endhint %}

nodectl will display the contents of your backup directory, identify any configuration files, and provide a list of available configurations for you to choose from.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-51)

* Help screen

```
sudo nodectl restore_config help  
```

* Stop profile named `dag-l0`

```
sudo nodectl restore_config
```

### uninstall[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#uninstall) <a href="#uninstall" id="uninstall"></a>

***

The **`uninstall`** command does not accept any options or parameters.

When executed, `uninstall` will remove all elements required to make your VPS into a Constellation Network node.

You will be provided the option to retain your `p12` keystore file. If this option is taken, the p12 keystore file(s) will be moved to a temporary directory for the Node Operator to use or backup as necessary, after the uninstallation is completed.

**caution**

This command will not remove non-Tessellation dependencies as they may be utilized by other programs or features on the VPS.

If you would like to remove these dependencies they will have to be removed manually.

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-52)

* Help screen

```
sudo nodectl uninstall help  
```

* uninstall the node.

```
sudo nodectl uninstall
```

### upgrade[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#upgrade) <a href="#upgrade" id="upgrade"></a>

***

The **`upgrade`** command is used to upgrade both Tessellation and nodectl backend files.

<table><thead><tr><th width="94.77777099609375" align="center">option</th><th width="137" align="center">parameters</th><th width="388">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>-w</code></td><td align="center"></td><td><strong>watch</strong> mode. This creates an upgrade that is less verbose, and saves time by not forcing the Node Operator to wait for all peer to peer connections to be established, instead once the node reaches a <code>state</code> where it is able to participate on the network, nodectl will skip watching for the remaining peers to connect and simply and safely continue the upgrade process, therefore saving time.</td><td align="center">no</td></tr><tr><td align="center"><code>--pass</code></td><td align="center"><code>&#x3C;passphrase></code></td><td>If the Node Operator chose to <code>hide</code> their passphrase by excluding it from the <code>configuration file</code>, you will need to supply it at the command line using this option.</td><td align="center">no</td></tr><tr><td align="center"><code>--ni</code></td><td align="center"></td><td>Non-Interactive. If you want to use the <code>upgrade</code> command with all the defaults chosen, nodectl will not ask any interactive questions.</td><td align="center">no</td></tr></tbody></table>

{% hint style="info" %}
**Just in Case**

In the event of the `--ni` is used, if nodectl identifies anything unusual, it still may disengage non-interactive mode and ask any necessary questions, in an attempt to avoid unexpected errors.

Please see the upgrade nodectl documentation for a detailed explanation of the command.
{% endhint %}

### upgrade\_nodectl[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#upgrade_nodectl) <a href="#upgrade_nodectl" id="upgrade_nodectl"></a>

***

The **`upgrade_nodectl`** command is a dedicated command used to upgrade the nodectl binary file.

Please see the upgrade\_nodectl documentation for a detailed explanation of the command.

|      Command     | Shortcut | Version |
| :--------------: | :------: | :-----: |
| upgrade\_nodectl |    N/A   | >v2.7.x |

<table><thead><tr><th width="82.5555419921875" align="center">option</th><th align="center">parameter</th><th width="345.4444580078125">description</th><th align="center">required</th></tr></thead><tbody><tr><td align="center"><code>-v</code></td><td align="center"><code>&#x3C;version></code></td><td>statically set the version you would like to <strong>upgrade</strong> or <strong>downgrade</strong> to.</td><td align="center">no</td></tr></tbody></table>

{% hint style="info" %}
*If* you attempt to downgrade nodectl to a version that is not backwards compatible, you may risk unexpected results. Please see upgrade\_path for more details on how to determine if a version is not backward compatible.
{% endhint %}

> **Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-53)
>
> * Help file
>
> ```
> sudo nodectl upgrade_nodectl help
> ```
>
> Copy
>
> * Upgrade nodectl
>
> ```
> sudo nodectl upgrade_nodectl
> ```
>
> Copy
>
> * Upgrade nodectl to version `v2.15.2`
>
> ```
> sudo nodectl upgrade_nodectl -v v2.15.2
> ```

### upgrade\_path[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#upgrade_path) <a href="#upgrade_path" id="upgrade_path"></a>

***

The **`upgrade_path`** command does not take any parameters and offers the Node Operator the ability to check their node's current nodectl version for upgrade path requirements.

If the node is not at the most current version of nodectl, this command will produce a warning. The warning will let the Node Administrator know what the next necessary upgrade version should be, and will show you upgrade path requirements.

See the upgrade path document for more details.

|    Command    | Shortcut | Version |
| :-----------: | :------: | :-----: |
| upgrade\_path |    -up   | >v2.7.x |

**Example Usage**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#example-usage)

* Help screen

```
sudo nodectl upgrade_path help
```

Copy

* Execute the upgrade\_path command

```
sudo nodectl upgrade_path
```

### validate\_config[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#validate_config) <a href="#validate_config" id="validate_config"></a>

***

The **`validate_config`** command will attempt to review your `cn-config.yaml` file for errors that may cause **unexpected** results when attempting to run your node.

|      Command     | Shortcut | Version |
| :--------------: | :------: | :-----: |
| validate\_config |   -val   | >v2.7.x |

In the event that nodectl finds discrepancies or errors in the **cn-config.yaml**, a table of errors and possible resolutions will be displayed as output.

### view\_config[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#view_config) <a href="#view_config" id="view_config"></a>

***

The **`view_config`** command will show a paginated view of the current `cn-config.yaml` file.

|    Command   | Shortcut | Version |
| :----------: | :------: | :-----: |
| view\_config |    -vc   | >v2.7.x |

<table><thead><tr><th width="90.3333740234375" align="center">option</th><th width="119" align="center">parameters</th><th width="407.888916015625">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>-np</code></td><td align="center"></td><td>By default, the <code>view_config</code> command will paginate the output, the <code>-np</code> flag will force <code>no pagination</code> during command output printing.</td><td align="center">no</td></tr></tbody></table>

## :gear: Troubleshooting[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#-troubleshooting) <a href="#troubleshooting" id="troubleshooting"></a>

### check\_versions[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#check_versions) <a href="#check_versions" id="check_versions"></a>

***

With the **`check_versions`** command, nodectl will go out and review the latest versions of both Constellation Network Tessellation and nodectl.

nodectl will review the current GitHub repo and compare it to the versions running on the node.

It will report back `True` or `False` based on whether the versions match.

|     Command     | Shortcut | Version |
| :-------------: | :------: | :-----: |
| check\_versions |    -cv   | >v2.x.x |

<table><thead><tr><th width="205.111083984375" align="right">Output Header</th><th>Description</th></tr></thead><tbody><tr><td align="right">Tess installed</td><td>What version of Tessellation was found on the node.</td></tr><tr><td align="right">Tess latest</td><td>What version of Tessellation was found in the current repository.</td></tr><tr><td align="right">Tess version match</td><td>Does the node match up to the repository?</td></tr><tr><td align="right">nodectl installed</td><td>What version of nodectl was found on the node.</td></tr><tr><td align="right">nodectl latest</td><td>What version of nodectl was found in the current repository.</td></tr><tr><td align="right">nodectl version match</td><td>Does the node match up to the repository?</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-54)

* Help menu

```
sudo nodectl check_versions help
```

* Execute the check\_versions command

```
sudo nodectl check_versions
```

### display\_snapshot\_chain[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#display_snapshot_chain) <a href="#display_snapshot_chain" id="display_snapshot_chain"></a>

***

The **`display_snapshot_chain`** command is an advanced command that will review your node's snapshots and verify that every snapshot hash has an accompanying hard link to the ordinal that it is associated with. If you have an invalid snapshot chain, your node will not function properly.

|          Command         | Shortcut |  Version |
| :----------------------: | :------: | :------: |
| display\_snapshot\_chain |          | >v2.14.0 |

<table><thead><tr><th width="102.55560302734375" align="center">option</th><th width="153.888916015625" align="center">parameters</th><th width="352.77783203125">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>Identify the appropriate layer0 profile to check against. nodectl will offer a list of known profiles if not supplied.</td><td align="center">no</td></tr><tr><td align="center"><code>-y</code></td><td align="center"></td><td>automatically confirm the request to check the snapshot chain</td><td align="center">no</td></tr></tbody></table>

### logs[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#logs) <a href="#logs" id="logs"></a>

***

The **`logs`** command will print out the contents of the logs that have been requested.

| Command | Alias |
| :-----: | :---: |
|   logs  |  log  |

<table><thead><tr><th width="93.66668701171875" align="center">option</th><th width="158" align="center">parameters</th><th width="363.5556640625">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>The name of the profile. This is important because (for example) the app.log shares the same log name for each profile. The Node Operator will need to specify which profile to review.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-l</code></td><td align="center"><code>&#x3C;log_name></code></td><td>Name of the log that you would like to review. see log types</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-g</code></td><td align="center"><code>&#x3C;word></code></td><td>filter out (<em>grep</em>) the word <code>&#x3C;word></code>. This is case insensitive.</td><td align="center">no</td></tr><tr><td align="center"><code>-f</code></td><td align="center"></td><td><code>follow</code> the log line by line. As a new line is added to the log during execution of user or program initiated elements that might print to the log file being monitored. To cancel out of the "-f" command you will simultaneously press and hold the control <code>ctrl key</code> on your keyboard and press the <code>c</code> key.</td><td align="center">no</td></tr></tbody></table>

#### **Syntax:**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#syntax)

```
sudo nodectl logs -p <profile_name> <log_name> [-g <grep_value>] [-f]
```

#### **Log Types**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#log-types)

| Log Name |
| :------: |
|    app   |
|   http   |
|  nodectl |

>

**Example**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#example-2)

* Request to follow the log app.log from the dag-l0 profile filtering out the word "error" from each line.

```
sudo nodectl logs -p dag-l0 -l app -g error -f
```

* Request to view the nodectl logs
  * *The nodectl log is a command request that carries an exception. This request to view the logs does not take the `-p <profile>` option.*

```
sudo nodectl logs -l nodectl
```

### prepare\_file\_download[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#prepare_file_download) <a href="#prepare_file_download" id="prepare_file_download"></a>

***

This command instructs nodectl to prepare your p12 keystore or another file of your choosing to be downloaded directly by the Node Administrator’s non-root account. This is a useful command for backup procedures.

Your p12 file(s) or the specified file will be located, copied to the root (beginning) of the Node Administrator’s user directory, and have its permissions changed to allow retrieval directly from the Node Administrator’s account.

Nodes built with recommended security practices cannot retrieve a p12 file or other files created by nodectl using the non-root user. This command provides a solution to this restriction.

|         Command         |  Version |
| :---------------------: | :------: |
| prepare\_file\_download | >v2.14.x |

<table><thead><tr><th width="111.4444580078125" align="center">option</th><th width="177.5555419921875" align="center">parameters</th><th width="331.2222900390625">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>--type</code></td><td align="center"><code>&#x3C;p12_file></code></td><td>This option will locate all <code>p12</code> files associated with your node. If the optional <code>-p</code> parameter is included with the command, <strong>only</strong> the p12 associated with the profile requested will be moved and setup for access.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"></td><td align="center">file <code>&#x3C;path/tofile></code></td><td>This option will locate the file on our node identified by the succeeding path, move the file, and setup access.</td><td align="center"><strong>yes</strong></td></tr><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>Used in conjunction with the <code>--type p12</code> option, this will allow you to retrieve the <code>p12</code> file associated specifically with the profile requested.</td><td align="center">no</td></tr><tr><td align="center"><code>--cleanup</code></td><td align="center">file <code>&#x3C;path/tofile></code></td><td>The option is recommended to be used after the file has been properly downloaded and can now be removed from the local system administrators account. If used with the <code>--type p12</code> this command does not need the <code>&#x3C;path_to_file></code> and will remove all <code>p12</code> files located in the root of the Node Administrator's home directory.</td><td align="center">no</td></tr></tbody></table>

**Recommended**

**`--cleanup`**

It is highly recommended to use the `--cleanup <path_to_file>` command once you have completed downloading the requested file.

This is especially important when handling p12 keystore files, as they should be kept secure.

When `--cleanup` is used with `--type p12`, you do not need to specify the p12 file names; nodectl will automatically remove all p12 files from the local Administrator’s root directory.​

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-55)

* Show the help screen

```
sudo nodectl prepare_file_download help
```

* Move all known p12 files to the root of the Node Administrator's user and update permissions for access.

```
sudo nodectl prepare_file_download --type p12
```

* Move only p12 files associated with the profile `dag-l0` to the root of the Node Administrator's user and update permissions for access.

```
sudo nodectl prepare_file_download --type p12 -p dag-l0
```

* Migrate a file called `mylogs.tar.gz` that is located in the `/var/tessellation/uploads` for download from the root of the Node Administrator's user directory.

```
sudo nodectl prepare_file_download --type file /var/tessellation/uploads/mylogs.tar.gz
```

* Remove the p12 files associated with all profiles including global.

```
sudo nodectl prepare_file_download --type p12 --cleanup
```

* Remove the file named `mylogs.tar.gz` that is located in the Node Administrator's home username's directory.

```
sudo nodectl prepare_file_download --type file mylogs.tar.gz --cleanup
```

### send\_logs[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#send_logs) <a href="#send_logs" id="send_logs"></a>

***

The **`send_logs`** command is a tool to allow uploading of logs to help *debugging* analysis. It may be used to help accumulate log files to send to Administrators, Developers or System Engineering to dissect; to improve the code base.

The command will upload to a file share service with an expiry date for download.

During the execution you will be offered a menu to upload:

* current logs
  * singular - will offer a choice of `nodectl` or `app` log.
  * all - will offer ability to accumulate and upload all logs including rolling and archived logs.
* backup logs
* specific date logs
* date range logs
* archived logs<br>

Once you follow the prompts a tarball gzip file will appear in the uploads directory and the system will offer you the ability to upload the results to the a public (non Constellation Network supported) file transfer service.

|   Command  | Shortcut | Version |
| :--------: | :------: | :-----: |
| send\_logs |    -sl   | >v2.x.x |

<table><thead><tr><th width="79.22222900390625" align="center">option</th><th width="157.5555419921875" align="center">parameters</th><th width="382.77783203125">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center">-p</td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you attempting to glean logs from.</td><td align="center">no</td></tr></tbody></table>

>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-56)

* Help screen

```
sudo nodectl send_logs help
sudo nodectl -sl help
```

* Execute a log preparation for upload

```
sudo nodectl send_logs -p <profile_name>  
```

```
sudo nodectl -sl -p <profile_name>  
```

### show\_dip\_error[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_dip_error) <a href="#show_dip_error" id="show_dip_error"></a>

***

The `show_dip_error` command is designed to help identify the root cause error that was logged prior to the node being placed in a state where it is stuck in `WaitingForDownload`.

|      Command     | Shortcut |  Version |
| :--------------: | :------: | :------: |
| show\_dip\_error |   -sde   | >v2.10.x |

<table><thead><tr><th width="87" align="center">option</th><th width="149.99993896484375" align="center">parameters</th><th width="366.111083984375">description</th><th align="center">required </th></tr></thead><tbody><tr><td align="center"><code>-p</code></td><td align="center"><code>&#x3C;profile_name></code></td><td>which profile are you attempting to glean logs from.</td><td align="center"><strong>required</strong></td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-57)

* Help screen

```
sudo nodectl show_dip_error help
sudo nodectl -sde help
```

* Execute `show_dip_error`.

```
sudo nodectl show_dip_error -p <profile_name>  
sudo nodectl -sde -p <profile_name>  
```

### show\_profile\_issues[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_profile_issues) <a href="#show_profile_issues" id="show_profile_issues"></a>

***

The `show_profile_issues` command is designed to help identify possible causes for connection errors. It will review the node's log file and attempt to categorize the resulting errors in the order of importance.

|        Command        | Shortcut |  Version |
| :-------------------: | :------: | :------: |
| show\_profile\_issues |   None   | >v2.14.x |

| option |    parameters    | description                                         | required |
| :----: | :--------------: | --------------------------------------------------- | :------: |
|  `-p`  | `<profile_name>` | Which profile are you attempting review for issues. |  **yes** |

#### **Result Header Descriptions**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#result-header-descriptions)

<table><thead><tr><th width="192.88885498046875" align="center">Result Header</th><th>Description</th></tr></thead><tbody><tr><td align="center">Profile</td><td><a href="https://docs-v1.constellationnetwork.io/validate/quick-start/prerequisites#-profile-table">profile</a> used to lookup error(s).</td></tr><tr><td align="center">Error</td><td>What error was found?</td></tr><tr><td align="center">Possible Cause</td><td>What is the most common or likely reason for this error?</td></tr><tr><td align="center">Result</td><td>Possible result of this error message.</td></tr><tr><td align="center">Time</td><td>Timestamp of the error in question.</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-58)

* Help screen

```
sudo nodectl show_profile_issues help
```

* Execute `show_profile_issues`.

```
sudo nodectl show_profile_issues -p <profile_name>  
```

### show\_service\_log[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_service_log) <a href="#show_service_log" id="show_service_log"></a>

***

The `show_service_log` command is designed to help identify possible causes for service errors. It will review the node's service file log file of a given profile.

This command will search the Debian distribution based journal specifically for the service logs associated with the requested profile which launches to allow the profile to connect to its configured cluster.

|       Command      | Shortcut |  Version |
| :----------------: | :------: | :------: |
| show\_service\_log |   None   | >v2.14.x |

| option |    parameters    | description                                             | required |
| :----: | :--------------: | ------------------------------------------------------- | :------: |
|  `-p`  | `<profile_name>` | Which profile are you attempting review service issues. |  **yes** |

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-59)

* Help screen

```
sudo nodectl show_service_log help
```

* Execute `show_service_log` of a profile by the name of `dag-l0`.

```
sudo nodectl show_service_log -p dag-l0
```

### show\_service\_status[​](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#show_service_status) <a href="#show_service_status" id="show_service_status"></a>

***

The `show_service_status` command will review the processes running on the node, and display their current known state.

|        Command        | Shortcut |  Version |
| :-------------------: | :------: | :------: |
| show\_profile\_status |   None   | >v2.14.x |

This command does not accept any options.

#### **Result Header Descriptions**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#result-header-descriptions-1)

<table><thead><tr><th width="202.888916015625" align="center">Result Header</th><th>Description</th></tr></thead><tbody><tr><td align="center">Owner</td><td>What profile on the node owns the process being displayed.</td></tr><tr><td align="center">PID</td><td>Process ID of the service as assigned by the Debian systemd system manager, used to handle the logging and various utilities for the assigned process.</td></tr><tr><td align="center">Status Code</td><td>The code returned by the systemd manager. These codes can be standard codes or custom codes for a particular process in use.</td></tr><tr><td align="center">Status</td><td>Human friendly translation of the status code.</td></tr></tbody></table>

#### **Status Code Descriptions**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#status-code-descriptions)

<table><thead><tr><th width="145.111083984375" align="center">Result Header</th><th>Description</th></tr></thead><tbody><tr><td align="center">0</td><td>What profile on the node owns the process being displayed.</td></tr><tr><td align="center">256</td><td>Process exited with error.</td></tr><tr><td align="center">768</td><td>Process not running.</td></tr></tbody></table>

#### **Status Descriptions**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#status-descriptions)

<table><thead><tr><th width="234" align="center">Result Header</th><th>Description</th></tr></thead><tbody><tr><td align="center">active</td><td>running.</td></tr><tr><td align="center">inactive</td><td>not running (<code>dead</code>).</td></tr></tbody></table>

**Examples**[**​**](https://docs-v1.constellationnetwork.io/validate/automated/nodectl-commands#examples-60)

* Help screen

```
sudo nodectl show_service_status help
```

* Execute `show_service_status`.

```
sudo nodectl show_service_status
```
