AAAMBOS Framework
Architectures for Autonomous Agents: A Modular Basis with an Operating Supervisor
Supervision
AAAMBOS allows you to start and stop modules, view their state and last status, and provides insight into their execution.
Configuration
The run
and arch
(itecture) configs allow you to configure your agent, the internal modules, and communications easily and quickly. An arch config
provides an easy to share format of the architecture, while the run config
can contain agent specific and sensitive information such as agent name or keys, pwds, etc. With HyperPyYaml, AAAMBOS can reference Python classes, modules, and functions in an easy and friendly way.
Feature System
Extend or customize modules by providing and requesting features. Features can be enabled or disabled according to the architectural needs/requirements. Features are used to express the need for extensions, communications and kwargs.
Module Communication
The basis for communication between AAAMBOS modules can be easily replaced or combined with different backends, due to the abstraction to communication services. Communication promises and units define the communication capabilities. Data structures (wrappers) further organize the exchange.
Module Extensions
Reusable module capabilities can be encapsulated using module extensions. These are easily added and accessed.
Command Line Interface
AAAMBOS provides command line tools. Run, Create, Test, Discover and even more are planned.
Conventions
WIP Define your architectural ecosystem with conventions, e.g., for communication and configuration. Customize AAAMBOS by defining your own system, changing the internal behaviour completely or just extending the CLI commands.
GUIs for Agent Insights
Create simple GUIs for each module or monitor and interact with communication data from a central point. Define visualizations for data in text, image, plot or other formats. Currently, GUIs in AAAMBOS are based on the easy-to-use and comprehensive PySimpleGUI library.
Extensible & Reusable
Create your own architecture by creating and reusing AAAMBOS pkgs. They are easily referenced in the HyperPyYaml configs. The AAAMBOS comes with the std library which already contains a number of useful modules, extensions, and conventions.
Docs
AAAMBOS comes with different levels of documentation and learning content. At the top-level are blog posts with tutorials, recommendations, and examples. The next level is the "full-text" docs which contain examples and general usage instructions. Furthermore, the API documentation of AAAMBOS (core+std) and each AAAMBOS pkg provide specific and code-oriented documentation. Each AAAMBOS pkg comes with automatically generated API docs with pdoc per default. The blog and full-text docs are based on a docusaurus website.
Examples
We believe that learning by example is the easiest way to get started with a framework. AAAMBOS provides several architecture examples, and each pkg of a certain size should come with example configs that allow the new functionality of the pkg to be run individually.
Testing
WIP AAAMBOS and AAAMBOS pkgs come with automated unit and integration tests. Libraries such as pytest, hypothesis, ruff, etc. can help not only to find bugs, but also to improve code quality and standards.
Growing Pkg Pool
AAAMBOS has a growing ecosystem. New pkgs with modules, extensions and communication services make it easier to build complex architectures. Have a look at the pkg overview (WIP).
Different Execution Levels
WIP Currently, modules are executed in single processes. The plan is to provide the option to run modules only in different threads, or only asynchronously (asyncio).
Future Plans
AAAMBOS is still not where we want it to be. Future plans include, besides the ones already listed above, better dependency resolution for feature requests, searching for modules with needed features in the installed libraries (via entry points) or online, setting and enabling features in the config, OS independence testing, more communication services, implementation in a faster language (Rust),