O OpenMontage

Tool Registry#

OpenMontage capabilities are exposed exclusively through Python tools discovered at runtime. The LLM coding assistant reads the registry to determine what is available, then calls tools directly. Python provides only the tool implementations and persistence; the agent supplies all orchestration logic.

BaseTool Contract#

Every tool inherits from BaseTool and declares fixed metadata plus one required method.

Key declared fields include:

  • name and version
  • tier (CORE, VOICE, ENHANCE, GENERATE, SOURCE, ANALYZE, or PUBLISH)
  • capability (e.g. tts, video_generation, image_generation)
  • provider (e.g. elevenlabs, fal, ffmpeg, selector)
  • runtime (LOCAL, LOCAL_GPU, API, or HYBRID)
  • stability (EXPERIMENTAL, BETA, or PRODUCTION)
  • dependencies (entries such as cmd:ffmpeg, env:ELEVENLABS_API_KEY, python:torch)
  • input_schema and output_schema (JSON Schema)
  • fallback_tools (ordered fallback list)
  • agent_skills (Layer 3 skill references the agent must read before use)
  • resource_profile (CPU, RAM, VRAM, disk, network)
  • retry_policy

The required method is:

def execute(self, inputs: dict) -> ToolResult:

ToolResult carries success, data, artifacts (file paths), error, cost_usd, duration_seconds, seed, and model.

The Tool Registry#

Access the singleton:

from tools.tool_registry import registry
registry.discover()

discover() walks packages to auto-register every concrete BaseTool subclass and loads .env so dependency checks see current keys. No manual registration is required.

Query Methods#

Common queries:

  • get(name) — single tool or None
  • get_by_capability("tts") — all tools for a capability
  • get_by_provider("elevenlabs")
  • get_available() — tools whose dependencies are satisfied
  • find_fallback("elevenlabs_tts") — first available fallback
  • gpu_required_tools(), network_required_tools()

Selector Tools#

Three selectors route across providers discovered in the registry:

  • tts_selector
  • image_selector
  • video_selector

Each ranks available providers by task fit, output quality, control, reliability, cost efficiency, latency, and continuity. They respect an explicit preferred_provider when supplied and adapt input keys transparently between providers. See Provider Selection.

Diagnostic Reporting#

Before any production run, inspect the live capability envelope:

python -c "
from tools.tool_registry import registry
import json
registry.discover()
print(json.dumps(registry.provider_menu_summary(), indent=2))
"

Reporting methods:

  • support_envelope() — full contract snapshot for every tool
  • provider_menu() — capability-grouped menu with availability, install instructions, and render engine status
  • provider_menu_summary() — compact rollup of composition runtimes, configured vs. total capabilities, setup offers, and runtime warnings

See Preflight Diagnostics for interpreting the output.

Pipeline Integration#

Pipeline manifests list tools_available per stage. The agent reads the stage-director skill, then calls tools by name from the registry. For the complete list of concrete tools, see Tool Inventory. For adding or configuring providers, see Configuring Providers.