Skip to main content

Module reference

The daemon ships 23 modules under Each module exposes a set of @action-decorated methods that agents call as tools. To enable a module in an app, add it under tools.modules.<id> in the YAML; the language reference documents the shape of that block.

context_builder and llm_provider are auto-loaded on every app and never declared explicitly.

By category

Core I/O

ModuleOne-liner
filesystemRead, write, edit, glob, grep on the host filesystem.
shellRun shell commands. Git Bash on Windows, bash/zsh on POSIX.
httpHTTP requests.
webWeb search + fetch + content extraction.
databaseConnect to SQL databases (sqlite, postgres, mysql).

Intelligence and orchestration

ModuleOne-liner
memoryCognitive memory: goals, todos, facts. Survives compaction.
agent_spawnSpawn sub-agents (8 modes via one Agent tool).
behaviorRuntime rule engine: pre/post-tool checks, semantic classifier.
context_builderAuto-loaded. Tool index, discovery meta-tools, prompt assembly.
llm_providerAuto-loaded. LLM call dispatch, fallback brain, named providers.

Knowledge and retrieval

ModuleOne-liner
ragHybrid retrieval over knowledge bases (BM25 + dense + Text2SQL).
vectorVector store primitive (Qdrant, Chroma, in-memory).
index_moduleToken-aware code indexing for IDE-style search.

UI surfaces

ModuleOne-liner
workspaceIn-memory virtual filesystem mirrored to the client.
previewInternal SSE transport. Auto-loaded by workspace.
web_previewIframe attachment registry for spawned dev servers.
widgetDeclarative UI tree (43 primitives; 7 module actions, 15 client-side action-types).

Integration

ModuleOne-liner
mcpConnect to external MCP servers.
channelsBidirectional I/O: webhook, cron, file_watcher, email, RSS, queue, slack, discord, telegram, voice.
lspLanguage Server Protocol diagnostics passthrough.
queueMessage queue primitive (Redis, in-memory).
cron_nativeCron scheduler (schedule, cancel_schedule, remind).
dev_toolsDevelopment conveniences.

Tool naming

Modules expose actions via a fully-qualified name (FQN) like shell.bash or filesystem.write. The runtime promotes a curated subset to short PascalCase names (Bash, Write, Edit, Grep, Glob, Agent, Remember, TaskCreate, WsWrite, ...) so the LLM sees the same names a human developer sees in Claude Code, Cursor, and other agentic IDEs. The mapping is centralised in When restricting per-agent module access (Agents - Per-agent module access), list the action names in their FQN suffix form ({ shell: [bash] }, not { shell: [Bash] }).

Adding your own module

Modules are Python packages that subclass BaseModule and decorate methods with @action. The full surface (CONFIG_MODEL, params, constraints, slots, capability slots, register_handler) is covered in How to add a module.