# Design

The AEA framework is designed as an actor-like asynchronous message passing system. As such, it allows for a high degree of modularity and components largely communicate via messages. The framework can be divided into two parts: the core developed by the authors and external contributors, and packages implementing agent-specific business logic. These can be developed by anyone using the framework. There are four types of packages that can be readily added to the framework: – Skills: primary business logic modules (CPU bound), – Protocols: messages and dialogue rules, – Connections: networking related (I/O bound) logic and translations between AEA and third-party protocols, – Contracts: wrappers for smart contract logic. Furthermore, the framework allows straightforward inclusion of additional APIs to third-party DLTs via framework plugins and supports the use of readily available soft- ware packages in the target programming language. From the perspective of the framework, packages consist of code and configuration. The framework loads the specified packages and then places them with respect to each other and executes them where appropriate (cf. inversion of control). Before we explore the packages in turn, we discuss the core framework components


---

# 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://gptbrowsers-source.gitbook.io/gpt-browser/design.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.
