Contributing¶
Amplifier is an experimental platform with a multi-repository ecosystem. Contributing typically means creating your own repositories rather than submitting PRs to a monolithic codebase.
Understanding the Ecosystem¶
Amplifier's architecture is modular by design:
- Core kernel (
amplifier-core) - Small, stable, boring. High bar for changes. - CLI application (
amplifier-app-cli) - Reference CLI for building and validating new capabilities. Not user-focused. - Reference implementations - Canonical examples for each module type and application pattern
- Community ecosystem - Your own modules, tools, apps, and collections
Reference vs. Official
Current modules and apps are reference implementations, not "official" requirements. You can build alternatives, improvements, or entirely new capabilities. Users choose what to install based on their needs.
See the Showcase for examples of what the community has built.
Choose Your Contribution Type¶
Applications¶
Full CLI applications built on Amplifier's kernel and libraries.
Getting Started:
- Browse the Showcase for application examples
- Clone a reference app closest to your idea
- Study the structure and patterns
- Create your own repo:
amplifier-app-yourname - Build your application
- Publish and add back to the Showcase
Learn More: Developer Guide
Modules¶
Extend Amplifier's runtime capabilities. Modules are loaded dynamically based on profile configuration.
Providers¶
LLM backend integrations.
Reference Implementations: - provider-anthropic - provider-openai - provider-mock
Getting Started:
- Review the Provider Contract
- Clone a reference provider as template
- Implement the Provider protocol
- Test with the reference CLI
- Publish your provider module
Learn More: Provider Development
Tools¶
Agent capabilities like filesystem access, web browsing, code execution.
Reference Implementations: - tool-filesystem - tool-bash - tool-web
Getting Started:
- Review the Tool Contract
- Clone a reference tool as template
- Implement the Tool protocol
- Define your tool's schema
- Test with the reference CLI
- Publish your tool module
Learn More: Tool Development
Orchestrators¶
Execution loop strategies (basic, streaming, events).
Reference Implementations: - loop-basic - loop-streaming - loop-events
Getting Started:
- Review the Orchestrator Contract
- Study reference orchestrators
- Implement the Orchestrator protocol
- Test with various tool combinations
- Publish your orchestrator module
Learn More: Orchestrator Development
Contexts¶
Memory management strategies (simple, persistent, semantic).
Reference Implementations: - context-simple
Getting Started:
- Review the Context Contract
- Study the reference context
- Implement the ContextManager protocol
- Test compaction strategies
- Publish your context module
Learn More: Context Development
Hooks¶
Observability and control (logging, redaction, approval).
Reference Implementations: - hooks-logging - hooks-redaction
Getting Started:
- Review the Hook Contract
- Study reference hooks
- Implement hook handlers
- Test with event emission
- Publish your hook module
Learn More: Hook Development
Publishing Your Work¶
Module Naming¶
Follow the convention: amplifier-module-{type}-{name}
Examples: - amplifier-module-provider-gemini - amplifier-module-tool-database - amplifier-module-hook-metrics
Repository Structure¶
amplifier-module-tool-yourname/
├── amplifier_module_tool_yourname/
│ ├── __init__.py # mount() function
│ └── ...
├── tests/
├── pyproject.toml
└── README.md
Entry Point¶
Register in pyproject.toml:
Documentation¶
Include in your README:
- Purpose and use cases
- Configuration options
- Example usage
- Contract compliance
Core Contributions¶
The kernel has a high bar for changes. Most functionality belongs in modules.
When to contribute to core:
- Bug fixes in existing contracts
- Performance improvements
- Protocol clarifications
- Documentation improvements
How to contribute:
- Open an issue describing the problem
- Discuss the solution approach
- Submit a PR with tests
- Reference the issue in your PR
Questions?¶
- Slack: Join the community channel
- GitHub Discussions: Ask questions, share ideas
- Issues: Report bugs, request features
License¶
By contributing, you agree to the Contributor License Agreement.