Skip to content

Dokugent Plugin Specification (v0.1)

⚠️ This specification is a preview and subject to change as plugin support evolves toward public beta.

This document defines the structure for Dokugent-compatible plugins using plugin.json. These plugins can extend agent capabilities via local code or remote APIs and must be certifiable, dryrunnable, and traceable.


πŸ“„ plugin.json Overview

Each plugin must contain a plugin.json file with the following top-level structure:

{
  "plugin_id": "summarizer@v0.1",
  "name": "Summarizer",
  "description": "Summarizes long text into bullet points.",
  "entrypoint": "plugins/summarizer/index.ts",
  "version": "0.1.0",
  "author": "yourname",
  "tags": ["summarization", "llm-tool", "agent-extension"],
  "interfaces": {
    "input": { ... },
    "output": { ... }
  },
  "runtime": {
    "type": "typescript",
    "callable": true
  },
  "security": {
    "requires_signature": true,
    "sandboxed": true,
    "trust_level": "plugin"
  },
  "certification": {
    "certified_by": "dokugent",
    "cert_level": "plugin/v0.1",
    "signed_at": null,
    "hash": null,
    "signature": null
  }
}

🧩 Field Reference

plugin_id (string, required)

Unique identifier and version slug. Example: "summarizer@v0.1"

name (string, required)

Human-readable plugin name.

description (string)

Short description of the plugin’s function.

entrypoint (string, required)

File path or URL to the executable logic.

version (string)

Semantic versioning format. Optional if embedded in plugin_id.

author (string)

Plugin creator or maintainer.

tags (array of strings)

Keywords to assist search, classification, and filtering.


πŸ”Œ Interfaces

interfaces.input / interfaces.output

Describe the expected input and output schemas, aligned with JSON Schema conventions. Example:

"interfaces": {
  "input": {
    "type": "object",
    "properties": {
      "text": { "type": "string" }
    },
    "required": ["text"]
  },
  "output": {
    "type": "object",
    "properties": {
      "summary": { "type": "string" },
      "bullets": {
        "type": "array",
        "items": { "type": "string" }
      }
    }
  }
}

βš™οΈ Runtime Options

runtime.type

Must be one of: "typescript", "python", or "api".

runtime.callable

Indicates if this plugin can be called as a tool by agents.

runtime.url, runtime.method, runtime.headers

Used only if runtime.type is "api". These define the endpoint, method, and headers to be used.


πŸ”’ Security and Certification

security block

Defines safety policies and trust level:

  • requires_signature: Plugin must be signed to run.
  • sandboxed: Runs in an isolated context.
  • trust_level: "internal", "plugin", or "external".

certification block

Signed metadata generated by dokugent plugin certify.



πŸš€ Future Additions

Planned extensions include:

  • Dryrun sample definitions (dryrun.json)
  • Trace metadata for inspection (trace.json)
  • Registry publishing metadata