Skip to content

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}
omniagent gateway run --config omniagent.yaml

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 HttpOnly session 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_dsn selects 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/file secret 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.