# Service Runners

![Runner UI](/files/tModgmWYfXmskqtBdsXl)

A typical runner listens from various streams, uses action and handlers to respond to received data and sends its response to other streams.

A runner is built with a no-code approach, by adding elements through the Devops app.&#x20;

To simplify reuse of elements shared across multiple runners, it is possible to define a set of base runners, which others can extend from. If a runner extends another runner, all of its elements, input/output streams and settings are copied into the new runner during execution. If the new runner includes an element with the same alias, it extends & overrides base runner's element parameters.


---

# 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.rierino.com/devops/microservices/service-runners.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.
