Release Notes - v0.16.0¶
Release Date: 2026-08-10
v0.16.0 is a major release that turns OmniAgent into a multi-user platform. It introduces team mode (real accounts, magic-link sign-in, private/group chats, PostgreSQL row-level isolation) and virtual agents (named personas with per-agent skills, roles, secrets, and a discovery catalog), all reachable from an embedded web UI. It also folds in a large batch of gateway hardening, session, and agent improvements.
Highlights¶
- Team Mode - Multi-user deployments with allowlist-closed magic-link authentication, private and group chats, and PostgreSQL row-level security.
- Virtual Agents - Named personas bound to a chosen subset of skills, with per-agent owner/maintainer roles and a private/listed + featured catalog.
- Agent-Scoped Secrets & Runtime - Each agent's runtime instance is built from its persona, enabled skills, and its own secrets — isolated so two agents load disjoint secrets with no cross-leak.
- Embedded Web UI - Chats, an agent configuration area, catalog browsing, and superadmin curation, served as a self-contained SPA.
- Gateway Hardening - Authentication, origin validation, per-sender rate limiting, escalating auth backoff, and a Prometheus metrics endpoint.
- Sessions & Hooks - Automatic session rollover, per-session tool/model overrides, and lifecycle event hooks.
What's New¶
Team Mode¶
Team mode turns a single-operator deployment into a multi-user one. Enable it
under the team: block and run the gateway:
# omniagent.yaml
team:
enabled: true
superadmin_email: you@example.com
base_url: https://team.example.com
database:
app_dsn: postgres://omniagent_app:pw@db:5432/omniagent_team
migrate_dsn: postgres://owner:pw@db:5432/omniagent_team
smtp:
host: smtp.example.com
port: 587
from: agent@example.com
web:
enabled: true
agent:
provider: anthropic
model: claude-sonnet-5
api_key: ${ANTHROPIC_API_KEY}
On start the gateway migrates the database (schema and RLS policies), serves
the SPA at /, and emails magic links (or logs them when no SMTP is configured —
handy for local trials). The account in superadmin_email is bootstrapped as
superadmin on first sign-in; everyone else must be on the allowlist.
- Sign-in: allowlist-closed magic links, secure
HttpOnlysession cookies, CSRF-protected mutations. - Chats: private DMs (the agent always replies) and group chats (the agent replies only when @-mentioned). Each chat's memory is scoped to that chat.
- Isolation: PostgreSQL row-level security is the backstop; the service layer
is the primary gate. A non-
postgres://app_dsnselects SQLite for local trials (no RLS).
See the Team Mode guide.
Virtual Agents¶
An agent is now a first-class entity: a persona + an enabled subset of the deployment's skills + agent-scoped secrets, with its own roles and registry.
- My Agents: create and configure agents (persona, model, skills), manage maintainers, and set visibility. Owners and maintainers can configure; simply conversing with an agent never grants configuration rights.
- Catalog: browse featured and listed agents and start a DM or group chat.
- Curation: superadmins promote listed agents to Featured.
- Per-agent secrets: configure
team.secrets(memory/file) to inject an agent's own credentials into its skills, including MCP subprocess environments, namespaced per agent so there is no cross-leak.
See the Virtual Agents guide.
Embedded Web UI¶
A self-contained SPA (no build step, no external assets) serves login, personal
and team chats, the agents configuration area, the catalog, and superadmin
curation, driven by a capability descriptor from GET /api/capabilities.
Gateway Hardening¶
- Bearer authentication and Origin validation on the gateway.
- Per-sender rate limiting and escalating backoff on repeated auth failures.
- A Prometheus metrics endpoint for observability.
- Session tool/model RPC with MCP-aware tool listing.
Sessions, Hooks & Agent¶
- Automatic session rollover (idle/daily) and per-session tool/model overrides.
- Lifecycle event hooks (session start, rollover, pre-turn tool events) with bounded concurrent async dispatch.
- Session-scoped runtime and correct timezone propagation for temporal context.
- Scheduled (cron) execution now runs under an authorizing principal.
Other¶
- Conversation persistence and text-to-speech in the OpenAI-compatible web UI.
- tiktoken-based token counting for context management.
- Go template rendering for auto-reply responses.
- Delegation executor for sub-agent orchestration in roles.
- Ollama support without requiring an API key.
- Dockerfile for containerized deployment.
Upgrade Notes¶
- No breaking changes for existing single-operator deployments. Team mode is
off by default (
team.enabled: false); personal mode is unchanged. - Team mode requires a database. PostgreSQL is the production target (it enforces RLS); SQLite is supported for local trials only and has no row-level security.
- Agent replies in team mode require an LLM API key (
agent.api_key); without one the management UI, catalog, and chats still work, but agent-bound chats stay silent. - The
memory/filesecret providers are not encrypted at rest yet — the isolation mechanism ships first. Protect the secrets directory with filesystem permissions.
Full Changelog¶
See CHANGELOG.md for the complete list of changes with commit references.