> For the complete documentation index, see [llms.txt](https://kerneldao.gitbook.io/kernel/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kerneldao.gitbook.io/kernel/getting-started/kernel-deprecated/dvn-and-operator-guides/operators.md).

# Operators

Operators execute tasks for one or more DVNs and obtain rewards.

An Operator is universally identified by an Operator ID, obtained by registering to Kernel.

As mentioned above, the DVNCoordinator is a contract that identifies each DVN on-chain in Kernel Protocol. Operators use its address when registering in a DVN.

### 3.1. Register to Kernel <a href="#ubs2znppltc0" id="ubs2znppltc0"></a>

Registration to Kernel is a permissionless procedure. It’s the first, mandatory step an Operator performs when onboarding into Kernel.

1. Determine an EOA (or a contract, like a Safe account) to use as Operator Owner (may be updated later)
2. As Operator Owner, call *OperatorRegistry::register(address rewardAddress, string calldata metadataURI)* to obtain the Operator ID, which is immutable and will identify an Operator in Kernel, providing:
   1. a Reward address, which will be able to claim rewards
      1. can be the same of the Operator Owner address, or different
      2. can be updated later
   2. a “Metadata URI” url pointing to a json file respecting the following structure:\
      {\
      "name": "Hello World Operator",\
      "website": "[https://www.example.com](https://www.example.com/)",\
      "description": "I do tasks",\
      "logo": "<https://example.com/logo.png>"\
      }
3. Operator is now part of Kernel but not ready to work for any DVN yet

### 3.2. Onboard into a DVN <a href="#id-2tbct5uj4l6t" id="id-2tbct5uj4l6t"></a>

To start working for a DVN, an Operator must send a request to the DVN and be accepted.

The procedure is the following:

1. Register to Kernel and obtain the Operator ID
2. Request registration to a DVN
   1. retrieve the DVNCoordinator address: each DVN has one, immutable
   2. call *DVNCoordinator::requestRegisterOperatorToDVN(operatorId)* to ask the DVN to become part of the Operators enabled to execute its Tasks, also called “DVN Operators List”
3. Wait for DVN decision
   1. the procedure is a 2-step process, where DVN decides to accept or not an Operator
   2. eventually and with a transaction, DVN accepts or rejects the Operator request
4. If the request is accepted, the Operator is completely onboarded and is now able to execute Tasks and get rewards

DVNs can apply custom rules when deciding to accept or reject Operators. As some examples, they may require an Operator to:

* have a minimum delegated amount of a specific asset
* have a minimum amount of delegators
* be onboarded into a maximum number of other DVNs

These rules are not enforced by Kernel, leaving flexibility to DVNs to create their own logic.


---

# 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, and the optional `goal` query parameter:

```
GET https://kerneldao.gitbook.io/kernel/getting-started/kernel-deprecated/dvn-and-operator-guides/operators.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
