> For the complete documentation index, see [llms.txt](https://docs.monet.cash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.monet.cash/security/keepers.md).

# Keepers

## What is a Keeper? <a href="#what-is-a-keeper" id="what-is-a-keeper"></a>

A Keeper is a whitelisted actor responsible for performing critical off-chain-to-on-chain operations that cannot be executed automatically in a trustless and non-manipulative manner. Keepers ensure the smooth functioning of several core Monet mechanisms, including yield rate updates, target oracle maintenance, and reward management.

In the Monet access control system, keepers are assigned the `KEEPER_ROLE` (role ID `30`), with an associated `KEEPER_ROLE_TIMELOCK` (role ID `31`).

## Responsibilities <a href="#responsibilities" id="responsibilities"></a>

### Savings Rate Updates <a href="#savings-rate-updates" id="savings-rate-updates"></a>

The yield rate paid by Savings module contracts (e.g., sUSDmo) is derived from the returns generated by the protocol on its backing assets. However, this rate schedule cannot be implemented automatically in a non-manipulative way. Keepers are responsible for encoding and updating the inflation rate in the Savings module contracts.

Keepers may follow different update schedules depending on the stablecoin and the setup. The frequency of updates may vary from every week to every several months. Between two updates, depositors in Savings module contracts are guaranteed to earn a fixed rate on their assets.

### Target Oracle Updates <a href="#target-oracle-updates" id="target-oracle-updates"></a>

In the Monetizer Module, each collateral asset has a target price used to assess whether the asset is depegging and whether conservative measures (such as adjusted fees or paused operations) should be taken. Keepers are responsible for updating these target oracles to reflect accurate market conditions. This is essential for the proper functioning of the mint, burn, and redeem operations, as the system relies on the deviation between the oracle price and the target price to determine adaptive fees and depeg protection behavior.

### Reward Management <a href="#reward-management" id="reward-management"></a>

Certain assets authorized to back USDmo generate additional rewards over time. Keepers are responsible for selling these additional rewards to maintain a clean and properly accounted backing for the stablecoin.

## Safety Mechanisms <a href="#safety-mechanisms" id="safety-mechanisms"></a>

To prevent any potential keeper from acting maliciously, the protocol implements several safeguards:

* **Maximum Rate Cap**: A maximum possible rate is enforced on each Savings module. For example, the maximum rate for sUSDmo has been set at 35.00%. This prevents a keeper from uncontrollably increasing the savings rate.
* **Timelock**: The `KEEPER_ROLE_TIMELOCK` adds a delay mechanism for sensitive keeper operations, providing an additional layer of security.
* **Hypernative Monitoring**: Real-time security monitoring by Hypernative can pause critical contracts if anomalous behavior is detected, adding an independent safety layer on top of keeper operations.

## Addresses <a href="#addresses" id="addresses"></a>

| Blockchain   | Addresses                                                                                                                                 |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Eden Mainnet | [0x6DbBb53C4542b7DC0579fE4c18C9508cCC7e3FcB](https://eden.blockscout.com/address/0x6DbBb53C4542b7DC0579fE4c18C9508cCC7e3FcB?tab=contract) |
| Eden Mainnet | TBA                                                                                                                                       |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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.monet.cash/security/keepers.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.
