> For the complete documentation index, see [llms.txt](https://go-squads.gitbook.io/reuni/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://go-squads.gitbook.io/reuni/master.md).

# Reuni System

Reuni(Reliable Unifier) is a system created as **centralized** dynamic configuration management. Reuni intended to be used in microservice environment to handle configuration management for hundreds of running service. The system currently under open source development at [Go-Squads](https://github.com/go-squads) github organization maintained by developer and interns at [Go-Jek](https://gojek.com).

This system concise of 3 main component:

![Reuni System High Level Architecture](https://lh6.googleusercontent.com/YLoLpjIl68Y0TZW5M2ApGUgMsEEiVGO4IJaja3WUjorwac_87Lp596y1BizIX1Z2RrmPq8WU8asEdmnDPG0ZgXX_BUQz4bAgal3rQCSgM1wcywh5C9w1x7zqPKs_OEnh3w3wgfqQg5E)

* [The REST API Server](https://github.com/go-squads/reuni-server), the core of this system, coded in Golang. Because of centralized nature, all request from the other 2 component will be handled by this server, making it a little bit monolithic by design. We may upgrade the server design in the future time.
* Client, we create 2 type of user client which is [WebBased-Client](https://github.com/go-squads/reuni-ui) using Ruby on Rails and [CLI-Client](https://github.com/go-squads/reuni-cli) coded in Golang. The client manage all user input and user interaction, and do a REST API call.
* [Agent](https://github.com/go-squads/reuni-agent), coded in Golang, currently designed as a process supervisor. The agent purpose is to sync the configurations saved in the REST API, and set it to the deploys environment variable.

Before starting development, you should understand the terminologies we are using when developing the Reuni System.

* **Service(s)**, in our system service mean an application with one **codebase** and one application, because it's intended to be used in microservices environment, normally one services server one functionality, e.g. `authentication-service, authorization-service, go-ride-allocation-service, etc.`
* **Namespace(s)**, namespace are group belong to each services, one namespace can be used to represent a state of running services, e.g. `development-box, staging, production, production-2, etc.`
* **Configuration(s),** configuration in our system are a set of key-value pair that are going to be used in running services.


---

# 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://go-squads.gitbook.io/reuni/master.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.
