All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Unreleased

0.3.0 - 2026-05-18

Added

  • WebSearch — web search tool with a pluggable provider backend. Ships with Brave, Serper, and Tavily providers. API keys resolve via {:system, "ENV_VAR"} tuples (matching the omni provider pattern). The model can control result count and recency filtering; additional provider-specific options pass through as-is.

Changed

  • WebSearch providers — application config is now scoped to :api_key only. Other options (e.g. country, search_lang) are passed at construction time, not via app config.
  • Naming — behaviour implementations now use plural namespaces (Strategies.*, Providers.*) for consistency with omni's Providers/Dialects pattern and idiomatic Elixir convention (à la Ecto).
  • Repl / Sandbox — peer nodes now communicate over stdio (connection: :standard_io) instead of Erlang distribution. This removes the dependency on EPMD and ensure_distributed!/0 (which has been removed). Peer boot is faster and no longer subject to intermittent hangs from EPMD/port contention.
  • Files / Files extension — both now accept either a pre-built %FS{} struct via the :fs option or raw options (:base_dir, :read_only, :nested), so callers using both can share a single FS.
  • Files.FSbase_dir no longer needs to exist at init time. The directory is created automatically on the first write.

0.2.0 - 2026-05-11

Changed

  • FileSystem → Files — renamed Omni.Tools.FileSystem to Omni.Tools.Files (and all sub-modules). The tool provides scoped file CRUD, not full filesystem access — "Files" better reflects the bounded nature of the tool.

Added

  • Files REPL extension (Omni.Tools.Repl.Extensions.Files) — bridges the Files tool into the REPL sandbox, injecting a Files module so agent code can read and write files directly without a separate tool use round-trip.

0.1.0 - 2026-05-08

Initial release — a small, opinionated set of reference tools for the Omni ecosystem.

Added

  • FileSystem — file CRUD scoped to a configurable base directory, with read-only, flat, and nested scope modes.
  • Repl — evaluates Elixir code in a sandboxed REPL with pluggable extensions for injecting modules into the runtime.
  • Bash — executes shell commands with configurable working directory.
  • WebFetch — fetches URLs and simplifies HTML to Markdown, with support for batch fetching and configurable size limits.