Problem
Today, apm install checks whether a primitive (MCP server, APM package, etc.) is already configured and skips it if so. This is correct for idempotency, but it means that if a user changes the configuration in apm.yml (e.g., updates env vars, changes a URL, modifies args), the change is silently ignored unless they pass --force.
This applies to all primitive types:
The manifest (apm.yml) should be the source of truth. When config changes in the manifest, apm install should detect the drift and re-apply — without requiring --force.
Proposed behavior
- On
apm install, compare the manifest's declared configuration against the currently installed configuration.
- If a primitive is already installed and the configuration matches, skip it (current behavior —
✓ already configured).
- If a primitive is already installed but the configuration differs, re-apply it and show something like
✓ updated or ↻ reconfigured.
--force remains available for full overwrite/reset scenarios.
Context
This was discussed in #191 (PR comment thread). The PR correctly unified the skip behavior for self-defined MCP servers to match registry servers. This issue tracks the next step: making install diff-aware across all primitives.
Acceptance criteria