cloneMAP: cloud-native Multi-Agent Platform

cloneMAP is a multi-agent platform (MAP) that is designed to run in a cloud environment based on Kubernetes. The aim of this project is to combine the advantages of cloud computing and a distributed computing paradigm such as multi-agent systems.

pipeline status Go Report Card License



cloneMAP consists of four modules. Each module is implemented in a scalable and robust way. Where possible, applications are stateless and hence horizontally scalable. State is stored in distributed storages and databases. The single modules can be deployed and used independently. They are coupled by means of REST APIs.


The core components of cloneMAP are the agent management system (AMS), an etcd store and agencies. The AMS (API) is responsible for managing all MASs and the corresponding agents running in cloneMAP. Typical tasks are agent creation, monitoring and termination. To allow the AMS to be horizontally scalable, its state (configuration and status information) is stored in an etcd cluster.

Agencies (API) are the deployment unit for agents. Each agency hosts a specified number of agents. Agencies have the task to aggregate common operations in order to relieve the AMS. In Kubernetes terms an agency is a pod with one container. The agents are single go-routines executed within the agency.


To provide agents with the ability to explore each other the so called directory facilitator (DF) is implemented (API). It consists of the scalable service registry and an etcd store. The same etcd cluster as for the AMS is used. The service registry provides functionalities such as registering, deregistering and searching for services. Hence, agents can us it as yellow pages service.

State and logging

As agents usually have a certain state that changes over time, that state needs to be saved in order to make the platform robust. This is done by module state and logging. A DB service provides agents with a REST API for storing state and logs. Upon restart the agents can query the last state stored in the DB and continue their work from that point. A Cassandra DB is used as backend.


In order to connect the agents running in cloneMAP to the outside world a message broker is used. Currently only MQTT is available. With the help of this message broker agents can interact with devices outside the cloud (e.g. IoT-devices). This module is called IoT-Interface.


For easy user interaction it is planned to provide a WebUI that interacts with the AMS via its REST API. The WebUI is not yet available.

Getting Started

The following documentation is available for cloneMAP:

Documentation of the code follows the godoc specification.

2020, Institute for Automation of Complex Power Systems, EONERC


This project is licensed under either of

at your option.



Institute for Automation of Complex Power Systems (ACS)
EON Energy Research Center (EONERC)
RWTH University Aachen, Germany

Expand ▾ Collapse ▴


Path Synopsis
cmd/kubestub Package main : starts a local MAP
pkg/agency Package agency is used for running a single agency: management of agents located in same container / pod
pkg/agency/client Package client contains code for interaction with agency
pkg/ams Package ams provides functionality for the Agent Management System.
pkg/ams/client Package client contains code for interaction with ams
pkg/common/httpreply Package httpreply implements common replies for http requests
pkg/common/httpretry Package httpretry implements methods for http requests which are repeated in case of errors.
pkg/df Package df implements the Directory Facilitator
pkg/df/client Package client implements a df client
pkg/kubestub Package kubestub : interaction with containers (start and delete) Package kubestub simulates the behavior of the Kubernetes API for local execution of clonemap It provides an API to be used by the MAS.
pkg/logger Package logger implements the frontend for the logging module
pkg/logger/client Package client contains code for interaction with agent
pkg/plugnplay Package plugnplay implements a component which automatically triggers the creation of an agent in case a new IoT device is connected to the platform.
pkg/schemas Package schemas defines the data structures used for the REST APIs
pkg/status Package status : provides different codes for status of map parts