Skip to content

feat: diff-aware install — detect manifest changes and re-apply without --force #210

@danielmeppiel

Description

@danielmeppiel

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

  1. On apm install, compare the manifest's declared configuration against the currently installed configuration.
  2. If a primitive is already installed and the configuration matches, skip it (current behavior — ✓ already configured).
  3. If a primitive is already installed but the configuration differs, re-apply it and show something like ✓ updated or ↻ reconfigured.
  4. --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

  • apm install detects config drift for registry MCP servers
  • apm install detects config drift for self-defined MCP servers
  • apm install detects config drift for APM package files
  • Clear CLI output distinguishes "already configured" vs "updated"
  • Existing --force behavior is preserved

Metadata

Metadata

Labels

enhancementNew feature or requestpriority/highShips in current or next milestone

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions