v2.8.6

siddharthvaddem/openscreenv2.8.6Jul 30, 2026by ysolanky

AI Summary

This release introduces a text-to-speech toolkit for Smallest AI, OpenSearch vector database support, and performance optimizations for AgentOS metrics.

Key Highlights

  • Added SmallestTools text-to-speech toolkit with lightning_v3.1 models
  • Added OpenSearch vector database support with vector, keyword, and hybrid search
  • Optimized tool wrapping performance by caching Pydantic version lookups
  • Fixed AgentOS metrics refresh to prevent blocking uvicorn workers

New Features

  • text_to_speech and get_voices tools in SmallestTools
  • GET /metrics/refresh/status API endpoint
  • OpenSearch vector, keyword, and hybrid search database support

Full Release Notes

# Changelog

## New Features

- **Smallest AI**: Added `SmallestTools`, a text-to-speech toolkit for Smallest AI with `text_to_speech` (returns audio as a `ToolResult` artifact, optionally saved to disk) and `get_voices`. Supports the `lightning_v3.1` and `lightning_v3.1_pro` models.
- **AgentOS**: Added `GET /metrics/refresh/status` to observe background metrics refreshes:
    - Reports `idle`, `running`, `completed` or `failed` with `started_at`, `finished_at` and `error`, so clients can poll for completion instead of timing out silently. The state updates even when a refresh finishes without writing new data.
    - Available on the client as `AgentOSClient.get_metrics_refresh_status()`
- **OpenSearch**: Added `OpenSearch` vector database support (`agno.vectordb.opensearch`) with vector, keyword and hybrid search in both sync and async variants, installable via the `agno[opensearch]` extra. Includes cookbook examples and a `run_opensearch.sh` script for local setup.

## Improvements

- **Tools**: Cached the Pydantic version lookup during tool wrapping. The package metadata was re-read on every wrap, which made repeated tool wrapping a hot path (100-wrap benchmark: 65.9 ms to 11.0 ms).

## Bug Fixes

- **AgentOS**: `POST /metrics/refresh` no longer blocks uvicorn workers on large datasets:
    - The sync `calculate_metrics()` call now runs in the threadpool, so other requests keep flowing during a refresh. Same 200 + metrics list response as before.
    - New opt-in `?background=true` query param returns 202 immediately and runs the refresh as a background task. Background refreshes are single-flight per database.
    - `GET /metrics` with a sync `BaseDb` also moves its lazy refresh to the threadpool.
- **Encoding**: Text-mode `open()` calls now pass explicit `encoding="utf-8"`, so JSON cache and config files written on one platform stay readable on another (Windows defaults to `cp1252`).

## What's Changed
* feat: add Smallest AI text-to-speech toolkit by @harshitajain165 in https://github.com/agno-agi/agno/pull/9015
* docs: fix broken links in cookbook READMEs and CONTRIBUTING.md by @devdattatalele in https://github.com/agno-agi/agno/pull/9195
* [fix] Cache Pydantic version lookup during tool wrapping by @basnijholt in https://github.com/agno-agi/agno/pull/9210
* fix: add explicit encoding="utf-8" to text-mode open() calls by @Ghraven in https://github.com/agno-agi/agno/pull/7984
* fix: run metrics refresh in background to avoid blocking workers by @Mustafa-Esoofally in https://github.com/agno-agi/agno/pull/9263
* feat: support opensearch db by @anhphong22 in https://github.com/agno-agi/agno/pull/3611
* chore: release 2.8.6 by @ysolanky in https://github.com/agno-agi/agno/pull/9271

## New Contributors
* @harshitajain165 made their first contribution in https://github.com/agno-agi/agno/pull/9015
* @devdattatalele made their first contribution in https://github.com/agno-agi/agno/pull/9195
* @anhphong22 made their first contribution in https://github.com/agno-agi/agno/pull/3611

**Full Changelog**: https://github.com/agno-agi/agno/compare/v2.8.5...v2.8.6