Just-in-time tool provisioning for spawned agents
If an agent needed a specific tool, that tool had to be activated at the root level — even if you never used it.
Agents declare what they need. Amplifier provides it just-in-time.
598 lines. Defines TYPE_TO_MOUNT_POINT mapping for 6 module types. Tries async_resolve() first, falls back to sync resolve() for backward compatibility.
loader.py → 71dda22
Adds async_resolve() with asyncio.Lock for thread-safe concurrent activation. Delegates to ModuleActivator when a module isn't in the parent's activation set.
bundle.py → dfbe1ce
282 lines. Downloads module source, installs Python dependencies via uv, adds to sys.path. Tracks activated set to skip duplicates.
modules/activator.py
Clean, minimal toolsets in root sessions. Each agent gets exactly what it needs — nothing more.
Agents get tools only when spawned. No overly broad access in parent sessions.
No wasted activation cost for tools you never use. Pay only when spawning.
Cross-bundle tool sharing without tight coupling. Bundles stay independently composable.
Data as of: February 20, 2026
Feature status: Active (async_resolve present in current codebase)
Research performed:
grep -rn "lazy|deferred|activate|mount" amplifier_core/ --include="*.py" (18 files matched)grep -n "lazy|mount|activate" amplifier_core/loader.py (30+ matches)git log --all --oneline --grep="lazy|defer|mount|activation" (15 commits in core)git show 71dda22 (core) and git show dfbe1ce (foundation)wc -l amplifier_core/loader.py → 598 lines; wc -l activator.py → 282 linesgit log --format="%an" | sort | uniq -c across both reposgrep -rn "async_resolve|_activation_lock" amplifier_foundation/bundle.pyGaps: Original deck claimed 3 repos including amplifier-bundle-shadow (commit 2971a20). This third repo was not verified in local workspace. Deck updated to reflect only confirmed evidence.
Primary contributor: Brian Krabach (~96% of amplifier-core commits, ~94% of amplifier-foundation commits)
Agents declare. Amplifier provides. Sessions stay clean.