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:
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¶
- Update your dependency:
- (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}
- (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))
- (Optional) Enable RCS messaging:
Breaking Changes¶
None. This release is fully backward compatible with v0.9.0.
Documentation¶
New guides added:
- Voice Integration - Voice gateway setup and configuration
- Memory Skill - Semantic memory with vector retrieval
Updated guides:
- Twilio Setup - RCS and Messaging Service SID
- LLM Providers - OpenRouter provider
Full Changelog¶
See CHANGELOG.md for the complete list of changes.