Skip to content

Release Notes: v0.10.0

Release Date: 2026-06-15

Overview

OmniAgent v0.10.0 brings full-duplex voice gateway support, semantic memory capabilities, and enhanced profile modes. This release focuses on real-time voice interactions and long-term memory for conversational AI.

Highlights

  • Voice Gateway - Full-duplex phone calls via Twilio and Telnyx with native voice-to-voice support
  • Semantic Memory - Long-term memory with vector retrieval via omniretrieve
  • Auto-Reply Mode - Profile mode for automated responses without human intervention
  • Commentary Mode - Profile mode for passive observation with optional commentary
  • RCS Messaging - Rich Communication Services support via Twilio Messaging Service SID
  • Tools Accessor - Runtime access to registered tools via agent.Tools()
  • OpenRouter Provider - Additional LLM provider for model routing
  • Transitive Dependencies - Voice providers are now indirect dependencies via omnivoice

New Features

Voice Gateway

Full-duplex phone calls with support for both native voice-to-voice and traditional pipeline modes:

# Native voice-to-voice (lowest latency, ~100ms)
omniagent voice serve \
  --listen :8081 \
  --public-url https://your-server.com \
  --gateway twilio \
  --realtime openai \
  --realtime-voice alloy

# Traditional pipeline (custom STT/TTS)
omniagent voice serve \
  --listen :8081 \
  --public-url https://your-server.com \
  --gateway telnyx \
  --stt deepgram \
  --tts elevenlabs \
  --llm anthropic

Gateway Providers

Provider Features
Twilio Media Streams, native voice-to-voice (OpenAI/Gemini), outbound calls
Telnyx Media Streaming, traditional pipeline, outbound calls

Voice Modes

Mode Latency Description
realtime ~100-200ms Native voice-to-voice via OpenAI Realtime or Gemini Live
pipeline ~500-1500ms Traditional STT → LLM → TTS pipeline

Semantic Memory Skill

Long-term memory with semantic retrieval for context-aware conversations:

import "github.com/plexusone/omniagent/skills/compiled/memory"

memorySkill, err := memory.New(memory.Config{
    Retriever: retriever, // omniretrieve instance
    TopK:      5,
})

a, err := agent.New(config, agent.WithCompiledSkill(memorySkill))

The memory skill provides these tools:

Tool Description
memory_store Store information with semantic embedding
memory_recall Retrieve relevant memories by query
memory_forget Remove specific memories

Profile Modes

New profile modes for different interaction styles:

import "github.com/plexusone/omniagent/agent/profiles"

// Auto-reply mode: agent responds automatically
profile := &profiles.BootstrapProfile{
    Name: "auto-responder",
    Mode: profiles.ModeAutoReply,
}

// Commentary mode: passive observation with optional input
profile := &profiles.BootstrapProfile{
    Name: "observer",
    Mode: profiles.ModeCommentary,
}
Mode Behavior
ModeDefault Standard interactive mode
ModeAutoReply Automatic responses without confirmation
ModeCommentary Passive observation, comments when relevant

RCS Messaging

Rich Communication Services support via Twilio Messaging Service SID:

channels:
  twilio_sms:
    enabled: true
    account_sid: ${TWILIO_ACCOUNT_SID}
    auth_token: ${TWILIO_AUTH_TOKEN}
    phone_number: ${TWILIO_PHONE_NUMBER}
    messaging_service_sid: ${TWILIO_MESSAGING_SERVICE_SID}  # Enables RCS

With Messaging Service SID configured:

  • RCS messages are sent when supported by the recipient
  • Automatic fallback to SMS/MMS when RCS unavailable
  • Rich media, read receipts, and typing indicators

Tools Accessor

Runtime access to registered tools:

a, err := agent.New(config, agent.WithCompiledSkill(mySkill))

// Access tools at runtime
tools := a.Tools()
for _, tool := range tools {
    fmt.Printf("Tool: %s - %s\n", tool.Name, tool.Description)
}

OpenRouter Provider

Additional LLM provider for model routing:

agent:
  provider: openrouter
  model: anthropic/claude-sonnet-4
  api_key: ${OPENROUTER_API_KEY}

New CLI Commands

Voice Commands

Command Description
omniagent voice serve Start the voice gateway server
omniagent voice status Show voice configuration status
omniagent voice call NUM Make an outbound call

Voice Serve Flags

Flag Description
--listen Listen address (default :8081)
--public-url Public URL for webhooks
--gateway Gateway provider: twilio, telnyx
--realtime Realtime provider: openai, gemini
--realtime-voice Voice for realtime API
--stt STT provider for pipeline mode
--tts TTS provider for pipeline mode
--llm LLM provider for pipeline mode
--ngrok Enable ngrok tunnel
--ngrok-domain Custom ngrok domain

Configuration Changes

New Fields

Field Type Description
channels.twilio_sms.messaging_service_sid string Messaging Service SID for RCS
voice.gateway string Gateway provider: twilio, telnyx
voice.realtime.provider string Realtime provider: openai, gemini
voice.realtime.voice string Voice for realtime API

Voice Gateway Configuration

voice:
  enabled: true
  gateway: twilio  # or: telnyx

  # Native voice-to-voice (recommended for low latency)
  realtime:
    provider: openai   # or: gemini
    voice: alloy       # OpenAI: alloy, nova, etc.

  # Traditional pipeline (for custom STT/TTS)
  # stt:
  #   provider: deepgram
  # tts:
  #   provider: elevenlabs
  # llm:
  #   provider: anthropic
  #   model: claude-sonnet-4-20250514

  # Twilio credentials
  twilio:
    account_sid: ${TWILIO_ACCOUNT_SID}
    auth_token: ${TWILIO_AUTH_TOKEN}
    phone_number: ${TWILIO_PHONE_NUMBER}

  # Telnyx credentials
  # telnyx:
  #   api_key: ${TELNYX_API_KEY}
  #   connection_id: ${TELNYX_CONNECTION_ID}
  #   phone_number: ${TELNYX_PHONE_NUMBER}

Architecture Changes

Transitive Dependencies

Voice provider packages are now indirect dependencies via omnivoice:

Before v0.10.0:

import (
    "github.com/plexusone/omnivoice"
    "github.com/plexusone/omni-openai/omnivoice/realtime"
    "github.com/plexusone/omni-twilio/omnivoice/gateway"
)

After v0.10.0:

import (
    "github.com/plexusone/omnivoice"
    _ "github.com/plexusone/omnivoice/providers/all"
)

// Get realtime factory by name
factory, _ := omnivoice.GetRealtimeFactory("openai")

// Configure gateway tools using generic types
tools := []omnivoice.ToolDefinition{...}
opts := []registry.ProviderOption{
    omnivoice.WithGatewayTools("twilio", tools),
}

This reduces go.mod complexity and ensures provider versions stay in sync.

Dependency Updates

Package From To
omnivoice v0.10.0 v0.11.0
omnillm v0.15.5 v0.16.0
omnichat v0.7.0 v0.8.0
wazero v1.11.0 v1.12.0
kin-openapi v0.139.0 v0.140.0
grokify/mogo v0.74.5 v0.74.6

New Transitive Dependencies

These packages are now indirect (via omnivoice):

Package Purpose
omni-google Gemini Live realtime provider
omni-openai OpenAI Realtime provider
omni-telnyx Telnyx gateway provider
omni-twilio Twilio gateway provider

Upgrade Guide

From v0.9.0

  1. Update your dependency:
go get github.com/plexusone/omniagent@v0.10.0
go mod tidy
  1. (Optional) Add voice gateway support:
voice:
  enabled: true
  gateway: twilio
  realtime:
    provider: openai
    voice: alloy
  twilio:
    account_sid: ${TWILIO_ACCOUNT_SID}
    auth_token: ${TWILIO_AUTH_TOKEN}
    phone_number: ${TWILIO_PHONE_NUMBER}
  1. (Optional) Add semantic memory:
import "github.com/plexusone/omniagent/skills/compiled/memory"

memorySkill, _ := memory.New(memory.Config{Retriever: retriever})
a, _ := agent.New(config, agent.WithCompiledSkill(memorySkill))
  1. (Optional) Enable RCS messaging:
channels:
  twilio_sms:
    messaging_service_sid: ${TWILIO_MESSAGING_SERVICE_SID}

Breaking Changes

None. This release is fully backward compatible with v0.9.0.

Documentation

New guides added:

Updated guides:

Full Changelog

See CHANGELOG.md for the complete list of changes.