Module Contracts

February 27, 2026 ยท View on GitHub

Start here for building Amplifier modules.

This directory contains the authoritative guidance for building each type of Amplifier module. Each contract document explains:

  1. What it is - Purpose and responsibilities
  2. Protocol reference - Link to interfaces.py with exact line numbers
  3. Entry point pattern - How modules are discovered and loaded
  4. Configuration - Mount Plan integration
  5. Canonical example - Reference implementation
  6. Validation - How to verify your module works

Module Types

Module TypeContractPurpose
ProviderPROVIDER_CONTRACT.mdLLM backend integration
ToolTOOL_CONTRACT.mdAgent capabilities
HookHOOK_CONTRACT.mdLifecycle observation and control
OrchestratorORCHESTRATOR_CONTRACT.mdAgent loop execution strategy
ContextCONTEXT_CONTRACT.mdConversation memory management

Quick Start Pattern

All modules follow this pattern:

# 1. Implement the Protocol from interfaces.py
class MyModule:
    # ... implement required methods
    pass

# 2. Provide mount() function
async def mount(coordinator, config):
    """Initialize and register module."""
    instance = MyModule(config)
    await coordinator.mount("category", instance, name="my-module")
    return instance  # or cleanup function

# 3. Register entry point in pyproject.toml
# [project.entry-points."amplifier.modules"]
# my-module = "my_package:mount"

Source of Truth

Protocols are in code, not docs:

  • Protocol definitions: python/amplifier_core/interfaces.py
  • Data models: python/amplifier_core/models.py
  • Message models: python/amplifier_core/message_models.py (Pydantic models for request/response envelopes)
  • Content models: python/amplifier_core/content_models.py (dataclass types for events and streaming)
  • Rust traits: crates/amplifier-core/src/traits.rs (Rust-side trait definitions)
  • Rust/Python type mapping: CONTRACTS.md (authoritative cross-boundary reference)

These contract documents provide guidance that code cannot express. Always read the code docstrings first.



Validation

Verify your module before release:

# Structural validation
amplifier module validate ./my-module

See individual contract documents for type-specific validation requirements.


For ecosystem overview: amplifier