Skip to content

Release Notes: v0.9.0

Release Date: 2026-05-25

Overview

OmniAgent v0.9.0 introduces bootstrap profiles, policy enforcement, GPU support, and enhanced browser automation. This release focuses on security, flexibility, and resource optimization.

Highlights

  • Bootstrap Profiles - Customize agent behavior with profiles for different use cases
  • Lean Mode - Reduce memory and token usage for constrained environments
  • Tool Policies - Per-sender access control with rate limiting
  • Channel Policies - Message validation and content filtering
  • GPU Passthrough - Run GPU-accelerated workloads in Docker sandbox
  • Browser Dialogs - Handle JavaScript alerts, confirms, and prompts
  • Gateway RPC - HTTP endpoint for tool invocation
  • Vault Credentials - Secure credential resolution from password managers

New Features

Bootstrap Profiles

Configure agent behavior for specific use cases:

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

profile := &profiles.BootstrapProfile{
    Name:               "customer-support",
    SystemPromptPrefix: "You are a customer support agent.\n",
    AllowedTools:       []string{"search_kb", "create_ticket"},
    DeniedTools:        []string{"shell", "browser"},
    ToolPolicies: map[string]profiles.ToolPolicy{
        "create_ticket": {RequiresConfirmation: true},
    },
}

a, err := agent.New(config, agent.WithProfile(profile))

Lean Mode

Optimize for constrained environments:

leanMode := profiles.NewLeanMode(profiles.LeanLevelModerate)
a, err := agent.New(config, agent.WithLeanMode(leanMode))
Level Memory Reduction Use Case
Off None Default
Light ~15% Slightly constrained
Moderate ~35% Mobile/embedded
Aggressive ~60% Severely constrained

Tool Policies

Per-sender tool access control:

import "github.com/plexusone/omniagent/tools/policy"

manager := policy.NewManager()
manager.SetPolicy("guest", &policy.Policy{
    AllowedTools: []string{"search"},
    DeniedTools:  []string{"shell", "browser"},
    RateLimit: &policy.RateLimit{
        MaxCalls: 10,
        Window:   time.Minute,
    },
})

Channel Policies

Message validation and content filtering:

import "github.com/plexusone/omniagent/channels/policy"

checker := policy.NewConformanceChecker(config)
checker.AddRule(policy.ConformanceRule{
    Name:    "rate-limit",
    Action:  policy.ActionRateLimit,
    RateLimit: &policy.RateLimit{MaxMessages: 60, Window: time.Minute},
})

GPU Passthrough

Run GPU-accelerated workloads in Docker:

sandbox, err := sandbox.NewDockerSandbox(ctx, sandbox.DockerConfig{
    Image: "nvidia/cuda:12.0-base",
    GPU: &sandbox.GPUConfig{
        Enabled:      true,
        DeviceIDs:    []string{"0"},
        Capabilities: []string{"compute", "utility"},
    },
})

Browser Dialog Handling

Interact with JavaScript dialogs:

tool, err := browser.New(browser.Config{
    DialogCallback: func(d browser.Dialog) {
        log.Printf("Dialog: %s - %s", d.Type, d.Message)
    },
})

New browser actions:

  • evaluate - Execute JavaScript code
  • get_dialogs - Retrieve dialog history
  • dismiss_dialog - Dismiss active dialog

Gateway Tools RPC

HTTP endpoint for invoking tools:

handler := gateway.NewToolsRPCHandler(gateway.ToolsRPCConfig{
    Agent: agent,
    ObservopsProvider: provider,
})

http.Handle("/rpc/tools", handler)

Vault-Backed Credentials

Store credentials in password managers:

agent:
  api_key: "op://MyVault/anthropic/api-key"  # 1Password

channels:
  telegram:
    token: "bw://org-id/telegram-token"      # Bitwarden

New Agent Options

Option Description
WithProfile(profile) Set bootstrap profile
WithProfileRegistry(registry) Enable dynamic profile switching
WithLeanMode(mode) Enable lean mode
WithProgressReporter(reporter) Track tool execution progress
WithToolPolicyManager(manager) Enable per-sender tool policies

New Packages

Package Description
agent/profiles Bootstrap profiles and lean mode
tools/policy Per-sender tool access control
channels/policy Channel conformance checking

Configuration Changes

New Fields

Field Type Description
tokens.vault_uri string Vault URI for OAuth tokens
tokens.services map OAuth service configurations

Token Management

tokens:
  vault_uri: "op://MyVault"
  services:
    google:
      credentials_name: "google-oauth"
      scopes:
        - "https://www.googleapis.com/auth/calendar"

Fixes

  • Windows CI - Desktop vault providers (1Password, Bitwarden) now conditionally imported via build tags to avoid DLL load failures on Windows CI runners
  • Lint - Resolved gosec G101 warnings in test fixtures and unparam warning in browser tool

Dependency Updates

Package From To
anthropic-sdk-go v1.44.1 v1.45.0
omnillm v0.15.3 v0.15.4
omniobserve v0.9.0 v0.10.0
omniskill v0.7.0 v0.8.0
omnistorage-core v0.3.0 v0.4.0
kin-openapi v0.137.0 v0.139.0
modelcontextprotocol/go-sdk v1.6.0 v1.6.1
grokify/mogo v0.74.4 v0.74.5
omnivault - v0.5.0 (new)
omnivault-desktop - v0.1.0 (new)
omnitoken - v0.1.0 (new)
invopop/jsonschema v0.14.0 v0.13.0 (pinned)

jsonschema Pin

jsonschema is pinned to v0.13.0 due to an incompatibility between v0.14.0's use of pb33f/ordered-map and anthropic-sdk-go's use of wk8/go-ordered-map.

Desktop Vault Providers on Windows

Desktop vault providers (1Password, Bitwarden) are excluded on Windows via build tags because their CGO dependencies require DLLs not available in standard CI environments. Use env:// or file:// vaults on Windows.

Upgrade Guide

From v0.8.0

  1. Update your dependency:
go get github.com/plexusone/omniagent@v0.9.0
go mod tidy
  1. (Optional) Add profiles for different use cases:
import "github.com/plexusone/omniagent/agent/profiles"

profile := &profiles.BootstrapProfile{
    Name:        "default",
    DeniedTools: []string{"shell"},
}

a, err := agent.New(config, agent.WithProfile(profile))
  1. (Optional) Add tool policies:
import "github.com/plexusone/omniagent/tools/policy"

manager := policy.NewManager()
manager.SetPolicy("guest", &policy.Policy{
    AllowedTools: []string{"search", "weather"},
})

Breaking Changes

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

Documentation

New guides added:

Updated guides:

Full Changelog

See CHANGELOG.md for the complete list of changes.