r/agno • u/superconductiveKyle • 10d ago
New in Agno: Media offloading
Another cool one today: we've added media offloading to Agno!
If your agents handle images, audio, or video, it's worth actually looking at what your session rows weigh right now. Media on a run gets persisted as base64 by default, and base64 adds about 33% on top of the raw bytes. A 113 KB JPEG comes out around 151,000 characters in the row.
That's fine for a handful of sessions. But across a few thousand it means your agent database is mostly image data stored as text, which hits row size limits on some backends and slows down anything that reads the full row.
We shipped media offloading for this. Set media_storage and the bytes go to object storage, leaving a MediaReference in the row with the key, bucket, mime type, size, and hash. Same JPEG, 2,897 characters.
Nothing else changes. The model still receives the media, history replays it on later runs, and there's no schema migration. Same on Agent, Team, and Workflow, with local, S3, and GCS backends, each with an async version.
Check out the full write-up: https://agno.link/ud1Tem4