# Tracking Unvoted Proposals

## **Introduction**

As an **Oraichain validator**, it’s crucial to stay updated with governance proposals and ensure you **cast your votes**. Missing votes can affect your reputation and might even lead to delegation losses. The `cosmos-proposals-checker` tool simplifies the process of tracking unvoted proposals.

This tutorial walks you through:

1. **Downloading the Binary**
2. **Setting Up the Configuration**
3. **Creating a Systemd Service**

***

## **1. Download and Install `cosmos-proposals-checker`**

### **Step 1: Download the Latest Release**

Check the latest release from the [GitHub repository](https://github.com/QuokkaStake/cosmos-proposals-checker)

Example with version **v5.14.1**:

```sh
wget https://github.com/QuokkaStake/cosmos-proposals-checker/releases/download/v5.14.1/cosmos-proposals-checker_5.14.1_linux_amd64.tar.gz -O cosmos-proposals-checker.tar.gz
```

### **Step 2: Extract and Move the Binary to the System Apps Folder**

```sh
tar -xzvf cosmos-proposals-checker.tar.gz
chmod +x cosmos-proposals-checker
sudo mv cosmos-proposals-checker /usr/local/bin/
```

### **Step 3: Verify Installation**

Now you can run it from anywhere:

```sh
cosmos-proposals-checker --version
```

The output should be:

```
cosmos-proposals-checker version 5.14.1
```

***

## **2. Setting Up the Configuration**

Now, let's **download and configure the config file**.

### **Step 1: Download the Example Configuration**

For this tutorial, we will place the configuration file in `/root/config.yml`, but you can choose your own path.

```sh
wget https://raw.githubusercontent.com/QuokkaStake/cosmos-proposals-checker/5cb45561274c78d9e153919b3bb33e3b3f364231/config.example.toml -O /root/config.yml
```

### **Step 2: Edit the Configuration File**

Open the configuration file:

```sh
vi /root/config.yml
```

### **Step 3: Update the Chain Configuration**

Modify the file to match **Oraichain settings**. Below is an example:

```toml
[[chains]]
name = "Oraichain"
pretty-name = "Oraichain"
keplr-name = "Oraichain"
mintscan-prefix = ""
lcd-endpoints = ["https://lcd.orai.io", "https://oraichain-rest.publicnode.com"]
wallets = [
    { address = "orai1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
]
```

Replace **`orai1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`** with your **actual validator wallet address**.

### **Step 4: Set the Reporting Interval**

To schedule daily reports at **04:00 AM**, update:

```toml
interval = "0 4 * * *"
```

### **Step 5: Configure Notification Channels**

`cosmos-proposals-checker` supports:

* **Telegram**
* **PagerDuty**

Modify the notifier settings in the configuration file based on your preferred method.

***

## **3. Create a Systemd Service**

To **automate execution**, we will create a **systemd service**.

### **Step 1: Create the Service File**

```sh
sudo nano /etc/systemd/system/cosmos-proposals-checker.service
```

### **Step 2: Add the Following Configuration**

```ini
[Unit]
Description=Cosmos Proposals Checker
After=network.target

[Service]
ExecStart=/usr/local/bin/cosmos-proposals-checker --config /root/config.yml
Restart=always
User=root

[Install]
WantedBy=multi-user.target
```

Make sure to replace `/root/config.yml` with your **actual configuration file path**.

***

### **Step 3: Reload and Start the Systemd Service**

```sh
sudo systemctl daemon-reload
sudo systemctl start cosmos-proposals-checker
sudo systemctl enable cosmos-proposals-checker
```

***

## **4. Check Logs and Service Status**

To verify that the service is running correctly:

### **Check the Service Status**

```sh
systemctl status cosmos-proposals-checker
```

### **View Logs in Real Time**

```sh
journalctl -u cosmos-proposals-checker -f
```

***

Now, your validator will **never miss governance votes again!** 🚀


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.orai.io/nodes-and-validators/tutorials/reminder-unvoted-proposal.md?ask=<question>
```

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

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