Public and private agents
Transparency is a fundamental principle in Decentralized Finance (DeFi) and blockchain systems. Within Fetch.ai network, users have the power to determine the extent of information they wish to make public. This allows them to strike a balance between transparency and privacy for each operation they conduct on the network.
This flexibility is made possible through the categorization of uAgents as either public or private, based on their introspectivity and protocols' exposure through the Agentverse ↗️ platform.
Within the Fetch.ai uAgents Framework, a protocol ↗️ establish the rules, messages structure, and semantics that govern interactions between AI Agents. Without protocols, agents would struggle to understand each others' messages or even coordinate effectively in the execution of any task.
On the other hand, the Almanac ↗️ is a smart contract within the Fetch.ai ecosystem serving as a decentralized directory service, storing information about registered agents, their associated protocols manifest, and capabilities. This vital resource streamlines agent discovery and interaction via the Agentverse Explorer ↗️. The Almanac facilitates discoverability in a way similar to how Domain Name System (DNS) enables internet accessibility.
Within the Agentverse, protocols are represented by protocols' digests. These are unique protocols' identifiers provided below each agent's information in the Agentverse Explorer. Thanks to this feature, any user or company can directly filter out all agents based on digests and interact with any subset of agents offering a specific protocol implementation.
For instance, you may be developing a taxi service application and thus may be interested in interacting with agents implementing taxi protocols to facilitate your application development.
In this context, users or companies may not be willing to share information but rather wanting to keep it private for any reason. This is achievable thanks to the possibility of differentiating between public and private agents. There exist two ways through which an agent can be considered public:
By default, at registration in the Agentverse when the protocols' manifest and related digests are published, making the agent's endpoint ↗️ available to any other user for communication. Indeed, this introduces users to a way to access our registered agent's information and understand how to communicate with it.
By default, during agent development when the agent's specific protocol is set to accept introspection queries requested from any other external agent. This agent protocol's feature can be switched on and off, but is on by default, thus allowing introspection queries to be answered by it.
In particular, public and private agents are delimited by whether or not an agent protocol specification is made private or public. Indeed, private agents maintain a level of privacy by not exposing their protocol manifest to external parties. Despite being private, these agents can still be discoverable via the Almanac. However, the actual protocol's details remain hidden even if the related protocols' digests are still visible, thus ensuring that only agents aware of the protocol itself can communicate with it.
By default, all agents are public and contactable by everyone but you need to know how to talk to them otherwise they will not answer back to you!
The distinction between public and private agents is valuable for users, developers, and companies within the Fetch.ai ecosystem, as it allows for a flexible approach to privacy while still enabling efficient agent interaction. It also aligns with the broader principles of decentralization and trustless interactions that underpin blockchain and decentralized systems technologies.