Fix "ModuleNotFoundError: No module named 'agno.memory.v2'" (Agno v1 v2+ memory migration) Mohammed, founder of MemorySync, documented the breaking changes in Agno v2+ that cause the "ModuleNotFoundError: No module named 'agno.memory.v2'" and companion 'agno.storage' import errors, reproduced on Agno 3.1.10 with Python 3.13. The migration replaces the removed v1 memory and storage modules with a unified `Db` class from `agno/db`, deprecates `MemoryDb` in favor of setting `update_memory_on_run=True` on an Agent with a `db`, and requires `user_id` on every run. He also noted a `greenlet` dependency for `agno.db.sqlite` and demonstrated routing memories to a hosted store via MemorySync's `MemorySyncDb` while keeping sessions local. Disclosure: I'm Mohammed, founder of MemorySync. I drafted this with AI assistance and checked it against Agno's official migration guide and a real install. Code status: on Oct 25, 2026 I installed agno 3.1.10 Python 3.13 and reproduced the errors below. I then ran the "after" imports, the Agent construction and get user memories successfully. No model was called no key , so memory creation itself was not run. You upgrade Agno and memory code that used to work fails on import: ModuleNotFoundError: No module named 'agno.memory.v2' or, in VS Code / Pylance: Import "agno.memory.v2.memory" could not be resolved often with a companion: ModuleNotFoundError: No module named 'agno.storage' This was reported in agno-agi/agno 5017 https://github.com/agno-agi/agno/issues/5017 Agno 2.1.4, Python 3.11 . The maintainers' answer was to follow the memory section of the v2 migration guide. I reproduced all three errors on Agno 3.1.10: python $ python -c "from agno.memory.v2.memory import Memory" ModuleNotFoundError: No module named 'agno.memory.v2' $ python -c "from agno.storage.sqlite import SqliteStorage" ModuleNotFoundError: No module named 'agno.storage' Agno v2 removed the v1 memory and storage modules rather than aliasing them. Per the v2 migration guide https://docs.agno.com/other/v2-migration : Storage classes moved from agno/storage to agno/db and are now called Db classes. One instance serves agents, teams and workflows, and the mode and table name parameters are gone. MemoryDb classes are deprecated in favour of the main Memory class is deprecated. You set update memory on run=True on an Agent that has a db . v1 breaks : python from agno.agent import Agent from agno.memory.v2.db.sqlite import SqliteMemoryDb from agno.memory.v2.memory import Memory from agno.storage.sqlite import SqliteStorage memory = Memory db=SqliteMemoryDb table name="user memories", db file="agno.db" storage = SqliteStorage table name="agent sessions", db file="agno.db" agent = Agent memory=memory, storage=storage, enable user memories=True v2+ ran on 3.1.10 : python from agno.agent import Agent from agno.db.sqlite import SqliteDb db = SqliteDb db file="agno.db" sessions AND memories agent = Agent db=db, update memory on run=True print agent.get user memories user id="john@example.com" until a run stores something Things to check after the swap: user id on every run. SqliteDb takes session table= and memory table= instead of table name= . MemoryManager from agno.memory import MemoryManager and pass memory manager= to the Agent. The parameter names I found on the current Agent are memory manager , enable agentic memory , update memory on run and add memories to context . TypeError: UserMemory. init got an unexpected keyword argument 'summaries' . If you get ImportError: The SQLAlchemy asyncio module requires that the Python 'greenlet' library is installed when importing agno.db.sqlite , run pip install greenlet . I hit this on a clean Python 3.13 venv. update memory on run writes to whatever Db you pass. If you want sessions to stay local but user memories to live in a hosted store shared across instances, MemorySync's agno-memorysync package backs Agno's MemoryManager guide https://docs.memorysync.io/guides/agno?utm source=devto&utm medium=organic page&utm campaign=v5 oct25&utm content=pseo agno-memory-v2-module-not-found . The guide says it needs agno 2.8+, and this constructed fine on 3.1.10: python from agno.agent import Agent from agno.db.sqlite import SqliteDb from agno.memory import MemoryManager from agno memorysync import MemorySyncDb pip install agno-memorysync; needs MEMORYSYNC API KEY agent = Agent db=SqliteDb db file="agent.db" , sessions: local memory manager=MemoryManager db=MemorySyncDb , memories: hosted update memory on run=True, user id="customer-42", The guide notes that MemorySyncDb is memory-only on purpose. Pointing sessions at it raises MemorySyncMemoryOnlyError , so keep db= local. Is there a compatibility shim for agno.memory.v2 ? Not in 3.1.10. The import fails. Update the imports. Do I still need a separate storage object? No. One Db instance handles sessions, memories, metrics, evals and knowledge in separate tables. My memories are stored but never show up in replies. If you pass a verbatim system message= , it replaces Agno's built system prompt, which is where memories are injected. Use instructions= instead. This tip is from MemorySync's Agno guide and applies to any memory db. Which Agno version is current? PyPI served 3.1.10 on Oct 25, 2026. The v2 migration steps above still applied to it. To see a stored fact survive a reload before wiring anything in: try MemorySync in your browser https://memorysync.io/try?utm source=devto&utm medium=organic page&utm campaign=v5 oct25&utm content=pseo agno-memory-v2-module-not-found . No signup is needed. summaries TypeError :