Questions About Multi-Agent Shared Memory & Custom Storage in Agno

Hi Agno Community!

I’m evaluating Agno for use in a financial application I’m building. I have a few questions:

  1. Shared Memory Across Multiple Agents
    I see that each Agent has its own session and history. What happens if I want multiple Agents collaborating in the same conversation context (i.e., same “chat”)? Do I have to build my own storage/memory implementation to unify their histories, or is there a built-in way to share memory across multiple Agents?
  2. Custom Storage or Memory Solutions
    I noticed that Agno has built-in support for several database backends (Postgres, SQLite, SingleStore, DynamoDB, YAML, JSON, etc.). But what if my application uses a different storage layer? Is it feasible to create my own custom storage/memory solution that plugs into Agno’s architecture?
  3. Extendability Beyond Tools
    I know I can write custom tools and toolkits. Is that same level of extensibility available for memory, knowledge, or other modules like chunkers and vector DBs? Essentially, can I integrate non-standard solutions into all areas of the Agent pipeline?
  4. Best Practices for Multi-Agent Teams
    If my financial app ends up with multiple specialized Agents (e.g., one for market analysis, one for user Q&A, one for data retrieval from third-party APIs), are there recommended best practices for organizing them into a single pipeline? Or do you suggest each Agent handles a narrow domain with minimal tool overlap?

Any guidance or examples would be amazing. Thanks in advance!

Hi @Nitsan
Thanks for reaching out and for using Agno! I’ve looped in the right engineers to help with your question. We usually respond within 24 hours, but if this is urgent, just let us know, and we’ll do our best to prioritize it.
Appreciate your patience—we’ll get back to you soon! :smile:

1 Like

Hi @Nitsan

  1. Memory/history by design is linked to a session. That being said a team has a shared memory in the sense that the team leader is keeping track of the request and response to the team members in their memory. This is not perfect or exactly what you are asking for, and we are working on a new teams implementation that would be closer to what you are asking. Basically “member agents” need to have context of what other member agents are doing.

  2. It is feasible yes, you can make your own storage implementation if it adheres to the base interface. We also welcome contributions!

  3. In theory yes, but we don’t have much examples on that. But there shouldn’t be a reason why you can’t make your own Vector DB that adheres to the interface.

  4. If our teams implementation works for you, then that is great! If one agent will depend on the output of another agent, I suggest you rather look at workflows. And yes, each agent should be as singular in domain as possible. With teams the issue also becomes number of agents, because each agent adds to the context of the team leader, and if you have history enabled, this context can blow up quickly. Again with workflows you have more control over this. Once we have re-made teams, it should work better for these cases.

1 Like

I actually got it working very well using the workflow session. This allows me to control the previous context of the workflow session and decide when to pass it to which Agent.

Thanks for your reply and for this awesome framework!

Here’s a snippet of how I handle it:

    session_data = self.storage.read(self.session_id) 
            previous_runs = []
            if session_data and session_data.memory:
                previous_runs = session_data.memory.get('runs', [])
            
            context = self.build_context(previous_runs)

This way, I can maintain a shared context across multiple Agents within the same conversation flow.

Thanks again!