Developer Overview
Build plugins and adapters for Docket without forking the project.
Developer Overview
Docket is built around adapter contracts. You can extend it by implementing these contracts — no need to fork or modify core code.
What you can build
- LLM adapters — Add support for new providers (Groq, Together, local models)
- Store adapters — Add new databases (MySQL, MongoDB, Qdrant)
- Blob adapters — Add new storage backends (Azure Blob, GCS)
- Queue adapters — Add new job queues (BullMQ, SQS, RabbitMQ)
- Connectors — Ingest from external sources (GitHub, Notion, email)
The contract model
Core knows nothing about your adapter. It only knows the interface.
Your Adapter ──implements──▶ Interface Contract ◀──called by── Docket Core
This means:
- Your adapter lives in its own package or directory
- Core never imports from your adapter
- You can swap adapters at runtime via config
Two types of extensions
1. Adapters (infrastructure)
Replace how Docket talks to LLMs, databases, blob stores, or queues.
Example: adding a new vector database.
2. Connectors (data sources)
Ingest data from external systems into Docket.
Example: a GitHub connector that ingests issues and PRs.
Connectors are not adapter contracts. They are standalone packages that use Docket's API (or direct adapter injection) to push data in.
Getting started
- Read the Adapter Contracts page
- Pick the contract you want to implement
- Use the implementation template from
AGENTS.md - Write contract tests
- Submit a PR or publish as a separate package
Plugin packages
Plugins can be published as npm packages with the naming convention:
@docket/{category}-{provider}
Examples:
@docket/llm-groq@docket/store-qdrant@docket/connector-github
Core dynamically loads adapters by package name from config.