v3.0.7
ysharma3501/LuxTTSv3.0.7Sep 8, 2026by ysolanky
Upgrading?
AI Summary
Adds page storage and public serving capabilities, improves workflow error reporting, and fixes integration issues with various AI providers.
Key Highlights
- Page storage and public serving features
- PublicSurface for serving Agents and Workflows
- AIMLAPI default model update to gpt-5.6-terra
- Workflow error reporting improvements
Breaking Changes
- `Knowledge` constructor arguments are keyword-only
- Page search honors configured `PgVector` HNSW `ef_search`
New Features
- Page storage in `agno.knowledge.page`
- PublicSurface for public serving
- PageFileSystem for bounded read-only access
- Agent dependency callables receiving `run_input` and `session`
Full Release Notes
# Changelog
## New Features
- **Page storage in `agno.knowledge.page`.** Knowledge atomically publishes catalog metadata, filesystem text and vectors, preserves previous revisions when a refresh fails, and exposes bounded sync and async setup, source synchronization, search, read, list and grep APIs. Installed through the new `agno[pages]` extra. (#9963)
- `Knowledge(page_search=PageSearchConfig(...))` provides typed, transaction-local planner controls. Unset scan preferences, costs, worker counts and thresholds inherit the PostgreSQL settings.
- **`PublicSurface` for public serving**: serves selected Agents, native stateless MCP and authenticated durable-sync Workflows, with shared quotas, request and output bounds, CORS and internal-service authentication. (#9963)
- Explicitly selected **Teams** are now servable too, with REST and gzip support. They share the Agent admission, execution and output limits; the roster is reduced and member routes stay private unless independently selected. (#9996)
- **`PageFileSystem(knowledge=...)`**: a bounded read-only page filesystem toolkit with sync and async execution, exposed explicitly through `files.tools()`. Commands read pages lazily against pinned revisions, list scoped metadata and run bounded literal grep; they cannot execute a shell or write files. (#9997)
- **Agent dependency callables can receive `run_input` and `session`**, alongside the existing `agent` and `run_context`. Resolution runs before pre-hooks and reuses successful values on model retries. `add_dependencies_to_context` still defaults to False. (#9963)
- **AIMLAPI**: requests carry a fixed, analytics-only attribution header set, inspectable as `agno.models.aimlapi.AIMLAPI_HEADERS` and overridable per model via `default_headers`, where caller-supplied keys win. The headers carry no user data and do not affect routing, model selection or billing. The default model also moves from the retired `gpt-4o-mini` to `gpt-5.6-terra`. (#9898)
## Improvements
- **Workflows report failed steps as `StepError`** for both raised executor failures and explicitly failed outputs, carrying the current step's identity. Function reports are still preserved as `StepOutput`, and Agent, Team and nested Workflow content keeps its existing executor stream. Both console streaming printers render `StepError` explicitly, showing the original failure and clearing stale progress output. (#10001)
## Bug Fixes
- **Failed workflow runs are finalized before their terminal streaming event.** A workflow that paused during a background stream could fail during a non-streaming continuation, save `ERROR` to the database and leave its tracked stream stuck at `PAUSED`; fresh streaming failures yielded `WorkflowError` before the failed run was saved, so a consumer closing at that event could lose the run entirely. (#10001)
- Nested workflow guardrail rejections are no longer retried, which previously replayed earlier child side effects. Explicit `skip_on_failure` is honored through the existing final-attempt policy and ordinary executor retries are preserved.
- **Meta Llama and AIMLAPI: every run crashed.** Both providers' `_format_message` overrides had drifted from `OpenAIChat`, which passes `compress_tool_results` positionally, so each call raised `TypeError: _format_message() takes 2 positional arguments but 3 were given`. (#10031, #9898, fixes #9034)
- **Anthropic: empty tool arguments are preserved.** A zero-argument Claude tool call is an empty input object, which the adapter treated as falsy and omitted `function.arguments` for. Streaming and non-streaming parsing now serialize every tool input, so empty input becomes `"{}"`. (#8970, fixes #8971)
- **Cached tool wrappers no longer pin the caller's frame.** `validate_call` stores the caller's `f_locals` on the wrapper it builds and `Function` caches those wrappers for the life of the process, so on Python 3.13 every cached tool kept the wrapping frame alive along with the Agent, session and run state on the stack. The namespace resolver is cleared once the validators are built. (#9941, fixes #9940)
- **Anonymous native Agent JSON no longer leaks diagnostics**: a failed run returned HTTP 200 carrying status `ERROR` and nested model diagnostics, and is now a safe `503 run_failed`, matching the streaming error protection. Authenticated operator diagnostics are unaffected. (#9963)
- **Page serving corrections** across source retries, canonical-link deduplication, publication-time source binding, bounded page checkout and Agent continuation dependency ordering. (#9996)
## Breaking Changes
- **`Knowledge` constructor arguments are keyword-only.** Positional calls such as `Knowledge("docs")` must become `Knowledge(name="docs")`. `content_db` is now the preferred spelling; `contents_db` remains a supported read/write alias sharing the same dataclass field, so serialization, copy and `dataclasses.replace(..., contents_db=...)` are unchanged. Passing both keywords requires the same object. (#9963)
- **Page search honours the configured `PgVector` HNSW `ef_search`** instead of silently forcing 200, so deployments that relied on the implicit 200 should set it explicitly. Page indexes built from interim main builds can carry an implicit `ef_construction=64` and need an operator-managed rebuild; setup reports an actionable error rather than rebuilding automatically. (#9963)
## What's Changed
* feat: add coordinated pages and public docs serving by @ashpreetbedi in https://github.com/agno-agi/agno/pull/9963
* fix: correct page serving and add selected public teams by @ashpreetbedi in https://github.com/agno-agi/agno/pull/9996
* feat: extract bounded read-only page filesystem by @ashpreetbedi in https://github.com/agno-agi/agno/pull/9997
* [fix] agno 3.x: drop the caller-frame namespace pydantic keeps on cached tool wrappers by @basnijholt in https://github.com/agno-agi/agno/pull/9941
* [fix] Preserve empty Anthropic tool arguments by @basnijholt in https://github.com/agno-agi/agno/pull/8970
* [fix] AIMLAPI: repair broken integration, add revenue attribution headers by @hugoaimlapi in https://github.com/agno-agi/agno/pull/9898
* fix: forward compress_tool_results in LlamaOpenAI._format_message by @kausmeows in https://github.com/agno-agi/agno/pull/10031
* fix: finalize failed workflow runs before streaming errors by @ashpreetbedi in https://github.com/agno-agi/agno/pull/10001
* chore: release 3.0.7 by @ysolanky in https://github.com/agno-agi/agno/pull/10055
## New Contributors
* @hugoaimlapi made their first contribution in https://github.com/agno-agi/agno/pull/9898
**Full Changelog**: https://github.com/agno-agi/agno/compare/v3.0.6...v3.0.7Related Repositories
public-apis/public-apis★ 491,135
A collective list of free APIs
NousResearch/hermes-agent★ 255,963
The agent that grows with you
yt-dlp/yt-dlp★ 200,054
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,491
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,703
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.