Built-in Plugins

Reference documentation for all built-in tool plugins, their configuration parameters, and usage examples.

Plugin Categories

jaato includes several categories of built-in plugins:

Tool Plugins (Registry-Managed)

These plugins are discovered and managed through the PluginRegistry. They provide tools the model can invoke and optionally user commands for direct interaction.

Plugin Description
cli Execute shell commands with output capture and auto-backgrounding
environment Query execution environment (OS, shell, architecture) for platform-appropriate commands
mcp Bridge to Model Context Protocol servers for external integrations
file_edit File operations with backup, undo, and permission support
filesystem_query Find files with glob patterns and search content with regex
todo Task management with persistent storage and reporting
web_search Web search functionality with result extraction
clarification Structured question-and-answer workflow for gathering information
memory Model self-curated persistent memory across sessions
references Handle @file and @url references in prompts
multimodal Image loading for multimodal model interactions
template Jinja2 template rendering with automatic extraction from documentation
subagent Spawn child agents with parallel execution, cancellation propagation, and shared state
background Manage long-running background tasks
sandbox_manager Runtime sandbox path management (user commands only, not model-accessible)

Client-Configured Plugins

These plugins are configured directly on the JaatoClient rather than through the registry:

Plugin Description Client Method
permission Control which tools require user approval configure_tools(registry, permission_plugin=...)
session Session persistence and context management configure_session(session_plugin=...)
gc_* Garbage collection strategies for context set_gc_plugin(gc_plugin, gc_config)

Configuration Patterns

Registry Plugins

Configure registry plugins when calling expose_tool() or expose_all():

Client Plugins

Client-configured plugins are instantiated and passed directly to the client:

Common Configuration Parameters

While each plugin has unique parameters, some patterns are common:

Parameter Type Description
config_path str Path to plugin's configuration file
storage_type str Where to persist data ("json", "sqlite", etc.)
timeout int Operation timeout in seconds
max_* int Various limits (results, size, workers, etc.)
Registry plugin configuration
# Configure individual plugin
registry.expose_tool('cli', config={
    'extra_paths': ['/usr/local/bin'],
    'auto_background_threshold': 30,
})

# Configure multiple plugins at once
registry.expose_all({
    'cli': {
        'extra_paths': ['/opt/bin'],
        'max_output_chars': 50000,
    },
    'todo': {
        'storage_type': 'sqlite',
        'reporter_type': 'json',
    },
    'web_search': {
        'max_results': 10,
        'region': 'us',
    },
})
Client plugin configuration
from shared.plugins.permission import PermissionPlugin
from shared.plugins.session import SessionPlugin

# Permission plugin
permission = PermissionPlugin(
    config_path='.jaato/permissions.json',
    channel_type='console',
)

# Session plugin
session = SessionPlugin(config=SessionConfig(
    session_dir='.jaato/sessions',
    auto_save=True,
    save_interval=300,
))

# Configure on client
client.configure_tools(
    registry,
    permission_plugin=permission,
)
client.configure_session(session_plugin=session)
Environment variables
# Many plugins support env var configuration
export JAATO_CLI_TIMEOUT=120
export JAATO_TODO_STORAGE=sqlite
export JAATO_WEBSEARCH_REGION=us

# These are read by plugins as defaults
# Config dict values override env vars