agency
operand/agency
A fast and minimal framework for building agentic systems
A fast and minimal framework for building agentic systems
Categories
Tags
Similar tools
ECC
affaan-m/ECC
The agent harness performance optimization system
hermes-agent
NousResearch/hermes-agent
The self-improving AI agent built by Nous Research
AutoGPT
Significant-Gravitas/AutoGPT
AutoGPT: Build, Deploy, and Run AI Agents
ollama
ollama/ollama
Get up and running with Kimi-K2.6, GLM-5.1, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
prompts.chat
f/prompts.chat
The world's largest open-source prompt library for AI
transformers
huggingface/transformers
🤗 Transformers: the model-definition framework for state-of-the-art machine learning models
Install
pip install agencyREADME
Summary
Agency is a python library that provides an Actor model framework for creating agent-integrated systems.
The library provides an easy to use API that enables you to connect agents with traditional software systems in a flexible and scalable way, allowing you to develop any architecture you need.
Agency's goal is to enable developers to create custom agent-based applications by providing a minimal foundation to both experiment and build upon. So if you're looking to build a custom agent system of your own, Agency might be for you.
Features
Easy to use API
- Straightforward class/method based agent and action definition
- Up to date documentation and examples for reference
Performance and Scalability
- Supports multiprocessing and multithreading for concurrency
- AMQP support for networked agent systems
Observability and Control
- Action and lifecycle callbacks
- Access policies and permission callbacks
- Detailed logging
Demo application available at examples/demo
- Multiple agent examples for experimentation
- Two OpenAI agent examples
- HuggingFace transformers agent example
- Operating system access
- Includes Gradio UI
- Docker configuration for reference and development
API Overview
In Agency, all entities are represented as instances of the Agent class. This
includes all AI-driven agents, software interfaces, or human users that may
communicate as part of your application.
All agents may expose "actions" that other agents can discover and invoke at run time. An example of a simple agent could be:
class CalculatorAgent(Agent):
@action
def add(a, b):
return a + b
This defines an agent with a single action: add. Other agents will be able
to call this method by sending a message to an instance of CalculatorAgent and
specifying the add action. For example:
other_agent.send({
'to': 'CalcAgent',
'action': {
'name': 'add',
'args': {
'a': 1,
'b': 2,
}
},
})
Actions may specify an access policy, allowing you to control access for safety.
@action(access_policy=ACCESS_PERMITTED) # This allows the action at any time
def add(a, b):
...
@action(access_policy=ACCESS_REQUESTED) # This requires review before the action
def add(a, b):
...
Agents may also define callbacks for various purposes:
class CalculatorAgent(Agent):
...
def before_action(self, message: dict):
"""Called before an action is attempted"""
def after_action(self, message: dict, return_value: str, error: str):
"""Called after an action is attempted"""
def after_add(self):
"""Called after the agent is added to a space and may begin communicating"""
def before_remove(self):
"""Called before the agent is removed from the space"""
A Space is how you connect your agents together. An agent cannot communicate
with others until it is added to a common Space.
There are two included Space implementations to choose from:
LocalSpace- which connects agents within the same application.AMQPSpace- which connects agents across a network using an AMQP server like RabbitMQ.
Finally, here is a simple example of creating a LocalSpace and adding two
agents to it.
space = LocalSpace()
space.add(CalculatorAgent, "CalcAgent")
space.add(MyAgent, "MyAgent")
# The agents above can now communicate
These are just the basic features that Agency provides. For more information please see the help site.
Install
pip install agency
or
poetry add agency
The Demo Application
The demo application is maintained as an experimental development environment and a showcase for library features. It includes multiple agent examples which may communicate w