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.) |
# 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',
},
})
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)
# 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