Module Sources: User Guide
December 18, 2025 · View on GitHub
For users who want to customize which modules Amplifier loads.
This guide explains how to override module sources to use local forks, community modules, or specific versions. If you're just using Amplifier normally, you don't need this—profiles handle everything automatically.
Quick Start
Using a Community Module
Add to your profile:
# ~/.amplifier/profiles/my-profile.md
---
profile:
name: my-profile
extends: dev
tools:
- module: awesome-analyzer
source: git+https://github.com/community/amplifier-tool-awesome@v1.0.0
---
Using a Fork
# Override globally (all profiles)
amplifier module link --global tool-bash ~/my-fork/amplifier-module-tool-bash
# Or just for this project
amplifier module link tool-bash ~/my-fork/amplifier-module-tool-bash
Check What's Being Used
amplifier module status
How Module Resolution Works
Amplifier checks 5 places in order. First match wins.
See SPECIFICATION.md for technical details.
Quick reference:
- Environment variable - Temporary override
- Workspace convention -
.amplifier/modules/if present - Settings - Merges
.amplifier/settings.yaml(project) +~/.amplifier/settings.yaml(user), project wins - Profile source - Profile's
source:field - Installed package - Standard Python package
Override Methods
Method 1: Profile Source (Sharing)
Define sources directly in profiles:
tools:
- module: tool-bash
source: git+https://github.com/microsoft/amplifier-module-tool-bash@v1.2.0
- module: tool-custom
source: git+https://github.com/you/custom-tool@main
Use when: Sharing configuration with project or distributing custom profiles.
Method 2: Config File (Explicit Overrides)
Create .amplifier/settings.yaml (project) or ~/.amplifier/settings.yaml (user):
sources:
# Local development
tool-bash: file:///home/user/dev/tool-bash
# Specific version
tool-web: git+https://github.com/microsoft/amplifier-module-tool-web@v1.0.0
# Community module
tool-jupyter: git+https://github.com/jupyter-amplifier/tool-jupyter@main
Use when: Developing modules locally, testing forks, project consistency.
Project vs User:
- Project (
.amplifier/) - Commit to git, shared across project - User (
~/.amplifier/) - Personal, not committed
Method 3: CLI Link Command (Quick Override)
# Link for current project
amplifier module link tool-bash /path/to/local/tool-bash
# Link globally (all projects)
amplifier module link --global tool-bash /path/to/tool-bash
# Remove override
amplifier module unlink tool-bash
amplifier module unlink --global tool-bash
Use when: Quick local development, testing changes, switching between forks.
Method 4: Environment Variable (Temporary)
# Override for this terminal session only
export AMPLIFIER_MODULE_TOOL_BASH=/home/user/dev/tool-bash
amplifier run "test"
Use when: Debugging specific issue, one-off testing, don't want to modify files.
Source URI Formats
String format (simple, recommended):
# Git repository
source: git+https://github.com/org/repo@main
source: git+https://github.com/org/repo@v1.0.0
source: git+https://github.com/org/repo@abc123
source: git+https://github.com/org/repo@main#subdirectory=packages/tool
# Local path
source: file:///absolute/path/to/module
source: /absolute/path/to/module
source: ./relative/path
# Package name
source: my-package-name
Object format (advanced, MCP-aligned):
# Git source
source:
type: git
url: https://github.com/org/repo
ref: v1.0.0
subdirectory: packages/tool # Optional
# File source
source:
type: file
path: /absolute/path/to/module
# Package source
source:
type: package
name: package-name
See SPECIFICATION.md for complete format specification.
CLI Commands
User Commands
# Show module sources
amplifier module status [<module-id>]
# Override module source
amplifier module link <module-id> <source-path>
amplifier module link --global <module-id> <source-path>
# Remove override
amplifier module unlink <module-id>
amplifier module unlink --global <module-id>
# Clear git cache (force re-download)
amplifier module refresh [<module-id>]
amplifier module refresh --all
Example output:
$ amplifier module status
Currently Loaded Modules:
┌─────────────────┬────────────────────────────────┬───────────┬────────┐
│ Module │ Source │ Origin │ Status │
├─────────────────┼────────────────────────────────┼───────────┼────────┤
│ tool-bash │ file (/home/user/dev/...) │ user cfg │ loaded │
│ tool-filesystem │ file (.amplifier/modules/...) │ workspace │ loaded │
│ tool-web │ git (microsoft/.../web@main) │ profile │ cached │
└─────────────────┴────────────────────────────────┴───────────┴────────┘
Common Workflows
Testing a Fork
# Clone fork
git clone https://github.com/you/amplifier-module-tool-bash fork-bash
cd fork-bash
# Make changes
# ... edit ...
# Test
export AMPLIFIER_MODULE_TOOL_BASH=$(pwd)
cd ~/project
amplifier run "test bash"
Pinning Versions for Project
# .amplifier/settings.yaml (commit to git)
sources:
tool-bash: git+https://github.com/microsoft/amplifier-module-tool-bash@v1.2.0
tool-web: git+https://github.com/microsoft/amplifier-module-tool-web@v2.0.1
Project collaborators get consistent versions.
Using Community Modules
# ~/.amplifier/profiles/data-science.md
---
profile:
name: data-science
extends: dev
tools:
- module: tool-jupyter
source: git+https://github.com/jupyter-amplifier/tool-jupyter@v1.0.0
- module: tool-pandas
source: git+https://github.com/data-tools/amplifier-pandas@main
---
Git Module Caching
How Caching Works
First load: Downloads from git (may be slow) Subsequent loads: Uses cached version (fast) Updates: Manual refresh required
Cache location: ~/.amplifier/cache/modules/<hash>/<ref>/
Refresh Cached Modules
# Clear all cache
amplifier module refresh --all
# Refresh specific module
amplifier module refresh tool-web
Troubleshooting
Module Not Loading
# Check resolution
amplifier module status tool-bash --verbose
Shows all 6 layers checked and which succeeded/failed.
Git Clone Failures
Network issues or invalid URLs cause fallback to installed packages:
Warn: Failed to download tool-web@main (network error)
Info: Using installed package amplifier-module-tool-web v1.0.0
Solutions:
- Check network connection
- Verify git URL in profile/config
- For private repos, configure SSH keys or git credentials
- Install package as fallback:
uv pip install <package-name>
Conflicting Overrides
Warning: Multiple overrides for tool-bash:
- Project: file:///workspace/tool-bash
- User: file:///home/user/my-bash
Using: Project (higher priority)
See Resolution Order for priority details.
Best Practices
For Users
- Start with profiles - Most flexible, shareable
- Use project config - Commit
.amplifier/settings.yamlfor consistency - Use user config for personal forks - Keep in
~/.amplifier/ - Use env vars for debugging - Temporary, no files
For Projects
- Pin versions in project config - Reproducible builds
- Document custom modules - Add to README
- Test before committing - Verify overrides work
- Consider profiles - Better than config for distribution
Related Documentation
- SPECIFICATION.md - Technical specification
- Profile Authoring - Creating profiles