Codumentor logo Codumentor

Plugin Catalog

This section documents the built-in Codumentor plugins: what they do for
users, and how to enable and configure them.

Audience: people using plugins, and operators who enable them in
codumentor.yaml.

To write a custom plugin, see the Plugin Development Guide.

One name per plugin. Every page here is named after the plugin's package:
catalog/<package>.md documents codumentor.plugins.<package>, whose web
bundle (if it has one) lives in ui/plugins/<package>/. So the file name is
also the string you write under plugins: in codumentor.yaml, and the id the
Configuration Assistant answers to. A tier-1 test enforces it, because the
packaged build filters docs and bundles per plugin by that name — a page named
anything else would ship its plugin undocumented.

Built-in Plugins

PluginPurpose
TelemetryResponse timing, LLM/tool metrics, transcript cards
Inference MetricsLLM generation speed (TTFT, tokens/sec)
Context SummarizationTruncates long conversations to fit the model window
Auto TitleNames conversations from their content; opt-in topic-shift retitling
Context ManagementIncremental summarization with drift detection
Agentic MemoryStores and retrieves organizational knowledge
Agent InstructionsOperator custom_instructions plus optional repo-local instruction files (builtin)
MCPConnect external Model Context Protocol tool servers
RipgrepFast regex search across repositories
Web RetrieveFetch and analyze web pages (optional agentic mode)
Web SearchWeb search with multiple providers and optional research mode
Console ReportPrints the end-of-session report in print mode
Token ReportToken counts, cost, and per-query breakdown for that report
Bug ReportUser bug/feedback form forwarded to Redmine
User FeedbackLike/dislike on assistant replies
LLM ServerAuto-start, health-monitor, and idle-shutdown a self-hosted LLM
SVNSubversion checkout/update, branch listing and switching
Branch SwitchingPer-conversation git branch with isolated checkout and overlay index
Workspace IsolationPer-conversation bwrap sandbox, snapshots, subagent isolation
SCM PushIn-sandbox git_commit plus a host-side Push button
Document EditorRead, edit, and save DOCX files
XLSX EditorRead, edit, and save XLSX/XLSM spreadsheets
PPTX EditorRead, edit, and save PPTX/PPTM presentations
File LinksDownload/preview agent-written files; repo browser
Mermaid RenderRender Mermaid diagrams to SVG/PNG (needs a Chromium-family browser)
Client FilesystemAttach a local folder from the browser for agent read/write and @-mention
DeveloperSubagent that implements a plan by reading, editing, and running code
ExploreRead-only codebase exploration subagent
External AgentDelegate to Claude Code / Codex / OpenCode / Gemini in a sandbox
FileSyncCopy source from local/SMB/UNC paths before ingestion
Log CollectionAnalyze collections of log files in isolated or merged conversations
PermalinkTurn file paths in replies into GitHub/GitLab/Gitea (etc.) links
Script FilterStrip leaked CJK output live; translate fragments when the reply finishes
SSH TunnelPersistent SSH port-forward to a fixed remote server
Remote SSHRemote command and file tools (experimental)
SkillsAgent Skills (agentskills.io) activated via slash commands
Slash CommandsUser-defined /commands that expand to full prompts
Claude Code HooksRun shell commands or HTTP callouts on lifecycle events
User SecretsPer-user encrypted credentials, referenced as ${secret:<name>}
OAuthPer-user OAuth 2.0 connect/refresh for Google and GitHub
GitHub OAuthRegisters GitHub as a connectable OAuth provider (device-code flow)
EULAFirst-login license modal; bump version to re-prompt everyone
TrialCosmetic trial badge in the chat header
Slack IntegrationMentions, DMs, slash commands, and agent post/react tools
TelegramTelegram bot channel with optional voice in/out
Read AloudPlay the final assistant message via the shared TTS service
Voice ModeHands-free talk overlay; STT/TTS via the shared speech: service
RedminePer-user Redmine issue tools (search/get/create/update/comment)
Gitea PRPer-user Gitea PR tools and optional /review webhook
Google WorkspacePer-user Gmail, Calendar, Docs, Sheets, and Drive
DatabaseSQL tools over native or CLI backends
Configuration AssistantAdmin chat that edits this instance's own config
Model ProfilesPer-user model/key profiles assigned to agent roles
Thinking ModesPer-conversation thinking mode and reasoning effort
Scheduler ToolsCreate and manage one-off or cron agent runs
GoalsLong-lived scheduled intents with cron-fired workers

Quick Configuration

Enable a plugin in codumentor.yaml:

plugins:
  - module: "codumentor.plugins.telemetry"
    class: "TelemetryPlugin"

  - module: "codumentor.plugins.mcp"
    class: "MCPPlugin"
    args:
      executable: "mcp-server"

Omit a plugin from the list to disable it. Some plugins also honor
args.enabled.

Plugin Categories

Observability

Context and instructions

Knowledge and feedback

Tools and integrations

Documents and files

Source control and isolation

Agentic tools

User experience

Source types

Infrastructure

Compliance and credentials

Admin and scheduling

Common configuration patterns

Enabling and disabling

plugins:
  - module: "codumentor.plugins.read_aloud"
    class: "ReadAloudPlugin"
    args:
      enabled: true

  - module: "codumentor.plugins.mcp"
    class: "MCPPlugin"
    args:
      executable: "mcp-server"
      enabled: false

Not every plugin has args.enabled. To be sure a plugin is off, omit it
from plugins:.

Plugin priority

Higher priority runs that plugin's handlers earlier:

plugins:
  - module: "codumentor.plugins.telemetry"
    class: "TelemetryPlugin"
    priority: 100

Agent-specific tools

Some plugins accept target_agents so tools go only to the main agent,
only to subagents, or to both:

plugins:
  - module: "codumentor.plugins.mcp"
    class: "MCPPlugin"
    args:
      executable: "mcp-server"
      target_agents: "main"

Options: "main", "subagent", "all" (default for most plugins).

A value may also name one subagent instead of a whole kind — "explore",
"agentic_developer", "agentic_memory_store", "web_search",
"web_retrieve", "goal", "context_summarization". So
target_agents: "explore" offers the tools to the explore reader and to
nothing else, while "subagent" keeps its meaning of any subagent. Anything
outside those names is treated as a typo: the plugin registers with every agent
and logs a warning, rather than silently withholding a tool you asked for.

A setting also takes a list, meaning any of — which is the only way to
mix the two grains:

args:
  target_agents: ["main", "explore"]   # the main agent and the explore reader

Per-plugin tables below list only the three kinds, which is the common case;
every one of them accepts a role name and a list too.

Reads and writes, gated separately

Gating a whole family forces a bad choice for an outward-facing integration: a
subagent investigating a bug has every reason to read a ticket and none to
close one. Five plugins therefore accept a second setting,
write_target_agents, in the same vocabulary, applied to their write tools
alone — redmine, gitea_pr,
google_workspace, database and
mcp. It defaults to "main" in all five: a subagent's tool calls land
with nobody reading them, so write_target_agents falls back to the closed
value on an unrecognized setting, where target_agents falls back to the open
one.

mcp is the odd one out on which tools count as writes. The other four say so
in their own code; an MCP server's tools are somebody else's, so Codumentor
reads each one's readOnlyHint annotation — and a tool that carries no
annotation is treated as a write. See Who gets which
half
before wondering why a subagent cannot see
your MCP server.

See also