Module reference
Each agent-facing module has a page below. 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 is auto-loaded on every app and is not declared
explicitly for ordinary apps.
These pages are the why and when. For the exact tools and parameters of any
module, ask the running system: catalog.list_modules and
catalog.describe_module <id> read the real registry the compiler validates
against, so they can never be out of date. A builder agent should look modules
up there rather than trusting any hand-written list.
By category
Core I/O
| Module | One-liner |
|---|---|
| filesystem | read, write, edit, multi_edit, glob, grep, delete. |
| bash | Run shell commands from the session workdir. |
| http | HTTP requests. |
| web | Web search + fetch (extract is a fetch parameter, not a separate tool). |
| browser | Drive a real browser session (open / act / read). |
| database | Connect to a database (postgres, mysql, mongodb, redis). |
Intelligence and orchestration
| Module | One-liner |
|---|---|
| memory | Cognitive memory: goal, todos, facts (system catalog module). |
| agent_spawn | Spawn sub-agents (modes via one Agent tool). |
| behavior | Runtime rule engine: pre/post-tool checks, semantic classifier. |
| context_builder | Auto-loaded. Tool index, discovery meta-tools, prompt assembly. |
| scheduler | Recurring session wake-up (schedule → digitorn-background). |
| llm_provider | Brain / LLM call configuration. |
Knowledge and retrieval
| Module | One-liner |
|---|---|
| rag | Hybrid retrieval over knowledge bases (BM25 + semantic, fused via RRF). |
| database | Connect to an external SQL/NoSQL database (see Core I/O). |
| supabase | Run SQL against the app's own managed Postgres (run_sql). |
Discovery and deployment
| Module | One-liner |
|---|---|
| catalog | Discover the real modules/tools with exact params (list_modules, describe_module). |
| deploy | Publish the built app to a live URL (publish_app, deployment_status). |
UI / preview surfaces
| Module | One-liner |
|---|---|
| workspace | Git-backed change tracking (baseline / diff / approve). File I/O: see filesystem. |
| preview | Inspect and drive the live app preview pane. |
| previewshot | Headless screenshot of a built preview (gallery thumbs). |
Built previews are also served over HTTP under the session preview URL served by Digitorn.
Widgets live under ui.widgets in the client manifest.
Integration
| Module | One-liner |
|---|---|
| mcp | Connect to external MCP servers. |
| channels | Bidirectional I/O: webhook, cron, rss, telegram, discord, whatsapp, connector. |
| connector | Native connectors (Gmail, Slack, GitHub, …) as agent tools. |
| lsp | Language Server Protocol diagnostics (notify_change, diagnostics). |
Registered in digitornd: bash, browser, catalog,
database, deploy, filesystem, http, lsp, mcp, connector,
preview, previewshot, rag, scheduler,
supabase, web, workspace. (The authoritative, always-current
list is catalog.list_modules.)
System catalog modules (built into the runtime directly, not a
separate registered module): memory, agent_spawn,
context_builder, channels (manifest for background), behavior
(configured via security.behavior, not tools.modules).
YAML aliases
| Written in YAML | Becomes at compile time |
|---|---|
tools.modules.workspace (legacy file I/O intent) | filesystem |
The Git change-tracking module is still registered as workspace
in the runtime; do not confuse it with the filesystem alias.
bash has no separate shell alias - it's the module's own id.
Tool naming
Modules expose actions via a fully-qualified name (FQN) like
bash.run or filesystem.write. The LLM always calls the
sanitised FQN (bash__run, filesystem__write - dots become
double underscores for provider function-name compatibility);
there's no short-name variant in the function-calling schema
itself.
The short names you see in a tool call bubble (Bash, Write,
Edit, Grep, Glob, Agent, Remember, ...) are a chat
client display transform, computed client-side from the FQN's
last segment - the daemon never sends a short name, and the model
never sees one. When restricting per-agent module access
(Agents - Tool surface),
list the action names in their FQN suffix form
({ bash: [run] }, not { bash: [Bash] }).
How modules are exposed
Modules are the runtime's built-in capability set. Each module exposes its own surface (config, params, constraints) that you wire up from YAML.